CVE-2019-3822 Information
Description
libcurl versions from 7.36.0 to before 7.64.0 are vulnerable to a stack-based buffer overflow. The function creating an outgoing NTLM type-3 header (lib/vauth/ntlm.c:Curl_auth_create_ntlm_type3_message()) generates the request HTTP header contents based on previously received data. The check that exists to prevent the local buffer from getting overflowed is implemented wrongly (using unsigned math) and as such it does not prevent the overflow from happening. This output data can grow larger than the local buffer if very large ’nt response’ data is extracted from a previous NTLMv2 header provided by the malicious or broken HTTP server. Such a ’large value’ needs to be around 1000 bytes or more. The actual payload data copied to the target buffer comes from the NTLMv2 type-2 response header.
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Reference
http://www.securityfocus.com/bid/106950
https://access.redhat.com/errata/RHSA-2019:3701
https://bugzilla.redhat.com/show_bug.cgi?id=CVE-2019-3822
https://cert-portal.siemens.com/productcert/pdf/ssa-436177.pdf
https://curl.haxx.se/docs/CVE-2019-3822.html
https://curl.haxx.se/docs/CVE-2019-3822.html
https://lists.apache.org/thread.html/8338a0f605bdbb3a6098bb76f666a95fc2b2f53f37fa1ecc89f1146f@3Cdevnull.infra.apache.org3E
https://security.gentoo.org/glsa/201903-03
https://security.netapp.com/advisory/ntap-20190315-0001/
https://security.netapp.com/advisory/ntap-20190719-0004/
https://support.f5.com/csp/article/K84141449
https://support.f5.com/csp/article/K84141449?utm_source=f5support&utm_medium=RSS
https://usn.ubuntu.com/3882-1/
https://www.debian.org/security/2019/dsa-4386
https://www.oracle.com/technetwork/security-advisory/cpuapr2019-5072813.html
https://www.oracle.com/technetwork/security-advisory/cpujul2019-5072835.html
libcurl
versions
from
7.36.0
to
before
7.64.0
are
vulnerable
to
a
stack-based
buffer
overflow.
The
function
creating
an
outgoing
NTLM
type-3
header
(lib/vauth/ntlm.c:Curl_auth_create_ntlm_type3_message())
generates
the
request
HTTP
header
contents
based
on
previously
received
data.
The
check
that
exists
to
prevent
the
local
buffer
from
getting
overflowed
is
implemented
wrongly
(using
unsigned
math)
and
as
such
it
does
not
prevent
the
overflow
from
happening.
This
output
data
can
grow
larger
than
the
local
buffer
if
very
large
’nt
response'
data
is
extracted
from
a
previous
NTLMv2
header
provided
by
the
malicious
or
broken
HTTP
server.
Such
a
’large
value'
needs
to
be
around
1000
bytes
or
more.
The
actual
payload
data
copied
to
the
target
buffer
comes
from
the
NTLMv2
type-2
response
header.
cpe:2.3:a:haxx:libcurl::::::::
Attack Complexity
LOW
Privileges Required
NONE
User Interaction Required
NONE
Scope
NONE
Confidentiality Impact
UNCHANGED
Integrity Impact
HIGH
Availability Impact
HIGH
Base Score
HIGH
Base Severity
9.8
Share on: