PHP bis 7.0.5 ZIP Archive zend_string.h ZipArchive::getFromIndex Pufferüberlauf

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

Zusammenfassunginfo

In PHP bis 7.0.5 wurde eine kritische Schwachstelle gefunden. Hiervon betroffen ist die Funktion ZipArchive::getFromIndex der Datei zend_string.h der Komponente ZIP Archive Handler. Dank der Manipulation mit unbekannten Daten kann eine Pufferüberlauf-Schwachstelle ausgenutzt werden. Diese Schwachstelle wird als CVE-2016-3078 gehandelt. Ein Angriff ist aus der Distanz möglich. Ausserdem ist ein Exploit verfügbar. Es wird empfohlen, die betroffene Komponente zu aktualisieren.

Detailsinfo

Eine kritische Schwachstelle wurde in PHP bis 7.0.5 (Programming Language Software) gefunden. Davon betroffen ist die Funktion ZipArchive::getFromIndex der Datei zend_string.h der Komponente ZIP Archive Handler. Durch die Manipulation mit einer unbekannten Eingabe kann eine Pufferüberlauf-Schwachstelle ausgenutzt werden. Klassifiziert wurde die Schwachstelle durch CWE als CWE-190. Die Auswirkungen sind bekannt für Vertraulichkeit, Integrität und Verfügbarkeit.

Die Schwachstelle wurde am 28.04.2016 durch Hans Jerry Illikainen (Website) herausgegeben. Das Advisory findet sich auf openwall.com. Eine Veröffentlichung wurde in Zusammenarbeit mit dem Projektteam angestrebt. Die Verwundbarkeit wird seit dem 10.03.2016 mit der eindeutigen Identifikation CVE-2016-3078 gehandelt. Die Schwachstelle ist relativ beliebt, und dies trotz ihrer hohen Komplexität. 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:

static zend_always_inline zend_string *zend_string_alloc(size_t len, int persistent)
{
   zend_string *ret = (zend_string *)pemalloc(ZEND_MM_ALIGNED_SIZE(_ZSTR_STRUCT_SIZE(len)), persistent); // (4)
   ...
   ZSTR_LEN(ret) = len;                                                                                  // (5)
   return ret;
}
Das Advisory weist darauf hin:
The `size' argument to the `pemalloc' macro is aligned/adjusted in (4) whilst the *original* value of `len' is stored as the size of the allocated buffer in (5). No boundary checking is done in (4) and it may thus wrap, which would lead to a heap overflow during the invocation of `zip_fread()' in (3) as the `toread' argument is `ZSTR_LEN(buffer).

Ein öffentlicher Exploit wurde durch Hans Jerry Illikainen in Python entwickelt und direkt nach dem Advisory veröffentlicht. Unter exploit-db.com wird der Exploit zum Download angeboten. Er wird als proof-of-concept gehandelt. Der Preis als 0-Day war auf dem Schwarzmarkt etwa $25k-$100k. Für den Vulnerability Scanner Nessus wurde am 25.05.2016 ein Plugin mit der ID 91320 (Ubuntu 12.04 LTS / 14.04 LTS / 15.10 / 16.04 LTS : php5, php7.0 vulnerabilities (USN-2984-1)) herausgegeben, womit die Existenz der Schwachstelle geprüft werden kann. Es wird der Family Ubuntu Local Security Checks zugeordnet und im Kontext l ausgeführt. Der kommerzielle Vulnerability Scanner Qualys bietet das Plugin 196483 (Ubuntu Security Notification for Php5, Php7.0 Vulnerabilities (USN-2984-1)) zur Prüfung der Schwachstelle an. Der durch den Exploit genutzte Code gestaltet sich wie folgt:

