Stefan Esser hat einen Fehlerbericht zu der vergangene Woche gemeldeten Lücke
in PHP veröffentlicht, der weitere Details enthält. Demnach lässt
sich der Integer Overflow in der Funktion ecalloc() der ZendEngine1 über
bestimmte Nutzerdaten provozieren, die mit der PHP-Funktion unserialize() verarbeitet
werden. Unter anderem nutzen PHP-Applikationen wie phpBB2, Invision Board, vBulletin,
Serendipity diese Funktion, da sie Cookies über diese Funktion in ein eigenes
Format übertragen. Ein Angreifer könnte etwa mit präparierten Cookies
seinen Code einschleusen und mit den Rechten der Anwendung ausführen. Esser
hat nach eigenen Angaben einen Proof-of-Concept-Exploit entwickelt, der eingeschleusten
Shellcode startet. Eine ähnliche Lücke in unserialize() gab es bereits
Ende 2004.
Betroffen ist PHP 5 bis einschließlich 5.1.6 sowie PHP 4 bis 4.3.0. Ab
4.3.0 ist zumindest in PHP 4 ein Schutz in der ZendEngine1 vor den Folgen von
Integer Overflows in ecalloc() implementiert, so Esser in seinem Bericht. Nach
seinen Angaben ist der Fehler zwar im PHP-CVS behoben, ein Sicherheits-Update
soll es aber nicht geben. Anwender sollten stattdessen den vom Hardened-PHP-Projekt
bereitgestellten Patch
installieren oder auf PHP 5.2.0 warten. Nach Erscheinen dieser Version will
Esser auch seinen Exploit veröffentlichen.