Security-Scanner Chorizo
Sichere PHP-Websites

DeveloperIT-ProjekteSicherheitSicherheitsmanagementSoftware

Mayflower hat ein erstes Release seines Security-Scanners Chorizo für PHP auf den Markt gebracht. Der Artikel zeigt, wie Sie damit Angriffspunkte in Ihren PHP-Anwendungen aufspüren.

Unsaubere Programmierung

Security-Scanner Chorizo

Angriffsmöglichkeiten bieten Websites – ganz gleich welche serverseitige Technik zum Einsatz kommt und trotz zunehmender Sensibilisierung in jüngster Zeit – immer noch in zu hohem Maße. Hauptgrund dafür ist unsaubere Programmierung: Ein Problem, das viel häufiger auf Grund von Zeitdruck bei der Entwicklung als wegen unfähiger oder fauler Entwickler entsteht – aber schwerwiegende Konsequenzen nach sich ziehen kann. Zu den bekanntesten Angriffsvarianten auf Web-Anwendungen zählen Cross-Site-Scripting (XSS) und SQL-Injection, also das Einschleusen von Skriptcode oder SQL-Anweisungen. Das Hauptproblem dabei sind ungeprüfte Nutzerangaben. Genau hier greift Chorizo ein: Die Website wird mit mehr oder minder gefährlichen Eingaben beschossen und so auf eine Anfälligkeit hin geprüft.


Konfiguration

Security-Scanner Chorizo

Der Chorizo-Scanner ist eine Software, die über einen Proxy zwischen Website und Client geschaltet wird und somit dem Entwickler ermöglicht, seine in Entwicklung befindlichen Webprojekte surfenderweise einem Sicherheits-Check zu unterziehen. Da sich der Proxy beim Hersteller befindet, wird der gesamte Datentransfer über dessen Server umgeleitet. Dies hat den Nachteil, dass bei vielen gleichzeitigen Anfragen die Performance leiden könnte. Darüber hinaus ist es bestimmt nicht jedem Anwender recht, wenn die Daten seiner Web-Anwendung über fremde Server geschickt werden. Laut Hersteller werden aber diese Daten verschlüsselt abgelegt und sind auch vom Hersteller selbst nicht einsehbar.

Nach der Registrierung auf der Chorizo-Site (www.chorizo-scanner.com) kann der Entwickler die zu prüfende Domain angeben, auf der sich sein Entwicklungsprojekt befindet, und anschließend einen Kontroll-Schlüssel generieren, der in das Wurzelverzeichnis des Webservers kopiert werden muss. Dieses dient einerseits dazu, die Gültigkeit der Lizenz für die gescannten Website sicherzustellen, andererseits aber auch dazu, die Zugriffsverantwortung für den eigenen Server zu überprüfen. Andernfalls wäre dem Scannen beliebiger PHP-Websites und -Projekte wohl bald Tür und Tor geöffnet. Falls Sie diese Sicherheitsmaßnahme vergessen, erinnert Sie das Chorizo-Panel zu gegebenem Zeitpunkt aber auch daran.

Im Anschluss muss im Browser der Proxy eingerichtet werden. Im Firefox gehen Sie dazu über Extras und Einstellungen unter der Registerkarte Allgemein auf Verbindungseinstellungen und wählen die manuelle Proxy-Konfiguration aus. Geben Sie als HTTP-Proxy chorizo-scanner.com mit Port 3128 oder ? falls Sie über eine Firewall oder einen Proxy auf Port 80 limitiert sind ? chorizo-proxy.com mit Port 80 ein und übernehmen diese Einstellung für alle weiteren Protokolle. Im Internet Explorer finden Sie die Konfigurationsmöglichkeiten unter Extras, Internetoptionen unter der Registerkarte Verbindungen. Über die Option Einstellungen gelangen Sie zu einem Fenster, in dem Sie den Proxyserver mittels Häkchen aktivieren und nebst Port eintragen können. Über die Option Erweitert lassen sich die Einstellungen protokollabhängig vornehmen.

Bevor es mit der Sicherheitsanalyse losgeht, empfiehlt es sich, eine Erweiterung wie Quickproxy für Firefox (addons.mozilla.org/firefox/1557) oder den IE Proxy-Changer für Internet Explorer (www.proxychanger.com) zu installieren, so dass über einen Schalter der Proxy schnell an- beziehungsweise ausgeschaltet werden kann und lästiges manuelles Konfigurieren für die Zukunft entfallen kann.


Erste Schritte

Security-Scanner Chorizo

