DFN-CERT Portal

Schwachstellen

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

Historie

Version 1 (2017-08-11 15:12)
Neues Advisory

Betroffene Software

PHP

Betroffene Plattformen

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

Lösung

Patch

Ubuntu Security Notice USN-3382-1

Beschreibung

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.

Schwachstellen

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

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