Eine Schwachstelle in php-fpm, die es ermöglicht, Code remote auf dem Server auszufĂŒhren

PrĂ€sentationen korrektive Releases von PHP 7.3.11, 7.1.33 und 7.2.24, in denen behoben kritische eine Schwachstelle (CVE-2019-11043) im PHP-FPM-Erweiterung (FastCGI-Prozessmanager), die es ermöglicht, eigenen Code im System remote auszufĂŒhren. FĂŒr Angriffe auf Server, die PHP-Skripte in Verbindung mit Nginx ĂŒber PHP-FPM ausfĂŒhren, steht bereits ein funktionierender Exploit.

Angriff ist in nginx-Konfigurationen möglich, in denen der Zugriff auf PHP-FPM durch das Trennen der URL-Teile mit "fastcgi_split_path_info" und die Definition der Umgebungsvariable PATH_INFO erfolgt, jedoch ohne vorherige ÜberprĂŒfung der Existenz der Datei durch die Direktive "try_files $fastcgi_script_name" oder die Konstruktion "if (!-f $document_root$fastcgi_script_name)". Das Problem betrifft auch zeigt sich die Einstellungen, die fĂŒr die NextCloud-Plattform empfohlen werden. Beispielsweise sind Konfigurationen mit Konstruktionen wie:

location ~ [^\/]\.php(\/|$) {
fastcgi_split_path_info ^(.+?\.php)(\/.*)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_pass php:9000;
}

Die Beseitigung des Problems in den Distributionen kann auf den folgenden Seiten verfolgt werden: Debian, RHEL, Ubuntu, SUSE\/openSUSE, FreeBSD, Arch, Fedora. Als Umgehungsschutz kann nach der Zeile "fastcgi_split_path_info" eine ÜberprĂŒfung der Existenz der angeforderten PHP-Datei hinzugefĂŒgt werden:

try_files $fastcgi_script_name =404;

Das Problem wird durch einen Fehler bei der Manipulation von Zeigern in der Datei sapi/fpm/fpm/fpm_main.c. Bei der Zuordnung eines Zeigers wird davon ausgegangen, dass der Wert der Umgebungsvariable PATH_INFO unbedingt ein PrĂ€fix enthĂ€lt, das mit dem Pfad zum PHP-Skript ĂŒbereinstimmt.
Wenn in der Direktive fastcgi_split_path_info die Trennung des Skriptpfades mithilfe eines regulĂ€ren Ausdrucks angegeben ist, der anfĂ€llig fĂŒr die Übergabe von ZeilenumbrĂŒchen ist (zum Beispiel wird in vielen Beispielen vorgeschlagen, "^(.+?\.php)(\/.*)$" zu verwenden), kann der Angreifer erreichen, dass in die Umgebungsvariable PATH_INFO ein leerer Wert geschrieben wird. In diesem Fall folgt wĂ€hrend der AusfĂŒhrung erfolgt das Schreiben von path_info[0] null und der Aufruf von FCGI_PUTENV.

Indem der Angreifer eine auf bestimmte Weise formatierte URL anfordert, kann er erreichen, dass der Zeiger path_info auf das erste Byte der Struktur "_fcgi_data_seg" verschoben wird, und das Schreiben von null in dieses Byte fĂŒhrt dazu, dass der Zeiger "char* pos" in einen zuvor liegenden Speicherbereich verschoben wird. Der anschließend aufgerufene FCGI_PUTENV ĂŒberschreibt die Daten in diesem Speicher mit einem Wert, den der Angreifer kontrollieren kann. In diesem Speicher werden auch die Werte anderer FastCGI-Variablen gespeichert, und durch das Schreiben seiner Daten kann der Angreifer eine gefĂ€lschte Variable PHP_VALUE erstellen und die AusfĂŒhrung seines Codes erreichen.

Quelle: opennet.ru

ZuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz kaufen, VPS VDS Server đŸ”„ ZuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz kaufen, VPS VDS Server - ProHoster