Sonntag, 12. Februar 2012 |
Die erste Woche des MOPS, d.h. des Month of PHP Security, ist fast vorbei - Zeit, eine erste Zwischenbilanz zu ziehen. Bisher wurden sechs Schwachstellen in PHP, fünf in PHP-Anwendungen und drei Tips und Tools veröffentlicht.
Den Anfang des MOPS machte eine
Schwachstelle,
die bereits 2007 im Rahmen des Month of PHP Bugs veröffentlicht wurde:
MOPS-2010-001
beschreibt, wie ein bösartiger Userspace-Stream-Handler die Nutzung einer
freigegebenen Ressource durch die Funktion hash_update_file()
zum Ausführen von Code ausnutzen kann.
Die zweite
Schwachstelle
in PHP befindet sich im dechunk-Filter:
MOPS-2010-003
beschreibt einen Vorzeichenfehler beim Verarbeiten von HTTP-Streams durch
php_dechunk(), der DoS-Angriffe ermöglicht.
Einige weitere
Schwachstellen
befinden sich im 'call time pass by reference'-Feature und erlauben
das Ausspähen von Speicherbereichen. Ausgenutzt werden können die
Schwachstellen durch die Funktionen addcslashes()
(beschrieben in
MOPS-2010-006),
chunk_split()
(MOPS-2010-008)
und html_entity_decode()
(MOPS-2010-010).
Das grundlegende Problem wurde von Stefan Esser auf der Konferenz
'BlackHat USA 2009' vorgestellt
(Präsentation
und
Paper
als PDF), die Entwickler haben auch versucht, das betroffene Feature zu
entfernen, waren aber nur mäßig erfolgreich.
Außerdem wurde eine
Schwachstelle
in der Funktion shm_put_var() gefunden: Die
Verwendung bereits freigegebener Ressourcen erlaubt
das Schreiben an beliebige Speicherstellen
(MOPS-2010-009).
Für alle Schwachstellen gibt es bisher keine Patches.
Alle bisher veröffentlichten Schwachstellen in PHP-Anwendungen wurden von Stefan Esser im Rahmen des sog. 'SQL Injection Marathon' gefunden. Dafür hat er zufällig PHP-Anwendungen ausgewählt und 30 Minuten lang auf SQL-Injection-Schwachstellen untersucht. Nach der ersten gefundenen Schwachstelle wurde i.A. mit der nächsten Anwendung weiter gemacht.
Die erste veröffentlichte
Schwachstelle
befindet sich in
Campsite
und wird in
MOPS-2010-002
beschrieben: Betroffen ist der Parameter 'article_id' im Skript
javascript/tinymce/plugins/campsiteattachment/attachments.php,
die Schwachstelle wurde bereits durch einen Patch
behoben.
In ClanSphere wurden gleich zwei SQL-Injection-Schwachstellen gefunden: Im Captcha Generator (MOPS-2010-004) und im MySQL Driver (MOPS-2010-005), beide Schwachstellen wurden in Version 2009.0.3.1 behoben. In der kurz darauf veröffentlichten Version 2009.0.3.2 wurden alle gleichartigen Code-Segmente im gesamten Sourcecode korrigiert.
Auch in ClanTiger wurde eine SQL-Injection-Schwachstelle gefunden, und zwar im Shoutbox-Modul (MOPS-2010-007). Da sich die Entwickler nicht leicht erreichen lassen, hat Stefan Esser sie nicht über die Schwachstelle informieren können, die daher auch noch nicht behoben wurde.
Die bisher letzte von einer SQL-Injection-Schwachstelle betroffene Anwendung ist DeluxeBB, betroffen ist der 'memberid'-Cookie (MOPS-2010-011). Die Schwachstelle kann nur bei ausgeschaltetem magic_quotes_gpc ausgenutzt werden, was inzwischen die von den PHP-Entwicklern empfohlene Einstellung für die seit PHP 5.3.0 als veraltet geltende Konfigurationsoption ist. Die DeluxeBB-Entwickler wurden parallel zur Veröffentlichung der Schwachstelle über sie informiert, ein Update ist noch nicht vorhanden.
Außer Schwachstellen in PHP und PHP-Anwendungen werden im Rahmen des MOPS auch Tips und Tools veröffentlicht.
Den Anfang macht eine HTML-Version des PHP Web Security Posters der SektionEins GmbH. Vom OWASP wurde eine Beschreibung der Enterprise Security API (ESAPI) for PHP, die Security-Controls bereit stellt, veröffentlicht, und Jakub Vrana hat einen Artikel über 'Context-aware HTML escaping' beigesteuert.
Insgesamt gesehen ist das Ergebnis der ersten Woche als "durchwachsen" zu bezeichnen, zumindest was PHP betrifft: Ein uralte, seit 2007 bekannte und nicht behobene Schwachstelle, drei Schwachstellen im 'call time pass by reference'-Feature, die vorhanden sind, weil es nicht richtig entfernt wurde, und zwei neue Schwachstellen - da haben die Entwickler noch einiges zu tun. Bei den Anwendungen sieht es etwas besser aus: Fünf Schwachstellen in vier Anwendungen, von denen drei bereits behoben wurden, sind kein so schlechtes Ergebnis. Die ClanTiger-Entwickler müssen an ihrer Erreichbarkeit arbeiten, die DeluxeBB-Entwickler wurden etwas überrumpelt und können nun zeigen, wie schnell sie eine Schwachstelle beheben können.
Carsten Eilers