Wiederholt sich die Geschichte? Erneut ist eine sehr gefährliche Schwachstelle in dem weit verbreiteten Content-Management-System Drupal aufgedeckt worden: Drupalgeddon, Version 2.
Ende März meldeten Drupal-Entwickler eine als kritisch eingestufte Sicherheitslücke (CVE-2018-7600), die es entfernten Angreifern erlaubt, komplette Drupal-Webseiten zu übernehmen. Die Entwickler stufen diese Schwachstelle auf einer Gefahrenskala auf 21 von 25 ein.
Drupalgeddon 2 ist nach einer 2014 entdeckten SQL-Injection-Schwachstelle benannt. Diese Drupalgeddon (Version 1) genannte Lücke wurde damals als Stufe 25 klassifiziert. Angreifer konnten ebenfalls ganze Seiten übernehmen.
Ursache der neuen Sicherheitslücke [1] sind Fehler bei der Kontrolle von Benutzereingaben im Zusammenspiel mit Form-API-Anfragen an das System. Dadurch ist ein Angreifer in der Lage, Schadcode in die Drupal-Umgebung einzuschleusen, der diese dann ausführt.
Das Form-API (FAPI) kommt bei allen Drupal-Formularen zum Einsatz, sodass auch nicht angemeldete Angreifer die Schwachstelle ausnutzen dürfen. Beispielsweise kann der Angreifer die Attacke über das E-Mail-Adress-Feld des Registrierungsformulars für neue Benutzer starten. Praktisch alle mit Drupal 7 und 8 gebauten Webseiten sind anfällig für solche Angriffe. Insgesamt sind so geschätzt eine Million Drupal-Installationen gefährdet.
Die Drupal-Entwickler selbst gaben zunächst keine genauen Informationen zur Ursache der Schwachstelle bekannt. Allerdings hat das Sicherheitsunternehmen Checkpoint kurze Zeit später eine erste Analyse des Problems veröffentlicht [2]. Drupal verwendet das FAPI seit Version 6. In Version 7 hielten dann so genannten Renderable Arrays Einzug in den Drupal-Code. Diese Arrays repräsentieren die meisten Elemente des Benutzer-Interface von Drupal.
Die Attacke basiert darauf, ein solches Array in ein Drupal-Formular einzufügen, ohne dass sich der Programmcode beschwert. Hierbei ist es wichtig, dass das entsprechende Formular-Eingabefeld vom Code nicht auf solche fehlerhaften Benutzereingaben kontrolliert wird. Das trifft beispielsweise auf das E-Mail-Address-Feld des Registrierungsformulars zu. Kurze Zeit nach Veröffentlichung der Checkpoint-Analyse erschien ein erster Proof-of-Concept-Exploit auf Github [3]. Er basiert auf dem in der Checkpoint-Analyse diskutierten E-Mail-Feld.
Inspiriert durch den einfachen Exploit-Code nahmen die Angriffe gegen ungepatchte Drupal-Seiten Mitte April und im Mai stark zu. Solche Attacken gegen Drupal hinterlassen Spuren – unter Drupal 8 sehen sie wie folgt aus:
user/register?element_parents=account/mail/%23value&ajax_form=1&_wrapper_format=drupal_ajax (HTTP 200)
Angriffe gegen Drupal 7 hinterlassen Spuren folgender Art in der Logdatei:
?q=user/password&name[%23post_render][]=" + phpfunction + "&name[%23type]=markup&name[%23markup]=" + encoded payload = "form_id=user_pass&_triggering_element_name=name (HTTP 200)
Betreiber von Drupal-Webseiten sollten nach solchen Einträgen suchen.
Ende April haben Drupal-Entwickler eine weitere Schwachstelle im Zusammenhang mit Drupalgeddon 2 (CVE-2018-7602) entdeckt [4]. Über sie können entfernte Angreifer ebenfalls Befehle auf betroffenen Systemen ausführen.
Infos
-
Kritische Lücke: https://www.drupal.org/sa-core-2018-002
-
Analyse: https://research.checkpoint.com/uncovering-drupalgeddon-2
-
Exploit: https://github.com/a2u/CVE-2018-7600/blob/master/exploit.py
-
Zweite Lücke: https://www.drupal.org/sa-core-2018-004





