DFN-CERT-2016-0213 PHP: Mehrere Schwachstellen ermöglichen u.a. das Ausführen beliebigen Programmcodes [Linux][Fedora][Windows]

Liebe Kolleginnen und Kollegen,

bitte beachten Sie die folgende Sicherheitsmeldung.

Betroffene Software:

PHP <= 5.5.31 PHP <= 5.6.17 PHP <= 7.0.2 Betroffene Plattformen: GNU/Linux Microsoft Windows Red Hat Fedora 22 Red Hat Fedora 23 Mehrere Schwachstelle in PHP ermöglichen einem entfernten, nicht authentifizierten Angreifer das Ausführen beliebigen Programmcodes, das Ausspähen von Informationen, die Manipulation von Daten und das Durchführen eines Denial-of-Service (DoS)-Angriffs. Die Entwickler von PHP haben für die Versionszweige 5.5, 5.6 und 7.0 von PHP Sicherheitsupdates auf die Versionen 5.5.32, 5.6.18 und 7.0.3 zur Verfügung gestellt, um diese Schwachstellen zu beheben. Fedora stellt Sicherheitsupdates für Fedora 22 und Fedora 23 in Form der Pakete php-5.6.18-1.fc22 und php-5.6.18-1.fc23 im Status 'testing' zur Verfügung. Die Schwachstellen PHP-BUG-ID-71311, PHP-BUG-ID-71313 und PHP-BUG-ID-71475 betreffen nur PHP 7.x bzw. 7.0.3RC1 und werden deshalb von Fedora nicht aufgeführt. Patch: Fedora Security Update FEDORA-2016-1bc6ca8445 (Fedora 22, PHP 5.6.18) https://bodhi.fedoraproject.org/updates/FEDORA-2016-1bc6ca8445

Patch:

Fedora Security Update FEDORA-2016-46a34efa06 (Fedora 23, PHP 5.6.18)

https://bodhi.fedoraproject.org/updates/FEDORA-2016-46a34efa06

Patch:

PHP Security Update PHP 5.5.32

http://php.net/archive/2016.php#id2016-02-04-2

Patch:

PHP Security Update PHP 5.6.18

http://php.net/archive/2016.php#id2016-02-04-3

Patch:

PHP Security Update PHP 7.0.3

http://php.net/archive/2016.php#id2016-02-04-1

PHP-BUG-ID-71488: Schwachstelle in PHP ermöglicht eine
Denial-of-Service-Angriff

Es existiert eine Schwachstelle in ‘Phar’ in PHP beim Entpacken von
Tar-Archiven, weil die Funktion ‘phar_tar_writeheaders()’ möglicherweise
nicht terminierte Link-Namen aus Einträgen kopiert, welche durch die
Funktion ‘phar_parse_tarfile()’ geparst werden, wodurch es zu einem
Stack-Überlauf kommen kann. Ein entfernter, nicht authentifizierter
Angreifer kann einen Denial-of-Service (DoS)-Angriff durchführen oder
möglicherweise beliebigen Programmcode ausführen.

PHP-BUG-ID-71475: Schwachstelle in PHP ermöglicht Ausführen beliebigen
Programmcodes

Es existiert eine Schwachstelle durch die Verwendung nicht initialisierten
Speichers in ‘openssl_seal()’ in PHP, weil die Funktion ‘EVAP_PKEY_free()’
über nicht initialisierte ‘pkeys’-Mitglieder aufgerufen wird. Unter
bestimmen Umständen kann ein Angreifer diesen nicht initialisierten Speicher
kontrollieren. Ein entfernter, nicht authentifizierte Angreifer kann dadurch
beliebigen Programmcode zur Ausführung bringen.

PHP-BUG-ID-71459: Integer-Overflow-Schwachstelle in PHP ermöglicht Ausführen
beliebigen Programmcodes

Es existiert eine Schwachstelle im ‘ext/standard/iptc.c’-Modul in PHP,
welches die Funktionen ‘iptcembed’ und ‘iptcparse’ bereitstellt, aufgrund
derer es zu einem Ganzzahlenüberlauf (‘Integer Overflow’) in ‘iptcembed()’
kommen kann. Ein Angreifer kann dadurch den Heap-Speicher mit beliebigen
Werten und in beliebiger Länge überschreiben, welche über die Variable
‘iptcdata’ übermittelt werden, wodurch der Heap-Speicher komplett
korrumpiert werden kann. Ein entfernter, nicht authentisierter Angreifer
kann einen Denial-of-Service (DoS)-Angriff durchführen oder beliebigen
Programmcode zur Ausführung bringen.

