DFN-CERT-2016-1253 PHP: Mehrere Schwachstellen ermöglichen u.a. die Ausführung beliebigen Programmcodes [Linux]

Liebe Kolleginnen und Kollegen,

bitte beachten Sie die folgende Sicherheitsmeldung.

Betroffene Software:

PHP

Betroffene Plattformen:

Canonical Ubuntu Linux 12.04 LTS
Canonical Ubuntu Linux 14.04 LTS
Canonical Ubuntu Linux 16.04 LTS

Mehrere Schwachstellen in PHP ermöglichen einem entfernten, nicht
authentifizierten Angreifer die Ausführung beliebigen Programmcodes, das
Ausspähen von Informationen, die Durchführung verschiedener
Denial-of-Service (DoS)-Angriffe und eines Cross-Site-Scripting
(XSS)-Angriffs sowie das Umleiten des ausgehenden HTTP-Datenverkehrs einer
Anwendung auf einen beliebigen, schädlichen Proxy-Server
(‘httpoxy’-Problem).

PHP hat diese Schwachstellen überwiegend mit den stabilen Versionen 5.5.37,
5.6.23 und 7.0.8 bzw. 5.5.38, 5.6.24 und 7.0.9 behoben. Canonical stellt für
die Distributionen Ubuntu 16.04 LTS, Ubuntu 14.04 LTS und Ubuntu 12.04 LTS
jeweils Backport-Sicherheitsupdates zur Verfügung.

Patch:

Ubuntu Security Notice USN-3045-1

http://www.ubuntu.com/usn/usn-3045-1/

CVE-2016-6297: Schwachstelle in PHP PECL ermöglicht Ausführen beliebigen
Programmcodes

Die Funktion ‘php_stream_zip_opener’ in der Erweiterung PHP PECL ZipArchive
(php-pecl-zip) überprüft die Variable ‘path_len’ fehlerhaft, wodurch diese
anfällig für Ganzzahl-Überläufe (Integer Overflow) ist. Da diese Variable im
weiteren Programmablauf zur Berechnung von Speichergrößen verwendet wird,
kann es zu einem Pufferspeicher-Überlauf kommen (Buffer Overflow). Ein
entfernter, nicht authentifizierter Angreifer kann diese Schwachstelle
ausnutzen, um durch Korrumpieren des Speichers (Memory Corruption)
beliebigen Programmcode zur Ausführung zu bringen.

CVE-2016-6296: Schwachstelle in PHP ermöglicht Ausführen beleibigen
Programmcodes

Die Längenprüfung der Funktion ‘simplestring_addn’ in ‘simplestring.c’ in
PHP interpretiert den Wert ‘length’ als vorzeichenbehaftete Ganzzahl. Diese
Schwachstelle kann mit einem bösartigen PHP-Skript dazu ausgenutzt werden,
Schreibzugriffe (Out-of-bounds Write) auf dem Heap-Pufferspeicher
durchzuführen. Ein entfernter, nicht authentifizierter Angreifer kann
beliebigen Programmcode zur Ausführung bringen.

Die Schwachstelle existiert in ‘xmlrpc-epi’, der verwundbare Teil des
Programmcodes wird mit PHP ausgeliefert.

CVE-2016-6295: Schwachstelle in PHP ermöglicht Ausführen beliebigen
Programmcodes

Es existiert eine nicht näher beschriebene Use-after-free-Schwachstelle im
SNMP-Paket in PHP aufgrund eines Fehlers im Algorithmus des Garbage
Collectors. Dies ermöglicht es den Garbage Collector dazu zu veranlassen,
ein bestimmtes Speicher-Array freizugeben und es daraufhin zu übernehmen.
Ein entfernter, nicht authentifizierter Angreifer kann beliebigen
Programmcode ausführen.

CVE-2016-6294: Schwachstelle in PHP ermöglicht Denial-of-Service-Angriff

In der Funktion ‘locale_accept_from_http’ in PHP existiert eine
Schwachstelle aufgrund unzureichender Überprüfung des Rückgabewertes der
aufgerufenen Funktion ‘uloc_canonicalize’. Ein entfernter, nicht
authentifizierter Angreifer kann durch Ausnutzen der Schwachstelle auf
Speicherbereiche außerhalb der zulässigen Grenzen zugreifen (Out-of-bounds
Access) und dadurch einen Denial-of-Service-Zustand herbeiführen oder
Informationen ausspähen.

