Donnerstag, 24. Mai 2012


Topthema

Freitag, 21. Mai 2010 | Topthema

Month of PHP Security: Neue Schwachstellen aufgetaucht

(Link zum Artikel: http://www.entwickler.de/php//055566)
  • Teilen
  • kommentieren
  • empfehlen
  • Bookmark and Share

Auch die dritte Woche des Month of PHP Security (oder kurz MOPS) ist schon fast vorbei. In der ersten und zweiten Woche wurden bereits vierzehn Schwachstellen in PHP und neun in PHP-Anwendungen veröffentlicht, dazu gab es sechs "Tips und Tools". In dieser Woche neu dazu gekommen sind acht Schwachstellen in PHP, vier in PHP-Anwendungen und ein Text.

Schachstellen in PHP

Los ging es mit einigen von Stefan Esser entdeckten Formatstring-Schwachstellen in der phar-Erweiterung von PHP 5.3 bis einschließlich der aktuellen Version 5.3.2. Betroffen sind die internen Funktionen phar_stream_flush() (MOPS-2010-024), phar_wrapper_open_dir() (MOPS-2010-025), phar_wrapper_unlink() (MOPS-2010-026), phar_parse_url() (MOPS-2010-027) und phar_wrapper_open_url() (MOPS-2010-028). In PHP-Installationen ohne installiertem Suhosin-Patch können die Schwachstellen zum Ausführen von Code ausgenutzt werden, ansonsten ist das Ausspähen von Speicherbereichen möglich.

Auch für die Schwachstellen im 'call time pass by reference'-Feature, die das Ausspähen von Speicherbereichen erlauben, gab es Nachschub: Die Schwachstellen können auch durch durch die Funktionen iconv_mime_decode() (MOPS-2010-032), iconv_substr() (MOPS-2010-033) und iconv_mime_encode() (MOPS-2010-034) ausgenutzt werden. Betroffen sind PHP 5.2 bis einschließlich der aktuellen Version 5.2.13 und PHP 5.3 bis einschließlich der aktuellen Version 5.3.2. Das grundlegende Problem wurde von Stefan Esser auf der Konferenz 'BlackHat USA 2009' vorgestellt (Präsentation und Paper als PDF). Die Entwickler haben versucht, das betroffene Feature zu entfernen, waren aber nur mäßig erfolgreich.

Schwachstellen in PHP-Anwendungen

Bei den PHP-Anwendungen war zuerst CMSQlite an der Reihe: Im Rahmen des 'SQL Injection Marathon' hat Stefan Esser auch eine SQL-Injection-Schwachstelle gefunden (MOPS-2010-029), außerdem ist er noch auf eine Local File Inclusion gestoßen (MOPS-2010-030). Betroffen ist CMSQlite bis einschließlich Version 1.2. Die Entwickler wurden von ihm nicht über die Schwachstellen informiert, es gibt auch noch keinen Patch.

Die nächste betroffene Anwendung war e107. Auch hier wurde Stefan Esser im Rahmen des 'SQL Injection Marathon' fündig (MOPS-2010-031), betroffen sind alle Versionen bis zur aktuellen 0.7.20. Die Entwickler haben versucht, die Schwachstelle mit einem Patch zu korrigieren, waren dabei aber nicht besonders erfolgreich, so dass Stefan Essers Exploit nach einigen Anpassungen weiterhin funktioniert. Inzwischen gibt es einen weiteren Patch, warten wir mal auf einen Kommentar von Stefan.

Und auch die nächste vorgestellte Schwachstelle in e107 wurde von Stefan Esser gefunden: e107 erlaubt es, über den BBCode "[php]" PHP-Code einzufügen. Die Zugriffskontrolle für diese Funktion ist falsch implementiert und erlaubt nicht authentifizierten Benutzern die Ausführung beliebigen PHP-Codes (MOPS-2010-035). Stefan hat die Entwickler über die Schwachstelle informiert, bisher gibt es jedoch keinen Patch. Er empfiehlt, den [php]-BBCode durch eine Änderung der Datei /e107_files/bbcode/php.bb komplett unbrauchbar zu machen.

Ein neuer Tip, keine neuen Tools

Außer den Schwachstellen in PHP und PHP-Anwendungen wurde ein weiterer Artikel veröffentlicht: Im sechsten externen Beitrag beschreibt Jakub Vrana die Initialisierung von Variablen.

Nachträge zu dem vorigen Wochen

Aus der ersten Woche ist eine SQL-Injection-Schwachstelle in ClanTiger offen geblieben, und daran hat sich anscheinend nichts geändert. Ob die SQL-Injection-Schwachstelle in DeluxeBB wie vermutet behoben wurde, steht immer noch nicht fest. Die einzige aus der zweiten Woche noch offene Schwachstelle, eine SQL-Injection-Schwachstelle in Cacti, wurde in Version 0.8.7f behoben.

Fazit

Für die PHP-Entwickler gibt es reichlich Arbeit: Insgesamt 22 Schwachstellen warten inzwischen darauf, behoben zu werden. Bei den Anwendungen sieht es wie schon in den Vorwochen besser aus. Abgesehen von der immer noch offenen Schwachstelle in ClanTiger aus der ersten Woche wurden alle Schwachstellen bis auf die in in der aktuellen Woche vorgestellten behoben, und zumindest die e107-Entwickler sollten die Schwachstellen eher früher als später in den Griff bekommen. Dann bleiben aus der aktuellen Woche nur die zwei Schwachstellen in CMSQLite übrig, die noch auf einen Patch warten.

Carsten Eilers

Kommentare

Gravatar Kevin 21.05.2010
um 19:41 Uhr
Was für eine Sauerei. Der sucht also nach Sicherheitslücken und verhält sich wie ein Skript Kiddie. Veröffentlicht die Sachen zum eigenen Ruhm, ohne den Entwicklern die Chance zu geben die Sachen zu fixen.
Da kann ich nur sagen: Pfui, jeglichen Respekt verloren.
#zitieren
Gravatar Jens-André Koch 21.05.2010
um 20:03 Uhr
Die systematische Suche nach Sicherheitslücken und den Offenlegung kann wohl kaum mit dem Verhalten eines Script Kiddies verglichen werden. Auch Kritik an der Art und Weise der Veröffentlichung ist unberechtigt. Die Entwickler werden eigens angeschrieben und haben sehr wohl die Chance die Fehler zu bereinigen. Aber ob sich die Entwickler auch so verhalten oder lieber Ihre User verunsichern (siehe Clantiger) hängt nur von Ihnen selbst ab. #zitieren
Gravatar von Both 14.07.2010
um 16:24 Uhr
Ich bin der Entwickler von CMSQLite.
1. Ich finde es gut, wenn Anwendungen auf Sicherheitsmängel getestet werden.
2. Ich bin leider NICHT informiert worden!!!!
Da ist definitv Nachholbedarf vorhanden.
#zitieren
Gravatar Stefan Esser 19.07.2010
um 10:33 Uhr
Jeder der rumheult er wäre nicht benachrichtigt worden, sollte sich mal fragen: wie schwer/aufwändig es ist Sicherheitslücken für das eigene Projekt zu reporten.

1) Gibt es eine security@ e-mail Adresse? Wird diese auch gelesen? Ist diese auf der Webseite auch announced?

2) Gibt es ein Kontaktformular auf der Webseite, welches aber ignoriert wird?

3) Oder muss man sich erst für ein Forum registrieren um dann die Chance zu haben den Bug öffentlich ins Forum zu posten, oder stundenlang versuchen zu analysieren, wer nun der Entwickler ist um ihm eine private Mitteilung zu senden?

4) Sicherheitslücken entstehen nicht indem man sie reported, sondern indem man sie programmiert. Das heißt nur weil offensichtliche Sicherheitslücken (die in weniger als 30 Minuten zu finden sind) irgendwo publik gemacht werden entsteht dadurch nicht mehr oder weniger Risiko für die Nutzer. Das Risiko steigt eher mit jedem Download der Software.
#zitieren

Folgende Links könnten Sie auch interessieren