$zip = new ZipArchive();
if ($zip->open($_FILES["file"]["tmp_name"]) !== TRUE) {
   echo "cannot open archive\n";
} else {
   for ($i = 0; $i < $zip->numFiles; $i++) {
      $data = $zip->getFromIndex($i);
}
$zip->close();

Ein Aktualisieren auf die Version 7.0.6 vermag dieses Problem zu lösen. Das Erscheinen einer Gegenmassnahme geschah 4 Wochen nach der Veröffentlichung der Schwachstelle. Die Entwickler haben demzufolge noch im Rahmen gehandelt.

Unter anderem wird der Fehler auch in den Datenbanken von Exploit-DB (39742), Tenable (91320) und SecurityTracker (ID 1035701†) dokumentiert. Schwachstellen ähnlicher Art sind dokumentiert unter VDB-83181, VDB-87586 und VDB-90603. Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.

Produktinfo

Typ

Name

Version

Lizenz

Webseite

CPE 2.3info

CPE 2.2info

CVSSv4info

VulDB Vector: 🔍
VulDB Zuverlässigkeit: 🔍

CVSSv3info

VulDB Meta Base Score: 9.8
VulDB Meta Temp Score: 9.3

VulDB Base Score: 9.8
VulDB Temp Score: 8.8
VulDB Vector: 🔍
VulDB Zuverlässigkeit: 🔍

NVD Base Score: 9.8
NVD Vector: 🔍

CVSSv2info

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

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

NVD Base Score: 🔍

Exploitinginfo

Klasse: Pufferüberlauf
CWE: CWE-190 / CWE-189
CAPEC: 🔍
ATT&CK: 🔍

Physisch: Nein
Lokal: Nein
Remote: Ja

Verfügbarkeit: 🔍
Zugang: öffentlich
Status: Proof-of-Concept
Autor: Hans Jerry Illikainen
Programmiersprache: 🔍
Download: 🔍

EPSS Score: 🔍
EPSS Percentile: 🔍

Preisentwicklung: 🔍
Aktuelle Preisschätzung: 🔍

0-Dayfreischaltenfreischaltenfreischaltenfreischalten
Heutefreischaltenfreischaltenfreischaltenfreischalten

Nessus ID: 91320
Nessus Name: Ubuntu 12.04 LTS / 14.04 LTS / 15.10 / 16.04 LTS : php5, php7.0 vulnerabilities (USN-2984-1)
Nessus Datei: 🔍
Nessus Risiko: 🔍
Nessus Family: 🔍
Nessus Context: 🔍

OpenVAS ID: 803381
OpenVAS Name: PHP Denial of Service Vulnerability - 01 - Aug16 (Linux)
OpenVAS Datei: 🔍
OpenVAS Family: 🔍

Qualys ID: 🔍
Qualys Name: 🔍

Exploit-DB: 🔍

Threat Intelligenceinfo

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

Gegenmassnahmeninfo

Empfehlung: Upgrade
Status: 🔍

Reaktionszeit: 🔍
0-Day Time: 🔍
Exposure Time: 🔍
Exploit Delay Time: 🔍

Upgrade: PHP 7.0.6
Patch: github.com

Timelineinfo

10.03.2016 🔍
28.04.2016 +49 Tage 🔍
28.04.2016 +0 Tage 🔍
28.04.2016 +0 Tage 🔍
02.05.2016 +4 Tage 🔍
24.05.2016 +22 Tage 🔍
25.05.2016 +1 Tage 🔍
07.08.2016 +74 Tage 🔍
11.06.2024 +2865 Tage 🔍

Quelleninfo

Produkt: php.org

Advisory: USN-2984-1
Person: Hans Jerry Illikainen
Status: Bestätigt
Bestätigung: 🔍
Koordiniert: 🔍

CVE: CVE-2016-3078 (🔍)
GCVE (CVE): GCVE-0-2016-3078
GCVE (VulDB): GCVE-100-83075
SecurityTracker: 1035701

scip Labs: https://www.scip.ch/?labs.20161013
Siehe auch: 🔍

Eintraginfo

Erstellt: 02.05.2016 08:53
Aktualisierung: 11.06.2024 12:06
Anpassungen: 02.05.2016 08:53 (82), 22.03.2019 14:03 (12), 27.07.2022 14:54 (5), 27.07.2022 14:55 (1), 11.06.2024 12:06 (15)
Komplett: 🔍
Cache ID: 216:99B:103

Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.

Diskussion

Bisher keine Kommentare. Sprachen: de + en.

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

Do you know our Splunk app?

Download it now for free!