PHP-BUG-ID-71391: Schwachstelle in PHP ermöglicht eine
Denial-of-Service-Angriff

Es existiert eine Schwachstelle in PHP beim Parsen von Tar-Metadaten. Wenn
in der ‘PharData’-Datei bereits Metadaten existieren, wird von
‘PHP_METHOD(Phar, delMetadata)’ ein NULL-Wert zurückgegeben. Wenn daraufhin
die Funktion ‘phar_tar_flush’ aufgerufen wird und diese wiederum
‘phar_tar_setupmetadata()’ aufzurufen versucht, kommt es zu einer
NULL-Zeiger-Dereferenzierung (‘NULL Pointer Dereference’). Ein entfernter,
nicht authentisierter Angreifer kann diese Schwachstelle ausnutzen, um einen
Denial-of-Service (DoS)-Angriff durchzuführen.

PHP-BUG-ID-71354: Heap-Corruption-Schwachstelle in PHP ermöglicht Ausführen
beliebigen Programmcodes

Es existiert eine Schwachstelle in PHP beim Parsen von
Tar-/Zip-/Phar-Dateien aufgrund derer es zu einer Korruption des
Heap-Speichers kommen kann, wenn eine Datei mit unkomprimierter Dateigröße
“0” geparst wird. In diesem Fall ist der Rückgabewert (‘return_value’) von
‘zval’ “uninitialized variable”, wodurch ‘str.val’ auf irgendeine
Speicheradresse zeigt, die im Kontext der Funktion zuvor aufgerufen wurde.
Ein Angreifer kann dadurch möglicherweise gezielt Heap-Speicher zum “Lecken”
(‘leak’) bringen und in diesen schreiben. Ein entfernter, nicht
authentisierter Angreifer kann Informationen ausspähen, einen
Denial-of-Service (DoS)-Angriff durchführen oder beliebigen Programmcode zur
Ausführung bringen.

PHP-BUG-ID-71335: Type-Confusion-Schwachstelle in WDDX Packet
Deserialization ermöglicht Ausführen beliebigen Programmcodes

Es existiert eine Type-Confusion-Schwachstelle in der WDDX Packet
Deserialization in PHP, die es ermöglicht einen ZVAL String-Typen in der
Funktion “php_wddx_deserialize_ex()” zu deserialisieren und durch eine
Typenverwechslung eine gefälschte Hash-Tabelle zu erzeugen. Ein entfernter,
nicht authentifizierter Angreifer kann beliebigen Programmcode ausführen.

PHP-BUG-ID-71323: Schwachstelle in PHP ermöglicht Manipulation von Daten

Es existiert eine Schwachstelle in der Funktion ‘stream_get_meta_data’ in
PHP, weil der Rückgabewert dieser Funktion sich aus einigen Feldern
zusammensetzt, die einen definierten Wert haben, sowie einigen anderen, die
mit ‘php_stream_populate_meta_data’ befüllt werden. Dies wäre kein Problem,
wenn das Schreiben von ‘php_stream_populate_meta_data’ auf jene Felder
beschränkt wäre, die nicht bereits gesetzt sind. Allerdings werden im Fall,
dass für die Verarbeitung des ‘php_stream’ die Option ‘php_stream_temp_ops’
gesetzt ist, die Metadaten mit Allem befüllt, was der Benutzer beisteuert.
Ein Angreifer kann dadurch, wenn er eine bestimmte Datei kontrolliert, deren
Inhalt in die Verarbeitung von Metadaten einschleusen, d.h. die Ausgabe von
‘stream_get_meta_data’ verfälschen. Eine Anwendung, die
‘stream_get_meta_data’ aufruft, würde somit durch den Angreifer
kontrollierte Daten anstelle “gesunder”, von PHP bereitgestellter Daten
verwenden. Ein entfernter, nicht authentisierter Angreifer kann diese
Schwachstelle ausnutzen, um Daten zu manipulieren.

PHP-BUG-ID-71313: Use-after-free-Schwachstelle in PHP ermöglicht Ausführen
beliebigen Programmcodes

Es existiert eine Schwachstelle in PHP aufgrund der Verwendung bereits
freigegebener Objekte. Ein Angreifer kann diese Schwachstelle ausnutzen,
mittels korrekt präparierter Eingaben an ‘unserialize’, wodurch
‘SPL_METHOD(SplObjectStorage, unserialize)’ zerstörte ‘zval’-Werte an
‘php_var_unserialize’ weitergibt. Die zugrunde liegende Ursache ist dieselbe
wie bei PHP-BUG-ID-71311. Dadurch ist jede Anwendung verwundbar, die
‘unserialize’ aufruft. Ein entfernter, nicht authentifizierte Angreifer kann
beliebigen Programmcode zur Ausführung bringen.