Der erste Aufruf bei aktiviertem Proxy leitet zunächst auf eine Authentifizierungs-Seite um, aber nach der Übergabe von Benutzername und Passwort ist es geschafft: Das Webprojekt kann aufgerufen werden, und sofern alles richtig eingestellt wurde, wird das Chorizo-Panel im Browser eingeblendet – die Suche nach Sicherheitslücken kann beginnen. Einen letzten Hinweis sollten Sie noch beachten: Probieren Sie die Software nicht auf einem Produktionssystem aus, sondern immer nur auf Entwicklungsservern mit vorhandenen Backups. Sonst kann die sorglose Fehlersuche ganz schnell nach hinten losgehen und es Ihnen passieren, dass gefundene Sicherheitslücken im schlimmsten Fall Ihr Webprojekt mit Datenmüll fluten, sollten Sie zum Beispiel ungeprüft Daten aus $_GET, $_POST oder $_COOKIE in der Datenbank ablegen.


Das Chorizo-Panel

Security-Scanner Chorizo

Das Chorizo-Panel verfügt über drei Tabs: Chorizo, Checks und Status. Es lässt sich frei im Browser verschieben. Aber Achtung: Wenn Sie unbedarft oben auf das Logo klicken, um das Panel zu ziehen, landen Sie ganz schnell auf der Chorizo-Website. Dieses ist umso ärgerlicher, wenn Sie grade einen Scan abgeschlossen haben und dann noch einmal von vorn beginnen müssen. Sicherlich werden die Hersteller dieses Verhalten beim nächsten Release ändern.

Zurück zur eigentlichen Funktionalität des Panels: Zunächst ist das Tab Chorizo von Interesse. Hier können Sie die aktuell angezeigte Website direkt auf Sicherheitslücken überprüfen, entweder über Check the current page, Check recursive – je nach Angabe der Rekursionstiefe wird dann internen Verweisen gefolgt und diese Skripts werden ebenfalls gescannt – oder über Activate scanning while browsing, einer Funktion, die das Scannen während der Surfsitzung im Hintergrund betreibt.

Unter dem Tab Checks finden Sie alle bisher vorhandenen Module, die sich jedes für sich genommen einer Sicherheits-Kategorie widmen. Zurzeit bietet Chorizo Module zum Auffinden von XSS-Schwachstellen, Code-Execution, Code-Inclusion, SQL-Injections, Sicherheitslücken in Sessions, PHP-Konfigurations-Fehlern, zum Beispiel die eher harmlose Anzeige von PHP-Eastereggs, und Apache-Risiken. Mit aktiviertem HTTP-Modul lassen sich darüber hinaus Sicherheitslücken in Ajax-Anwendungen aufspüren. Hier spielt die Verwendung eines Proxyservers seine Trümpfe aus, denn anders lassen sich XMLHttpRequests-Anfragen gar nicht ordentlich analysieren.

Nach Angaben des Herstellers wird es in der nächsten Version mit dem Morcilla-Plugin ein weiteres Scan-Feature geben. Dabei handelt es sich um eine Erweiterung für die Zend-Engine, die auf dem zu testenden Server einkompiliert wird und die sich an jede beliebige PHP-Funktion wie mysql_query(), shell_exec(), include() oder require(), fopen() und andere anhängen kann. Ist das Plug-in aktiviert, wird der Callstack an Chorizo aufgedeckt, so dass das Tool noch besser erkennt, ob beispielsweise eine SQL-Injection vorliegt oder nicht. Darüber hinaus kann Chorizo auf diese Weise detailliertere Informationen über die Fehlerursachen ausgeben, etwa den Skriptnamen und die Skriptzeile, in der die Sicherheitslücke gefunden wurde, und somit eine schnellere Beseitigung ermöglichen.

Alle von Chorizo angebotenen Module lassen sich vom Anwender nach Belieben ein- und ausschalten. Wird allerdings nur eine bestimmte Seite ohne Rekursion gescannt, dauert das Abwählen der Checkboxen meist länger als der Scan selbst, so dass im Normalfall getrost alle Module aktiv bleiben können.


Auf Scan geht?s los!

Security-Scanner Chorizo

Nachdem der Scan-Prozess angeworfen wurde, wechselt Chorizo automatisch auf das Status-Tab und zeigt dort den Fortgang sowie das Ergebnis des Scans an. Wurden Sicherheitslücken gefunden, werden diese angezeigt und abhängig von der Version (Standard/Premiu
m) in den Reports samt Ratgeber zur Beseitigung aufgeschlüsselt.

