Ungepatcher Buffer-Overflow in allen PHP Versionen < 26.3.2022

Ihr nutzt PHP, Eurer Code nutzt die Funktion filter_var() und das Builddate liegt vor dem 26.3.2022(macht lieber 27. draus)? Na dann sind Glückwünsche angebracht: Ihr habt eine 0Day-Lücke in Eurem System!

Ungepatcher Buffer-Overflow in allen PHP Versionen < 26.3.2022

Ganz im stillen haben die Entwickler von PHP eine Sicherheitslücke gefixt, die derzeit noch in jeder PHP Version steckt, die vor dem 26.3.2022 kompiliert wurde. Gemacht haben Sie das nur, weil jemand auf der Mailingliste Full-Disclosure einen Post gebracht hat, in dem er/sie sich über den Mangel an Aufmerksamkeit vom PHP_Security-Team beschwerte. Ich finde die Beschwerde geht ok, weil der Fehler im Code einen Buffer-Overflow ermöglicht.

static int _php_filter_validate_domain(char * domain, int len, zend_long flags) /* {{{ */
+static int _php_filter_validate_domain(char * domain, size_t len, zend_long flags) /* {{{ */

Es handelt sich hier um den Klassiker schlecht hin: Signed Integer <=> unsigned Long . Bei Exim war das letztes Jahr ein großes Ding, weil ein Codeaudit u.a. so einen Fehler im Code entdeckt hatte.

Prikär an der Lage ist, daß der Patch zwar im Github ist, aber keine PHP Updates released wurden, ganz im Gegensatz zur Info, daß da ein Buffer-Overflow im Code ist und wie man den benutzt aka sich einen Exploit baut. Ich habe da mal dem Fedora Maintainer einen Hinweis gemailt, mal gucken ob da was geht.

Wer seine PHP Version auf Commitbasis versioniert, den hier müßte Ihr drin haben, sonst wechselt der Appstatus bei Benutzung von filter_var() +extern eingelieferten Parametern von meine auf owned :

https://github.com/php/php-src/commit/771dbdb319fa7f90584f6b2cc2c54ccff570492d

Aus der POC-Exploit Seite:

// filter bypass
var_dump(filter_var(„5;id;“ . str_repeat(„a“, 4294967286) . „a.com“, FILTER_VALIDATE_DOMAIN, FILTER_FLAG_HOSTNAME));

// DoS/Memory corruption
var_dump(filter_var(str_repeat(„a“, 2294967286), FILTER_VALIDATE_DOMAIN, FILTER_FLAG_HOSTNAME));

Ich wette, da hat schon wer nen Exploit in Umlauf gebracht, wenn da so leicht ist.

An der Stelle möchte ich mich gleich noch mal Rene Collét für seine langjährige, ausdauernde Arbeit in Sachen PHP für Linux bedanken. Dem Mann können die Linux-PHP-Anwender gar nicht genug danken! Ihr macht Euch keine Vorstellung davon was der für alle leistet!

Hinweis: mit „Alle Versionen“ sind hier gemeint: PHP 5 >= 5.2.0, PHP 7, PHP 8, PHP 8.1

UPDATE:

Aus dem Umfeld(Autor bekannt) der PHP Security Liste kam dazu folgende Info:

„Wir haben das nicht als Sicherheitslücke klassifiziert, weil man das mit einem (ungenannten) MemoryLimit blockieren kann.“

Und, „es wurde nur in 8.0+ gefixt, nicht in 7.4“ 🙂  Aber, sagen können die ja viel, ausprobieren hilft:

[Wed Mar 30 22:10:37.167712 2022] [cgid:error] [pid 587854:tid 587945] [client x.x.x.x:41412] AH01215: stderr from /etc/httpd/bin/cgiwrap64: PHP Fatal error: Allowed memory size of 536.870.912 bytes exhausted (tried to allocate 4.294.967.318 bytes) in /home/linux-am-dienstagde/public_html/php7.4.x-exploit.php on line 3

Erklärung: „4G“ will er, „512M“ sind in der Master php.ini als Limit drin und unsere Prozessüberwachung mußten wir auch noch überreden damit, noch mal etwas mehr RAM drauf geworfen werden konnte:

[Wed Mar 30 22:17:20.266256 2022] [cgid:error] [pid 1060712:tid 1060735] [client x.x.x.x:41464] AH01215: stderr from /etc/httpd/bin/cgiwrap64: PHP Fatal error: Allowed memory size of 2.122.317.824 bytes exhausted (tried to allocate 4.294.967.318 bytes) in /home/linux-am-dienstagde/public_html/php7.4.x-exploit.php on line 5

Ist eher unwahrscheinlich, daß man bei einem Hoster über 4 GB allokieren darf, pro Script. Ich halt es aber nicht gänzlich für ausgeschlossen 😉

Die Sicherheitslücke ist dann also eher theoretischer Natur.

Linux am Dienstag: Programm für den 29.3.2022

Es ist wieder Linux am Dienstag, da müssen wir mal was klären: Was passiert eigentlich, wenn Jemand einfach ein USB Gerät in Euren PC steckt?

Linux am Dienstag: Programm für den 29.3.2022

Ab 19 Uhr haben wir u.a. im Programm:

  • Sicherheit – USBGuard schützt vor USB Angriffen
  • Audio – grafischer Pipewire Verbinder vorgestellt
  • Lapsus$ – Erst Microsoft gehackt, dann selbst verknackt
  • Google – mint heimlich Daten .. ach echt?
  • Datenleak – Nestlé „Wir waren es, nicht die Hacker!“

Wie jede Woche per Videokonferenz auf https://meet.cloud-foo.de/Linux .

Kleine Anmerkung: Die bisherigen Vorträge findet man jetzt unter https://linux-am-dienstag.de/archiv/ .

HTTPd < 2.4.53 von kritischer Lücke betroffen

httpd mit neuer Sicherheitslücke / 9.8 auf der bis 10 gehenden CVE Skala.

HTTPd < 2.4.53 von kritischer Lücke betroffen

Der Apache hat dies Jahr schon die dritte Sicherheitslücke gefixt, aber nicht bei allen ist das Update angekommen. Benutzer von Fedora 34 hatten da jetzt leider doppelt Pech, da das 2.4.53 Update im Test stecken geblieben ist und sich leider niemand die Mühe gemacht hatte, es obwohl es funktional ok ist, ins Stable Repo zu pushen.

Die Lücke CVE-2022-22720 selbst ist mit 9.8/10 bewertet worden, also extrem kritisch:

* httpd: Errors encountered during the discarding of request body lead to HTTP request smuggling (CVE-2022-22720)

Wer seinen httpd für Fedora 34 updaten will, muß dies hier angeben:

dnf update -y –enablerepo=updates-testing httpd

(Hinweis: WP wandelt doppelte Bindestriche gern in einen anderen einfachen Bindestrich um)