PHP-BUG-ID-71311: Use-after-free-Schwachstelle in PHP ermöglicht Ausführen
beliebigen Programmcodes

Es existiert eine Schwachstelle in PHP aufgrund der Verwendung bereits
freigegebener Objekte. Ein Angreifer kann diese Schwachstelle ausnutzen,
mittels korrekt präparierter Eingaben an ‘unserialize’, wodurch
‘SPL(ArrayObject, unserialize)’ zerstörte ‘zval’-Werte an
‘php_var_unserialize’ weitergibt. Die zugrunde liegende Ursache ist dieselbe
wie bei PHP-BUG-ID-71313. Dadurch ist jede Anwendung verwundbar, die
‘unserialize’ aufruft. Ein entfernter, nicht authentifizierte Angreifer kann
beliebigen Programmcode zur Ausführung bringen.

PHP-BUG-ID-71039: Schwachstelle in PHP ermöglicht Ausführen beliebigen
Programmcodes

Es existiert eine Schwachstelle in PHP, weil die ‘exec’-Funktionen, welche
in ext/standard/exec.c definiert sind und die mit Strings arbeiten
(escapeshellcmd, eschapeshellarg, shell_exec), alle die Länge des PHP
Strings ignorieren und stattdessen mit einer NULL-Terminierung arbeiten. Da
der Basiszeiger (‘base pointer’) eines Strings direkt an die C Funktionen
weitergegeben wird, führen NULLs in der Mitte des Strings zu einem
stillschweigenden Abschneiden der Zeichenfolge, ohne Warnung an den
Benutzer. Wenn keine NULL-Terminierung des Strings vorhanden ist (einige
Funktionen verwenden ‘RETURN_STRINGL(buf, len, 0)’, wobei ‘buf’ nicht
NULL-terminiert ist), kommt es zu einem Pufferüberlauf. Ein entfernter,
nicht authentifizierte Angreifer kann beliebigen Programmcode zur Ausführung
bringen.

Referenzen:

Dieses Advisory finden Sie auch im DFN-CERT Portal unter:
https://portal.cert.dfn.de/adv/DFN-CERT-2016-0213/

Fedora Security Update FEDORA-2016-1bc6ca8445 (Fedora 22, PHP 5.6.18):
https://bodhi.fedoraproject.org/updates/FEDORA-2016-1bc6ca8445

Fedora Security Update FEDORA-2016-46a34efa06 (Fedora 23, PHP 5.6.18):
https://bodhi.fedoraproject.org/updates/FEDORA-2016-46a34efa06

PHP Security Update PHP 5.5.32:
http://php.net/archive/2016.php#id2016-02-04-2

PHP Security Update PHP 5.6.18:
http://php.net/archive/2016.php#id2016-02-04-3

PHP Security Update PHP 7.0.3:
http://php.net/archive/2016.php#id2016-02-04-1

PHP Bug 71039:
https://bugs.php.net/bug.php?id=71039

PHP Bug 71311:
https://bugs.php.net/bug.php?id=71311

PHP Bug 71313:
https://bugs.php.net/bug.php?id=71313

PHP Bug 71323:
https://bugs.php.net/bug.php?id=71323

PHP Bug 71335:
https://bugs.php.net/bug.php?id=71335

PHP Bug 71354:
https://bugs.php.net/bug.php?id=71354

PHP Bug 71391:
https://bugs.php.net/bug.php?id=71391

PHP Bug 71459:
https://bugs.php.net/bug.php?id=71459

PHP Bug 71475:
https://bugs.php.net/bug.php?id=71475

PHP Bug 71488:
https://bugs.php.net/bug.php?id=71488

PHP Change Log PHP 5.5.32:
http://php.net/ChangeLog-5.php#5.5.32

PHP Change Log PHP 5.6.18:
http://php.net/ChangeLog-5.php#5.6.18

PHP Change Log PHP 7.0.3:
http://php.net/ChangeLog-7.php#7.0.3

(c) DFN-CERT Services GmbH, all rights reserved!
Die Weiterverbreitung ist mit Hinweis auf den Copyrightinhaber innerhalb der
eigenen Einrichtung erlaubt. Eine darüber hinausgehende Verbreitung bedarf
des schriftlichen Einverständnisses des Rechteinhabers.

Nach oben