ChrisB: Cookies werden nicht korrekt gesetzt

Beitrag lesen

Hi,

$page = unserialize(base64_decode($_COOKIE[COOKIE_NAME]));
Sowas ist „böse“.

Find ich nicht.

Es gab in der Vergangenheit m.W. einige Bugs in der Implementierung von unserialize.

http://sharpesecurity.blogspot.com/2010/07/php-unserialize-vulnerability.html berichtet bspw. von einem, der in PHP 5.2 <= 5.2.13 und PHP 5.3 <= 5.3.2 noch vorhanden ist.

Stefan Esser hat IIRC auch schon davor gewarnt.

Die einzige Code-Ausführung, die mir einfällt, wäre __wakeup() bei Objekten.

Die kann ja schon ausreichend sein.
Dabei muss es sich ja nicht mal um ein Objekt handeln, welches das jeweilige Script aktiv nutzt - wenn die Klassendefinition irgendwo in seinem Umfeld verfügbar ist, bspw. über einen autoload-Mechanismus, reicht das u.U. schon aus, um Schaden anzurichten.
Stell dir das jetzt noch in Kombination mit irgendeinem Open-Source-System vor, wo ich mir anschauen kann, welche Klassen es gibt und wie die ggf. beim Aufwachen Daten verändern - dann reicht mir u.U. schon ein Plugin, welches nur aus einem Cookie per unserialize den Namen und die E-Mail-Adresse eines Nutzers für eine Kommentarformular-Vorbelegung wieder herstellen will, um damit Unheil anzurichten.

MfG ChrisB

--
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?