CVE-2016-6292: Schwachstelle in PHP ermöglicht Denial-of-Service-Angriff

Es existiert eine Schwachstelle in der Funktion ‘exif_process_user_comment’
in der Erweiterung Exchangable Image Information (EXIF) in PHP aufgrund
unzureichender Überprüfung von Übergabeparametern und Rückgabewerten. Ist
die Variable ‘encode_jis’ als leere Zeichenkette deklariert, liefert die
Methode ‘zend_multibyte_fetch_encoding’ innerhalb der Funktion einen
NULL-Zeiger zurück. Dieser wird im weiteren Programmablauf ungeprüft
verwendet, wodurch das Programm abstürzt (Segmentation Fault). Ein
entfernter, nicht authentifizierter Angreifer kann einen
Denial-of-Service-Angriff durchführen.

CVE-2016-6291: Schwachstelle in PHP ermöglicht u.a. Ausführen beliebigen
Programmcodes

In der Funktion ‘exif_process_IFD_in_MAKERNOTE’ in PHP kommt es aufgrund
fehlerhafter Überprüfung von Rückgabewerten im weiteren Programmverlauf zur
unkontrollierten Verwendung von Pufferspeichergrößen. Dies ermöglicht den
Lese- und Schreibzugriff auf Speicherbereiche außerhalb der zulässigen
Grenzen (Out-of-bounds Read and Write). Ein entfernter, nicht
authentifizierter Angreifer kann durch Ausnutzen der Schwachstelle
Informationen aus dem Speicher ausspähen und durch Korrumpieren des
Speichers (Memory Corruption) einen Denial-of-Service-Angriff durchführen
oder möglicherweise sogar beliebigen Programmcode ausführen.

CVE-2016-6290: Schwachstelle in PHP ermöglicht Ausführen beliebigen
Programmcodes

Es existiert eine Use-after-free-Schwachstelle in der Funktion ‘unserialize’
in PHP, wenn die Deserialisierung einer Sitzung (Session Deserialization)
fehlschlägt und dadurch der Zeiger auf einen Speicherbereich nicht korrekt
freigegeben wird. Ein entfernter, nicht authentifizierter Angreifer kann
durch Ausnutzen der Schwachstelle beliebigen Programmcode ausführen.

CVE-2016-6289: Schwachstelle in PHP ermöglicht Denial-of-Service-Angriff

In der Variablen ‘path_length’ in der Funktion ‘virtual_file_ex’ in PHP
existiert eine Schwachstelle aufgrund eines Ganzzahl-Überlaufs (Integer
Overflow). Dadurch ist es möglich mit ‘memcpy’ eine große Menge an Daten zu
kopieren, wodurch der Pufferspeicher zum Überlauf gebracht werden kann
(Buffer Overflow). Ein entfernter, nicht authentifizierter Angreifer kann
durch Ausnutzen der Schwachstelle einen Denial-of-Service (DoS)-Angriff
durchführen und möglicherweise sogar beliebigen Programmcode ausführen.

CVE-2016-6288: Schwachstelle in PHP ermöglicht Denial-of-Service-Angriff

In der Funktion ‘php_url_prase_ex’ kann es zum Zugriff auf Speicher
außerhalb des zugewiesenen Speicherbereichs kommen, da die an ‘memchr’ als
Parameter übergebene Zeichenanzahl nicht ausreichend geprüft wird. Ein
entfernter, nicht authentifizierter Angreifer kann eine Schutzverletzung
(Segfault) und in der Folge einen Denial-of-Service-Zustand (DoS) auslösen,
falls ‘php_url_prase_ex’ intern aufgerufen wird.

CVE-2016-5399: Schwachstelle in PHP ermöglicht Ausführen beliebigen
Programmcodes

In der Funktion ‘bzread’ in der bzip2-Bibliothek in PHP ist es aufgrund
unzureichender Behandlung von Fehlern möglich, unbemerkt die Ausführung
fortzuführen, wodurch das Programm in einem ausnutzbaren Zustand verbleibt.
Ein entfernter, nicht authentifizierter Angreifer kann durch Ausnutzen der
Schwachstelle Schreibzugriffe in Speicherbereiche außerhalb zulässiger
Grenzen (Out-of-bounds Write) vornehmen und dadurch beliebigen Programmcode
zur Ausführung bringen.

