OpenSSL 1.1.0 ssl_add_clienthello_tlsext Pufferüberlauf

CVSS Meta Temp ScoreAktueller Exploitpreis (≈)CTI Interest Score
6.6$0-$5k0.00

Zusammenfassunginfo

Es wurde eine Schwachstelle in OpenSSL 1.1.0 gefunden. Sie wurde als kritisch eingestuft. Es betrifft die Funktion ssl_add_clienthello_tlsext. Durch Manipulation mit unbekannten Daten kann eine Pufferüberlauf-Schwachstelle ausgenutzt werden. Der Angriff kann remote ausgeführt werden. Ausserdem ist ein Exploit verfügbar.

Detailsinfo

Eine Schwachstelle wurde in OpenSSL 1.1.0 (Network Encryption Software) ausgemacht. Sie wurde als kritisch eingestuft. Davon betroffen ist die Funktion ssl_add_clienthello_tlsext. Dank der Manipulation mit einer unbekannten Eingabe kann eine Pufferüberlauf-Schwachstelle ausgenutzt werden. Klassifiziert wurde die Schwachstelle durch CWE als CWE-122. Auswirkungen hat dies auf Vertraulichkeit, Integrität und Verfügbarkeit.

Die Schwachstelle wurde am 13.10.2016 durch Guido Vranken in Form eines nicht definierten Mailinglist Posts (Full-Disclosure) herausgegeben. Bereitgestellt wird das Advisory unter seclists.org. Umgesetzt werden kann der Angriff über das Netzwerk. Das Ausnutzen erfordert keine spezifische Authentisierung. Es sind technische Details sowie ein öffentlicher Exploit zur Schwachstelle bekannt. Der folgende Code ist die Ursache des Problems:

if ((long)(limit - ret - 7 - extlen - idlen) < 0)
    return NULL;
s2n(TLSEXT_TYPE_status_request, ret);
if (extlen + idlen > 0xFFF0)
    return NULL;
s2n(extlen + idlen + 5, ret);
*(ret++) = TLSEXT_STATUSTYPE_ocsp;
s2n(idlen, ret);
for (i = 0; i < sk_OCSP_RESPID_num(s->tlsext_ocsp_ids); i++) {
    /* save position of id len */
    unsigned char *q = ret;
    id = sk_OCSP_RESPID_value(s->tlsext_ocsp_ids, i);
    /* skip over id len */
    ret += 2;
    itmp = i2d_OCSP_RESPID(id, &ret);
    /* write id len */
    s2n(itmp, q);
}
s2n(extlen, ret);
1283if (extlen > 0)
1284    i2d_X509_EXTENSIONS(s->tlsext_ocsp_exts, &ret);
Das Advisory weist darauf hin:
(...) if an attacker can somehow influence the ALPN list of an OpenSSL-enabled application (perhaps through another vulnerability), the attacker can write arbitrary data past OpenSSL's heap buffer.

Ein öffentlicher Exploit wurde durch Guido Vranken entwickelt und direkt nach dem Advisory veröffentlicht. Der Download des Exploits kann von seclists.org geschehen. Er wird als proof-of-concept gehandelt. Der Preis als 0-Day war auf dem Schwarzmarkt etwa $25k-$100k. Der durch den Exploit genutzte Code gestaltet sich wie folgt:

openssl s_client -reconnect -status -alpn `python -c "import sys;
sys.stdout.write('x,'*4000+'x')"`
Das Advisory zeigt auf:
It doesn’t crash immediately after ‘ret’ crosses ‘limit’ because the buffer is over-allocated by the code in crypto/buffer/buffer.c (...) And just to be clear, you don’t need to modify the source code of the client in order to make this work. You only need to modify the server code (a separate build if you want) so it sends large tickets.

Das Advisory stellt fest:

Triggering this requires that the client sets a very large ALPN list (several thousand bytes). This would be very unusual in a real-world application. For this reason OpenSSL does not treat this as a security vulnerability and I am inclined to agree with this decision.

If you want to get the best quality for vulnerability data then you always have to consider VulDB.

Produktinfo

Typ

Name

Version

Lizenz

Support

  • end of life (old version)

Webseite

CPE 2.3info

CPE 2.2info

CVSSv4info

VulDB Vector: 🔍
VulDB Zuverlässigkeit: 🔍

CVSSv3info

VulDB Meta Base Score: 7.3
VulDB Meta Temp Score: 6.6

VulDB Base Score: 7.3
VulDB Temp Score: 6.6
VulDB Vector: 🔍
VulDB Zuverlässigkeit: 🔍

CVSSv2info

AVACAuCIA
💳💳💳💳💳💳
💳💳💳💳💳💳
💳💳💳💳💳💳
VektorKomplexitätAuthentisierungVertraulichkeitIntegritätVerfügbarkeit
freischaltenfreischaltenfreischaltenfreischaltenfreischaltenfreischalten
freischaltenfreischaltenfreischaltenfreischaltenfreischaltenfreischalten
freischaltenfreischaltenfreischaltenfreischaltenfreischaltenfreischalten

VulDB Base Score: 🔍
VulDB Temp Score: 🔍
VulDB Zuverlässigkeit: 🔍

Exploitinginfo

Klasse: Pufferüberlauf
CWE: CWE-122 / CWE-119
CAPEC: 🔍
ATT&CK: 🔍

Physisch: Nein
Lokal: Nein
Remote: Ja

Verfügbarkeit: 🔍
Zugang: öffentlich
Status: Proof-of-Concept
Autor: Guido Vranken
Download: 🔍
Preisentwicklung: 🔍
Aktuelle Preisschätzung: 🔍

0-Dayfreischaltenfreischaltenfreischaltenfreischalten
Heutefreischaltenfreischaltenfreischaltenfreischalten

Threat Intelligenceinfo

Interesse: 🔍
Aktive Akteure: 🔍
Aktive APT Gruppen: 🔍

Gegenmassnahmeninfo

Empfehlung: keine Massnahme bekannt
Status: 🔍

0-Day Time: 🔍
Exploit Delay Time: 🔍

Timelineinfo

13.10.2016 🔍
13.10.2016 +0 Tage 🔍
20.10.2016 +7 Tage 🔍
14.12.2016 +55 Tage 🔍

Quelleninfo

Produkt: openssl.org

Advisory: seclists.org
Person: Guido Vranken
Status: Nicht definiert

GCVE (VulDB): GCVE-100-93005
scip Labs: https://www.scip.ch/?labs.20161013

Eintraginfo

Erstellt: 20.10.2016 13:16
Aktualisierung: 14.12.2016 15:54
Anpassungen: 20.10.2016 13:16 (47), 14.12.2016 15:54 (2)
Komplett: 🔍
Cache ID: 216::103

If you want to get the best quality for vulnerability data then you always have to consider VulDB.

Diskussion

Bisher keine Kommentare. Sprachen: de + en.

Bitte loggen Sie sich ein, um kommentieren zu können.

Want to stay up to date on a daily basis?

Enable the mail alert feature now!