38C3: Framework "Phuzz" hilft beim Aufspüren von Fehlern in PHP-Webanwendungen

Mit "Phuzz" sollen sich gezielter als mit anderen Tools Sicherheitslücken in PHP-Webanwendungen aufspüren lassen.

In Pocket speichern vorlesen Druckansicht 4 Kommentare lesen
Sebastian Neef vergleicht die Leistung verschiedener Fuzzing-Tools

(Bild: Sebastian Neef et al., TU Berlin / Screenshot: 38C8/CCC)

Lesezeit: 3 Min.

PHP ist weiterhin die dominierende Programmiersprache im Web, gut Dreiviertel aller Websites basieren auf der Skriptsprache, weil sie PHP-basierte Content-Management-Systeme wie WordPress, Drupal oder Joomla verwenden. Sicherheitslücken in Plug-ins und Themes können Angreifern Zugriff auf sensible Daten ermöglichen. Sebastian Neef, PhD-Student am Lehrstuhl Security in Telecommunications der TU-Berlin, stellte auf dem 38. Chaos Communication Congress (38C3) "Phuzz" vor – ein Coverage-guided Fuzzing-Framework, das speziell auf PHP-Webanwendungen ausgerichtet ist. Es soll sowohl Entwicklern als auch Sicherheitsforschern dabei helfen, Schwachstellen schnell zu finden und zu beheben.

Sicherheitsforscher setzen "Fuzzing" als Technik ein, um Schwachstellen frühzeitig aufzudecken: Programme werden dabei automatisiert mit einer Vielzahl zufälliger Eingaben getestet, um unerwartetes Verhalten und damit potenzielle Sicherheitsrisiken zu entdecken. Bekannte Beispiele sind das von Google entwickelte OSS-Fuzz zum Testen von Open-Source-Software sowie American Fuzzy Lop (AFL) und dessen Ableger AFL++. Im Gegensatz zu diesen Tools, die sich hauptsächlich auf binäre Anwendungen konzentrieren, ist Phuzz speziell für die Anforderungen moderner Webanwendungen konzipiert.

Überblick über die Architektur des "Phuzz"-Frameworks

(Bild: Sebastian Neef et al., TU Berlin)

Das Besondere an Phuzz ist laut Neef der sogenannte "Coverage-guided"-Ansatz: Das Framework analysiert, welche Codebereiche durch die Testeingaben erreicht werden und passt die weiteren Tests entsprechend an. Im Vergleich zu anderen Tools wie webFuzz, CeFuzz, Witcher oder Atropos müsse dafür der Quellcode der getesteten Anwendung nicht verändert werden, so der Entwickler.

Phuzz soll sieben verschiedene Arten von Sicherheitslücken erkennen: SQL Injection, Command Injection, External Entity Injection, Path Traversal, Insecure Deserialization, Cross-Site Scripting und Open Redirection. Für die Instrumentierung nutzt das Framework die Open-Source-Extensions UOPZ, pcov und Xdebug. Durch die Unterstützung von parallelem Fuzzing mit mehreren Instanzen findet Phuzz mehr serverseitige Schwachstellen als herkömmliche "Blackbox-Fuzzer", sagte Neef.

Bei Tests von 183 populären WordPress-Plug-ins mit über 300.000 aktiven Installationen identifizierte Phuzz 1.019 API-Endpunkte und entdeckte mehrere bisher unbekannte Sicherheitslücken, darunter zwei bestätigte "Zero-Day"-Schwachstellen im Popup Builder Plug-in (CSRF Vulnerability) und einem weiteren Plug-in (Local File Inclusion).

Aktuell kann Phuzz nur eingeschränkt mit mehrstufigen und zustandsbehafteten Aktionen umgehen und kann sich mit UOPZ in keine PHP-Expressions (wie eval, include, ...) einklinken. Auch die Performance sei im Vergleich zu binärem Fuzzing noch optimierbar. Neef stellt das Phuzz-Framework als dockerisierte, modulare Open-Source-Software auf GitHub bereit und lädt zum Mitmachen ein.

Mehr Details zur Funktionsweise finden sich in der unter Open Access veröffentlichten Forschungsarbeit und der Aufzeichnung des 38C3-Vortrags.

(vza)