Open Source im professionellen Einsatz

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

11.08.2017

Liebe Kolleginnen und Kollegen,

bitte beachten Sie die folgende Sicherheitsmeldung.

Betroffene Software:

PHP


Betroffene Plattformen:

Canonical Ubuntu Linux 14.04 LTS
Canonical Ubuntu Linux 16.04 LTS
Canonical Ubuntu Linux 17.04



Mehrere Schwachtellen in PHP und der von diesem verwendeten
RegExp-Bibliothek Oniguruma ermöglichen einem entfernten, nicht
authentisierten Angreifer die Ausführung beliebigen Programmcodes, das
Ausspähen von Informationen, das Umgehen von Sicherheitsvorkehrungen und
verschiedene Denial-of-Service-Angriffe.

Canonical stellt für Ubuntu 14.04 LTS, Ubuntu 16.04 LTS und Ubuntu 17.04
Sicherheitsupdates für PHP zur Behebung der Schwachstellen bereit. Für
Ubuntu 16.04 LTS und 17.04 wird mit diesem Update die Version PHP 7.0.22
eingeführt. Die Schwachstellen CVE-2015-8994, CVE-2016-10397, CVE-2017-11143
und CVE-2017-11147 betreffen nur PHP 5, also in diesem Zusammenhang nur
Ubuntu 14.04 LTS.


Patch:

Ubuntu Security Notice USN-3382-1

<http://www.ubuntu.com/usn/usn-3382-1/>


CVE-2017-11628: Schwachstelle in PHP ermöglicht Denial-of-Service-Angriff
oder Ausführung beliebigen Programmcodes

Eine Schwachstelle in PHP 7.1.5 und 5.6.30 basiert auf einem Pufferüberlauf
auf dem Stack in der Funktion 'zend_ini_do_op()' in der API für das Parsen
der PHP INI bei ungültigen Eingabedaten. Ein entfernter, nicht
authentisierter Angreifer kann einen Denial-of-Service (DoS)-Angriff
durchführen oder möglicherweise beliebigen Programmcode zur Ausführung
bringen.


CVE-2017-11362: Schwachstelle in PHP ermöglicht u.a.
Denial-of-Service-Angriff

In der Funktion 'msgfmt_parse_message' wird die Länge des ersten
Eingabeparameters 'locale' nicht beschränkt. Ein entfernter, nicht
authentisierter Angreifer kann daher über die Funktion 'umsg_open' von
libicu einen Stack-basierten Pufferüberlauf erzeugen, durch den die
Anwendung abstürzt (Denial-of-Service) und möglicherweise weiteren Einfluss
auf die International Components for Unicode (ICU) for C/C++ nehmen.


CVE-2017-11147: Schwachstelle in PHP ermöglicht Denial-of-Service-Angriff

In der Funktion 'phar_parse_pharfile() in 'phar.c' existiert eine
Schwachstelle aufgrund der unzureichenden Überprüfung der Eingangsdaten. Die
Schleife zum Parsen der Manifest-Einträge prüft nicht korrekt, dass sich die
4 Bytes für das 'metadata_len'-Feld innerhalb des Puffers befinden. Dadurch
kann durch ein großes Archiv ein Lesen über die Seite hinaus provoziert
werden (Out-of-page Read), was einen Segmentierungsfehler (Segmentation
Fault) und anschließenden Absturz zur Folge hat. Ein entfernter, nicht
authentisierter Angreifer kann die Schwachstelle ausnutzen, mit Hilfe eines
präparierten Archivs des Typs 'PHAR', um einen Denial-of-Service
(DoS)-Angriff durchzuführen.


CVE-2016-10397: Schwachstelle in PHP ermöglicht u.a. Umgehen von
Sicherheitsvorkehrungen

Durch die fehlerhafte Implementierung von RFC 3986 in der Funktion
'parse_url' liefert diese falsche Werte für den Host einer gegebenen URL
zurück. Ein entfernter, nicht authentifizierter Angreifer kann mit Hilfe
speziell präparierter URLs, die in einer Webanwendung von 'parse_url'
verarbeitet werden, abhängig vom Kontext der Anwendung beispielsweise
Authentifizierungsmechanismen umgehen, falsche Informationen darstellen
(Open Redirect) oder Server-Side Request Forgery-Angriffe durchführen.


CVE-2017-11145: Schwachstelle in PHP ermöglicht Ausspähen von Informationen

Während der Deserialisierung eines ungültigen 'dateTime'-Wertes erfolgt in
der Funktion 'wddx_deserialize()' ein Lesezugriff außerhalb zugewiesener
Speicherbereiche auf dem Heap (Heap Out-of-bounds Read). Infolgedessen
können Daten des Prozessspeichers an den Client übergeben werden. Andere
PHP-APIs, die ebenfalls die Funktion 'timelib_meridian()' benutzen, sind
möglicherweise von dem gleichen Fehler betroffen. Ein entfernter, nicht
authentisierter Angreifer kann Informationen ausspähen.


CVE-2017-11144: Schwachstelle in PHP ermöglicht Denial-of-Service-Angriff

Eine Schwachstelle in PHP basiert auf der fehlenden Überprüfung auf den
Fehlerwert '-1' als Rückgabe der Funktion 'EVP_SealInit()' von OpenSSL beim
Parsen eines PEM-Zertifikats. Dadurch kommt es in der Folge zu einer
Speicherkorruption und dem Abbruch des Programms. Ein entfernter, nicht
authentisierter Angreifer kann einen Denial-of-Service (DoS)-Angriff
durchführen.


CVE-2017-11143: Schwachstelle in PHP ermöglicht Denial-of-Service-Angriff

Eine Schwachstelle in PHP basiert auf einer ungültigen Freigabe von
Speicherbereichen im wddx-Parser, die den Abbruch des Programms bewirkt. Ein
entfernter, nicht authentisierter Angreifer kann einen Denial-of-Service
(DoS)-Angriff durchführen.


CVE-2017-9229: Schwachstelle in Oniguruma ermöglicht
Denial-of-Service-Angriff

In der Funktion 'left_adjust_char_head' in Oniguruma 6.2.0 existiert während
der Zusammenstellung regulärer Ausdrücke, aufgrund des fehlerhaften Umgangs
mit 'reg->dmax' in 'forward_search_range', eine Schwachstelle, in dessen
Folge es zu einer ungültigen Zeiger-Dereferenzierung kommt. Ein entfernter,
nicht authentisierter Angreifer kann dies ausnutzen und eine
Speicherschutzverletzung (SIGSEGV) provozieren, wodurch die Anwendung
abstürzt und in einen Denial-of-Service (DoS)-Zustand gerät.


CVE-2017-9228: Schwachstelle in Oniguruma ermöglicht
Denial-of-Service-Angriff

Eine fälschlicherweise in einer fehlerhaften State-Transition in
'parse_char_class' nicht initialisierte lokale Variable wird in
'bitset_set_range' als Index verwendet. Ein entfernter, nicht
authentisierter Angreifer kann dadurch einen Schreibzugriff auf nicht
zugewiesenen Speicher auslösen (Out-of-Bounds Write), wodurch eine
Schutzverletzung ausgelöst wird und wahrscheinlich ein
Denial-of-Service-Zustand bewirkt werden kann.


CVE-2017-9227: Schwachstelle in Oniguruma ermöglicht Ausspähen von
Informationen

Über den Wert von 'reg->dmin' kann bei der Verarbeitung regulärer Ausdrücke
in 'forward_search_range' innerhalb von 'mbc_enc_len' die Dereferenzierung
eines ungültigen Zeigers ausgelöst werden. Ein entfernter, nicht
authentisierter Angreifer kann dadurch auf Stack-Speicher außerhalb der
Speichergrenzen zugreifen (Out-of-Bounds Read) und möglicherweise
Informationen ausspähen.


CVE-2017-9226: Schwachstelle in Oniguruma ermöglicht Ausführung beliebigen
Programmcodes

