PHP: Heap-Overflow-Attacke lässt entfernten Angreifer Befehle ausführen

Vor wenigen Tagen erschien 5.4.16. Anwendern der Version 5.3 wird dringend empfohlen, auf die neue Version umzusteigen, um einige Sicherheitslücken zu schließen. Eine recht gravierende Schwachstelle (CVE-2013-2110) wurde in der Funktion “quoted_printable_encode()” korrigiert. Ein entfernter Angreifer konnte dort Heap Buffer Overflows auslösen und damit beliebigen Programmcode innerhalb von PHP ausführen. Die Befehle werden dann mit den Rechten des Web-Dienstes ausgeführt.

Die Funktion “quoted_printable_encode()” ist eigentlich dafür zuständig, beliebige Zeichenketten in print-fähige RFC-2045-konforme Strings umzuwandeln, so dass sie sicher im Browser dargestellt werden können. Im Jahr 2012 wurde bereits eine andere
Schwachstelle in dieser Funktion behoben. Hierdurch hat sich allerdings das aktuelle Problem in den PHP-Code eingeschlichen.

Der neue Fehler lässt sich sehr einfach durch folgende Zeile reproduzieren:

quoted_printable_encode(str_repeat("\xf4", 1000));

Diese Zeile wendet “quoted_printable_encode()” auf einen längeren String an. Dabei wird intern allerdings die Länge des Strings falsch berechnet, wodurch nicht genügend Speicher für den übergebenen String alloziert wird. Dies führt dann in diesem Fall zu einem Segmentation Fault. Für eine Attacke müsste hier ein geschickterer Programmcode verwendet werden, um konkrete Befehle auf dem anfälligen System durchzuführen.

Der Patch für diesen Programmierfehler ist recht einfach und erfordert lediglich eine Modifikation der Quelltextdatei “ext/standard/quot_print.c”. Hier muss die
fehlerhafte Zeile

ret = safe_emalloc(1, 3 * length + 3 * (((3 * length)/PHP_QPRINT_MAXL) + 1), 0);

einfach durch

ret = safe_emalloc(3, length + (((3 * length)/(PHP_QPRINT_MAXL-9)) + 1), 1);

ersetzt werden. Dies korrigiert die Speicherallokation für die an “quoted_printable_encode()” übergebenen Strings, womit es zu keinem Buffer-Overflow-Fehler mehr kommen kann und die Attacke nicht mehr möglich ist.

E-Mail Benachrichtigung
Benachrichtige mich zu:
0 Kommentare
Älteste
Neuste Beste Bewertung
Nach oben