Diese Reports sind ein sehr nützliches Feature des Scanners: Sofern Sie über die Premium-Version verfügen, klicken Sie im Tab Chorizo auf Reports und werden daraufhin auf MyChorizo, das heißt auf Ihren Account auf der Chorizo-Website weitergeleitet und bekommen Berichte für alle durchgeführten Scans angezeigt. Diese stehen im PDF-Format zur Verfügung und zeigen grafisch die Fehlerverteilung und -schwere an. Neben der Übersicht findet sich jeder Fehler in einem druckbaren Formular, welches eine Fehlerbeschreibung samt Lösungsvorschlag enthält. Besonders hervorzuheben ist hierbei der Sicherheitsratgeber, der nicht irgendwelche allgemeinen Lösungsvorschläge macht, sondern explizit auf das im Skript gefundene Problem eingeht. Wurde beispielsweise in der Verarbeitung von $_POST[‘firstname’] eine XSS-Schwachstelle gefunden, dann bezieht sich das Codebeispiel des Ratgebers auch genau auf diese Variable. Somit wird es auch dem nicht so versierten Benutzer schnell ermöglicht, Schwachstellen anhand konkreter Lösungen zu beseitigen.

Die Reports können des Weiteren vom Entwickler mit Bemerkungen versehen sowie nach Beseitigung des Fehlers auch als erledigt markiert werden. Schade, dass diese Unterstützung des Workflows noch der Papierform bedarf und es so zu Medienbrüchen in der Verfolgung der Sicherheitsanalyse kommt. Für zukünftige Versionen des Scanners wird laut Auskunft des Herstellers aber bereits über die Integration in Bugtracker-Systeme wie Mantis (www.mantisbt.org) oder Trac (projects.edgewall.com/trac) nachgedacht.

Der Chorizo-Scanner ist in einer kostenlosen und einer kostenpflichtigen Variante erhältlich. Die Premium-Ausgabe ist zum Einführungspreis von 289 Euro pro Jahr (später 348 Euro) erhältlich und kann bis zu fünf Domains scannen. Die kostenlose Variante ist auf eine Domain limitiert. Darüber hinaus bietet die Premium-Version Report- und Ratgeber-Funktionen, um Hilfe bei der Beseitigung gefundener Sicherheitslücken zu erhalten, sowie eine beliebige Rekursionstiefe beim Scannen.


Fazit

Security-Scanner Chorizo

Der Chorizo-Scanner ist ein Produkt, das die Entwicklung sicherer Web-Anwendungen in PHP effizienter gestalten kann. Statt lästigem manuellen Prüfen testet der Scanner die Anwendung automatisch und generiert zumindest in der kostenpflichtigen Variante aussagekräftige Berichte mitsamt Lösungsvorschlägen, so dass eventuelle Sicherheitslücken auch von weniger versierten Entwicklern beseitigt werden können. Alle Schwachstellen findet aber auch Chorizo nicht, ein manueller Test ist weiterhin notwendig.

Auch darf nicht unerwähnt bleiben, dass Chorizo nicht das erste Produkt seiner Art ist. Neben kommerziellen Produkten wie dem Acunetix Web Vulnerability Scanner (www.acunetix.de) oder der SPI Dynamics? Assessment Management Platform (www.spidynamics.com) gibt es auch einige gute Werkzeuge, die unter einer Open-Source-Lizenz frei erhältlich sind. Wenngleich diese nicht mit einer PHP-spezifischen Reporting- und Ratgeber-Funktion aufwarten, so ersparen sie andererseits oftmals den störenden Umweg über einen Webproxy, da sie einen eigenen Proxy mitbringen, der auf dem Rechner des Testers installiert werden kann, oder erst gar keinen Proxy benötigen. Hierzu zählen beispielsweise das Owasp Webscarab Project (www.owasp.org) oder Paros Proxy (www.parosproxy.org). Eine Liste weiterer Webscanner findet sich bei Insecure.org (sectools.org/web-scanners.html).

Je nach Anspruch und Fähigkeiten sollte der Anwender sich also für das für ihn passende Produkt entscheiden. Chorizos Preise sind im Vergleich zu anderen kommerziellen Produkten günstig, die Ausstattung umfangreich und die Bedienung intuitiv. Wer jedoch auf Ratgeber und Berichte gut verzichten kann oder den Webproxy des Herstellers nicht nutzen möchte, der kann auch bei den kostenlosen und quelloffenen Scannern fündig werden.