CVE-2016-5385: Schwachstelle in PHP ermöglicht Umgehen von
Sicherheitsvorkehrungen

PHP bis einschließlich Version 7.0.8 versucht nicht, einen durch RFC 3875
Sektion 4.1.18 bedingten Namensraumkonflikt zu adressieren und schützt
deshalb Anwendungen nicht vor nicht vertrauenswürdigen Client-Daten in der
HTTP_PROXY-Umgebungsvariablen. Dadurch ist es mit Hilfe eines präparierten
Proxy-Headers in einer HTTP-Anfrage – beispielsweise mittels einer
Anwendung, die einen getenv(‘HTTP_PROXY’) Aufruf tätigt oder durch eine
bestimmte CGI-Konfiguration von PHP – möglich, den ausgehenden HTTP-Verkehr
einer Anwendung auf einen beliebigen Proxy-Server umzuleiten. Das Problem
ist unter dem Namen ‘httpoxy’ bekannt.

CVE-2015-8935: Schwachstelle in PHP ermöglicht Cross-Site-Scripting-Angriff

Die Filterung in der Funktion ‘header()’ ist nicht ausreichend, wodurch das
Einschleusen von Headern und Inhalten (Content) möglich ist, wenn als Client
der Microsoft Internet Explorer (IE) verwendet wird. Microsoft IE akzeptiert
‘%0A%20’ oder ‘%0D%0A%20’ als Separatoren in HTTP, während andere Browser
den neuen Zeilenanhang mit Leerzeichen als Fortsetzung des vorangehenden
Headers behandeln. Ein entfernter, nicht authentisierter Angreifer kann
einen Cross-Site-Scripting (XSS)-Angriff gegen Clients durchführen. Hiervon
sind alle getesteten Versionen des IE betroffen.

CVE-2016-5773: Schwachstelle in PHP ermöglicht Ausführen beliebigen
Programmcodes

Es existiert eine Use-after-free-Schwachstelle in PHP ab Version 5.3
aufgrund eines Fehlers im Algorithmus des Garbage Collectors. Dies
ermöglicht es den Garbage Collector dazu zu veranlassen, ein bestimmtes
Speicher-Array freizugeben und mittels gefälschtem ZVAL-Objekt den
Zeiger(EIP/RIP) darauf zu übernehmen. Ein entfernter, nicht
authentifizierter Angreifer kann beliebigen Programmcode ausführen.

CVE-2016-5772: Schwachstelle in PHP ermöglicht Ausführung beliebigen
Programmcodes

Durch eine Schwachstelle in der Funktion ‘wddx_deserialize’ kann es bei der
Verarbeitung von speziell präparierten XML-Dateien zur Freigabe bereits
freigegebener Speicherbereiche kommen. Unter bestimmten Umständen kann die
Position des freigegebenen Speichers festgelegt werden, wodurch ein
entfernter, nicht authentifizierter Angreifer beliebigen Programmcode
ausführen kann.

CVE-2016-5771: Schwachstelle in PHP ermöglicht Ausführen beliebigen
Programmcodes

Es existiert eine Use-after-free-Schwachstelle in PHP aufgrund eines Fehlers
im Algorithmus des Garbage Collectors. Dies ermöglicht es den Garbage
Collector dazu zu veranlassen ein bestimmtes Speicher-Array freizugeben und
mittels gefälschtem ZVAL-Objekt den Zeiger(EIP/RIP) darauf zu übernehmen.
Ein entfernter, nicht authentifizierter Angreifer kann beliebigen
Programmcode ausführen.

CVE-2016-5769: Schwachstelle in PHP ermöglicht Denial-of-Service-Angriff

Es existiert eine Schwachstelle in der Funktion ‘mcrypt_generic’ in PHP
aufgrund fehlender Überprüfung des Berechnungsergebnisses für ‘data_size’,
mit dem im weiteren Programmablauf Speicher alloziert wird. Manipuliert ein
Angreifer den Wert ‘data_len’ auf einen sehr hohen Wert, wie beispielsweise
4.294.967.295 (INTEGER_MAX), kommt es im Zuge der Berechnung zu einem
Ganzzahlüberlauf, in dessen Folge viel weniger Speicher alloziert wird als
benötigt wird. Dadurch kann der Heap-Pufferspeicher zum Überlauf gebracht
werden, was einem entfernten, nicht authentifizierten Angreifer ermöglicht
einen Denial-of-Service-Angriff durchzuführen.

