MOPS: 6 Schwachstellen in PHP, 5 in Anwendungen, 3 Tips und Tools
Kommentare

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

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.

Schachstellen in PHP

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.

Schwachstellen in PHP-Anwendungen

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.

Tips und Tools

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.

Fazit

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

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -