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?