CVE-2016-5768: Schwachstelle in PHP ermöglicht Ausführung beliebigen
Programmcodes

Wenn die Funktion ‘_php_mb_regex_ereg_replace_exec’ von
‘mb_ereg_replace_callback’ aufgerufen wird, falls die Ausführung des
Callbacks fehlschlägt, kann es zur Freigabe eines bereits freigegebenen
Speicherbereichs kommen. Ein entfernter, nicht authentifizierter Angreifer,
der dieses Verhalten auslöst, kann dadurch möglicherweise beliebigen
Programmcode ausführen.

CVE-2016-5114: Schwachstelle in PHP ermöglicht u.a. das Ausspähen von
Informationen

Es existiert eine Schwachstelle im FPM-Modul in PHP, weil der Logger die
Restgröße vom FPM_LOG_BUFFER nicht korrekt berechnet. Die verwendete Methode
snprintf() schreibt so viele Bytes in den Speicher, wie im
Funktions-Parameter SIZE übergeben, wobei hier das abschließende
Terminierungsbyte (‘\0’) mit eingerechnet wird. Der Parameter wird aus der
Konstante FPM_LOG_BUFFER und der Anzahl bereits geschriebener Zeichen
berechnet und alle darüber hinausgehenden Zeichen werden abgeschnitten. Der
Rückgabewert dieser Funktion, welcher im Anschluss wieder für die Berechnung
des verbleibenden Speichers verwendet wird, ist aber die Anzahl der
geschriebenen Zeichen ohne das Terminierungsbyte. Ein entfernter, nicht
authentifizierter Angreifer kann einen Speicherfehler verursachen, der
entweder Informationen offenlegt oder zu einem Denial-of-Service-Zustand
führt.

CVE-2015-8876: Schwachstelle in PHP ermöglicht Ausführen beliebigen
Programmcodes

In Zend/zend_exceptions.c in PHP bevor 5.4.44, 5.5.x bevor 5.5.28 und 5.6.x
bevor 5.6.12 existiert eine Schwachstelle aufgrund fehlender Überprüfung
bestimmter Ausnahmeobjekte (Exception Objects), wodurch es zu einer
NULL-Zeiger-Dereferenzierung und einem Absturz der Anwendung kommt oder
mittels präparierter serialisierter Daten die Ausführung bestimmter nicht
beabsichtigter Methoden angestoßen werden kann. Ein entfernter, nicht
authentisierter Angreifer kann diese Schwachstelle ausnutzen, um einen
Denial-of-Service-Zustand herbeizuführen oder Programmcode auszuführen.

CVE-2016-5095: Schwachstelle in PHP Core ermöglicht Denial-of-Service

Bei der Neuberechnung der Länge einer Zeichenkette (new_len) in der Funktion
php_filter_full_special_chars() kann es zu einem Ganzzahl-Überlauf (Integer
Overflow) kommen. Der resultierende negative Wert in ‘new_len’ führt zu
einem korrumpierten ‘string-typed’ ZVAL, woraus sich ein
Denial-of-Service-Zustand ergibt. Ein entfernter, nicht authentifizierter
Angreifer kann diese Schwachstelle ausnutzen, um einen
Denial-of-Service-Angriff durchzuführen.

CVE-2015-8873: Schwachstelle in PHP ermöglicht Denial-of-Service-Angriff

Es existiert eine Schwachstelle in der Datei ‘Zend/zend_exceptions.c’ in
PHP, durch die es möglich ist, über einen rekursiven Methodenaufruf den
Stack-basierten Speicher aufzubrauchen und so eine Schutzverletzung
auszulösen (Segmentation Fault). Ein entfernter, nicht authentifizierter
Angreifer kann einen Denial-of-Service-Angriff durchführen.

CVE-2015-4116: Use-after-free-Schwachstelle in PHP ermöglicht Ausführen
beliebigen Programmcodes