Oktalzahlen größer als 377 (0xFF, 255) werden in den Funktionen
'fetch_token' und 'fetch_token_in_cc' fehlerhaft behandelt. Durch einen
regulären Ausdruck, der eine Oktalzahl der Form '\700' verwendet, wird in
der Funktion 'next_state_val' ein ungültiger Codepunkt für Werte größer als
0xFF erzeugt. Ein entfernter, nicht authentisierter Angreifer kann so einen
Schreibvorgang auf nicht zugewiesenen Speicher ausführen (Out-of-Bounds
Write), dadurch den Heap-Speicher korrumpieren und möglicherweise beliebigen
Programmcode ausführen.


CVE-2017-9224: Schwachstelle in Onigurama ermöglicht Ausspähen von
Informationen

Durch eine Schwachstelle in der Funktion 'match_at' in Onigurama 6.2.0 lässt
sich ein Pufferüberlauf auf dem Stack erzeugen. Die Schwachstelle liegt
darin begründet, dass 'DATA_ENSURE' erst nach dem Zugriff validiert wird.
Ein entfernter, nicht authentisierter Angreifer kann die Schwachstelle mit
Hilfe eines speziell präparierten regulären Ausdrucks ausnutzen, um auf
Speicher außerhalb der Speichergrenzen zuzugreifen (Out-of-Bounds Read) und
dadurch möglicherweise Informationen ausspähen.


CVE-2015-8994: Schwachstelle in PHP ermöglicht Ausführung beliebigen
Programmcodes

In PHP 5.x und 7.x existiert eine Schwachstelle, falls in der Konfiguration
'apache2handler/mod_php' oder 'php-fpm' mit Zend OPCache aktiviert ist. In
PHP SAPIs, in denen PHP-Interpreter sich einen gemeinsamen Vaterprozess
(Parent Process) teilen, erzeugt Zend OPCache ein geteiltes Speicherobjekt,
welches während der Initialisierung dem gemeinsamen Vater gehört.
Kindprozesse (Child PHP Processes) erben den SHM Descriptor und verwenden
ihn zur Zwischenspeicherung und zum Abrufen von kompiliertem Skriptcode
("opcode" in PHP Jargon). Die Cache-Schlüssel variieren abhängig von der
jeweiligen Konfiguration, allerdings ist der Dateiname zentraler Bestandteil
des Schlüssels und dadurch kann kompilierter Opcode normalerweise ausgeführt
werden, wenn der Dateiname des Skripts bekannt ist oder dieser geraten
werden kann. PHP-Skripte enthalten häufig sensitive Informationen, wie dies
beispielsweise für CMS-Konfigurationen der Fall ist. Durch das Lesen oder
Ausführen eines Skripts eines anderen Benutzers können in dem Falle
Privilegien auf der CMS-Datenbank erlangt werden.


Referenzen:

Dieses Advisory finden Sie auch im DFN-CERT Portal unter:
<https://portal.cert.dfn.de/adv/DFN-CERT-2017-1420/>

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

Schwachstelle CVE-2017-9224 (NVD):
<http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2017-9224>

Schwachstelle CVE-2017-9226 (NVD):
<http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2017-9226>

Schwachstelle CVE-2017-9227 (NVD):
<http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2017-9227>

Schwachstelle CVE-2017-9228 (NVD):
<http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2017-9228>

Schwachstelle CVE-2017-9229 (NVD):
<http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2017-9229>

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

Schwachstelle CVE-2017-11143 (NVD):
<http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2017-11143>

Schwachstelle CVE-2017-11144 (NVD):
<http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2017-11144>

Schwachstelle CVE-2017-11145 (NVD):
<http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2017-11145>

Schwachstelle CVE-2017-11147 (NVD):
<http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2017-11147>

Schwachstelle CVE-2017-11362 (NVD):
<http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2017-11362>

Ubuntu Security Notice USN-3382-1:
<http://www.ubuntu.com/usn/usn-3382-1/>

Schwachstelle CVE-2017-11628 (NVD):
<http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2017-11628>


(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.

Ausgabe 09/2017

Artikelserien und interessante Workshops aus dem Magazin können Sie hier als Bundle erwerben.