Kritische Sicherheitslücke in Drupal (Drupageddon) 7.0 bis 7.31

Am 15. Oktober wurde vom Drupal Security Team eine Information zu einer kritischen Sicherheitslücke veröffentlicht: https://www.drupal.org/SA-CORE-2014-005

Nach dieser Information ist es möglich, auf einer Website mit dem Content-Management-System Drupal mit Hilfe einer sogenannten SQL-Injection beliebige Befehle auf der Datenbank auszuführen. Was diese Sicheitslücke so kritisch macht, ist die Tatsache, dass auch anonyme und nicht am System angemeldete Benutzer diese Befehle ausführen können. Mit dem Zugriff auf die Datenbank lassen sich Benutzerdaten manipulieren, Kennwörter setzen, beliebige Inhalte manipulieren oder in diesem Falle leider auch Inhalte auf dem Dateisystem erzeugen - was die Sicherheitslücke besonders kritisch macht.

Wie wurde die Sicherheitslücke entdeckt?

Drupal wird inzwischen unter anderem von vielen großen Firmen und Regierungsorganisationen eingesetzt. Regelmäßig prüft ein internes Drupal Security Team teilweise automatisiert und teilweise manuell Bestandteile des Drupal Kernsystems oder von Zusatzmodulen.

Viele größere Organisationen lassen das System zusätzlich von unabhängigen Security-Analysten prüfen. In diesem Fall wurde die Firma Sektionseins aus Deutschland ebenfalls mit einer unabhängigen Prüfung beauftragt und erkannte dabei diese Sicherheitslücke. Wie üblich, wurde die Sicherheitslücke nicht sofort veröffentlicht, sondern an das interne Security Team gemeldet, so dass ein Update vorbereitet werden konnte. Entsprechend einer korrekten Disclosure Policy, veröffentlichten Drupal.org und SektionEins die Sicherheitslücke erst mit der Bereitstellung eines Sicherheitsupdates und forderten alle Drupal-Nutzer zur Aktualisierung auf. Ein FAQ zur Sicherheitslücke wurde ebenfalls veröffentlicht.

In unserem konkreten Fall erhielten wir die Information zur Sicherheitslücke über den Security-Newsletter am Mittwoch, den 15. Oktober und konnten unsere Kunden-Websites teilweise noch am gleichen Abend aktualisieren. 

Wie sichere ich mein Drupal-System ab?

Mit ein wenig Hintergrundwissen zum Drupal ist es leider auch möglich, mit Hilfe der SQL-Injection und durch das Einfügen von entsprechendem Code in der Datenbank, beliebigen Schadcode auf dem betroffenen System zu platzieren. Damit reicht es nicht aus, die Sicherheitslücke im Drupal zu schließen, da auch Drupal-unabhängiger Code gefunden und bereinigt werden muss.

Der erste Schritt muss sein, sein Drupal auf die derzeit aktuelle Version 7.32 zu aktualisieren. Sollte ein direktes Update nicht möglich sein, kann auch ein Patch (https://www.drupal.org/files/issues/SA-CORE-2014-005-D7.patch) eingespielt werden, um die Lücke kurzfristig zu schließen und später das Systemupdate zu installieren.

Sollte das Drupal Installationsverzeichnis in einem Versionskontrollsystem wie Git oder SVN erfasst sein, sollte zusätzlich geprüft werden, ob neue ausführbare PHP-Dateien erstellt wurden, die evtl. Schadcode enthalten könnten. Sollte das Drupal-Verzeichnis nicht versioniert sein, kann zur Not auch manuell nach neu angelegten Dateien mit einem aktuellen Systemdatum gesucht werden.

Leider gibt es diverse Angriffsvarianten, so dass auch die Drupal-Datenbank geprüft werden muss. Evtl. kann es hier sinnvoll sein, ein korrektes Datenbankbackup wiederherzustellen. Zusätzlich müssen diverse Tabellen auf "verdächtige Einträge" geprüft werden. Als Beispiel sei hier die Tabelle "menu_router" genannt, die keine Befehle wie zum Beispiel "php_eval" oder "file_put_contents" enthalten sollte. Diese Einträge müssen entsprechend korrigiert oder evtl. gelöscht werden.

Zusätzlich sollten soweit möglich, Benutzer und Kennwörter geprüft und ggf. geändert werden.

Die öffentliche Berichterstattung und was lernt die Drupal-Community aus diesem Vorfall?

Natürlich berichten diverse Medienportale wie heise Security oder phpmagazin.de über die Sicherheitslücke. Sicherlich ist dies sinnvoll und informiert auch Benutzer ohne Abonnement des Security-Newsletters. Durch die Prägung von Begriffen wie "Drupageddon" erinnerte die Berichterstattung jedoch leider ein wenig an den üblichen Sensationsjournalismus.

In diversen Foren wurde nun über die Professionalität von Drupal diskutiert und eher philosophisch statt technisch zwischen verschiedenen Systemen verglichen. Oft wurde dabei von "PHP-Frickelei" oder "unprofessioneller Entwicklung" gesprochen.

Leider war der Fehler bereits seit über einem Jahr mit einer recht ungenauen Beschreibung und ohne die weitreichenden Auswirkungen zu erkennen, als Issue auf drupal.org gemeldet. Hier wurde scheinbar der korrekte Meldeweg über das Security Team nicht eingehalten oder war vielleicht nicht bekannt. Zukünftig wird das Security Team bestimmte Tags in den Drupal.org Issue-Queues automatisiert überwachen, um in derartigen Fällen schneller reagieren zu können.

Im Vergleich zu anderen Content Management Frameworks sehen wir Drupal jedoch immer noch als eines der professionellsten Open Source Systeme mit einer der professionellsten Communities an. Durch die Drupal Community gibt es ein Drupal Security Team und somit kontrollierte Meldewege für Sicherheitslücken. Zusätzlich gibt es automatisierte Tests für den Drupal Kern und für Zusatzmodule. Für alle Betreiber von Drupal Websites wird ein Security-Newsletter angeboten, der über bestehende Sicherheitslücken und die entsprechenden Updates informiert.

Insgesamt bietet das Ökosystem rund um Drupal also sehr professionelle Organisations- und Informationsstrukturen, die andere Systeme teilweise nicht bieten können. Daher werden wir auch weiterhin Drupal als Content Management System einsetzen und empfehlen.