Es existiert eine Use-after-free-Schwachstelle in der Funktion
‘spl_ptr_heap_insert’ in PHP, welche durch eine fehlgeschlagene
‘SplMinHeap::compare’-Operation ausgenutzt werden kann. Ein entfernter,
nicht authentifizierter Angreifer kann durch das Ausnutzen der Schwachstelle
beliebigen Programmcode ausführen.

CVE-2016-5096: Schwachstelle in PHP Core ermöglicht Denial-of-Service

Durch einen Ganzzahl-Unterlauf (Integer Underflow) kann es aufgrund des
daraus resultierenden negativen Offsets zu einem beliebigen “Nullschreiben”
(Null Write) in fread/gzread() kommen, woraus sich ein
Denial-of-Service-Zustand ergibt. Ein entfernter, nicht authentifizierter
Angreifer kann diese Schwachstelle für einen Denial-of-Service-Angriff
ausnutzen.

CVE-2016-5094: Schwachstelle in PHP Core ermöglicht Denial-of-Service

Bei der Neuberechnung der Länge einer Zeichenkette (new_len) in der Funktion
php_html_entities() kann es zu einem Ganzzahl-Überlauf (Integer Overflow)
kommen. Der resultierende negative Wert in ‘new_len’ führt zu einem
korrumpierten ‘string-typed’ ZVAL, woraus sich ein Denial-of-Service-Zustand
ergibt. Ein entfernter, nicht authentifizierter Angreifer kann diese
Schwachstelle ausnutzen, um einen Denial-of-Service-Angriff durchzuführen.

CVE-2016-5093: Schwachstelle in PHP Intl ermöglicht Ausspähen von
Informationen

Aufgrund des Fehlens eines NULL (‘\0’) Zeichens und daraus resultierender
unerwarteter ‘zend_string’-Länge kann es in der Funktion
get_icu_value_internal() zu einem Lesen außerhalb zugewiesener
Heap-Speichergrenzen kommen (Out-of-bounds Heap Read). Dies wurde durch den
Aufruf der genannten Funktion über ‘locale_get_primary_language’ gezeigt;
das Lecken des Heap-Speichers kann allerdings auch durch weitere Funktionen
ausgelöst werden. Ein entfernter, nicht authentifizierter Angreifer kann
diese Schwachstelle ausnutzen, um Informationen auszuspähen.

Referenzen:

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

Schwachstelle CVE-2015-4116 (NVD):
http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2015-4116

Schwachstelle CVE-2015-8873 (NVD):
http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2015-8873

Schwachstelle CVE-2015-8876 (NVD):
http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2015-8876

Schwachstelle CVE-2016-5093 (NVD):
http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2016-5093

Schwachstelle CVE-2016-5094 (NVD):
http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2016-5094

Schwachstelle CVE-2016-5096 (NVD):
http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2016-5096

Schwachstelle CVE-2016-5095 (NVD):
http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2016-5095

Schwachstelle CVE-2016-5114 (NVD):
http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2016-5114

Schwachstelle CVE-2015-8935 (NVD):
http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2015-8935

Schwachstelle CVE-2016-5768 (NVD):
http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2016-5768

Schwachstelle CVE-2016-5769 (NVD):
http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2016-5769

Schwachstelle CVE-2016-5771 (NVD):
http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2016-5771

Schwachstelle CVE-2016-5772 (NVD):
http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2016-5772

Schwachstelle CVE-2016-5773 (NVD):
http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2016-5773

Schwachstelle CVE-2016-5385 (NVD):
http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2016-5385

Schwachstelle CVE-2016-5399 (NVD):
http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2016-5399

Schwachstelle CVE-2016-6288 (NVD):
http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2016-6288

Schwachstelle CVE-2016-6289 (NVD):
http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2016-6289

Schwachstelle CVE-2016-6290 (NVD):
http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2016-6290

Schwachstelle CVE-2016-6291 (NVD):
http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2016-6291

Schwachstelle CVE-2016-6292 (NVD):
http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2016-6292

Schwachstelle CVE-2016-6294 (NVD):
http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2016-6294

Schwachstelle CVE-2016-6295 (NVD):
http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2016-6295

Schwachstelle CVE-2016-6296 (NVD):
http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2016-6296

Schwachstelle CVE-2016-6297 (NVD):
http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2016-6297

Ubuntu Security Notice USN-3045-1:
http://www.ubuntu.com/usn/usn-3045-1/

(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