Original-URL des Artikels: https://www.golem.de/news/webapplikationen-sicherheitsluecke-in-jquery-plugin-wird-aktiv-ausgenutzt-1810-137254.html    Veröffentlicht: 23.10.2018 11:44    Kurz-URL: https://glm.io/137254

Webapplikationen

Sicherheitslücke in jQuery-Plugin wird aktiv ausgenutzt

Ein jQuery-Plugin erlaubt es, unter bestimmten Bedingungen PHP-Dateien auf den Server zu laden und auszuführen. Das Problem sitzt jedoch tiefer: Viele Webapplikationen bauen auf den Schutz von Apaches .htaccess-Dateien. Der ist jedoch häufig wirkungslos.

Der Mitarbeiter des CDN-Anbieters Akamai Larry Cashdollar entdeckte eine Sicherheitslücke in dem beliebten jQuery File Upload Plugin. Die Lücke in der Software erlaubt das Hochladen beliebiger Dateien, auch PHP-Dateien, mit denen Schadcode ausgeführt werden kann.

Die Lücke wird bereits seit Jahren aktiv ausgenutzt. Eigentlich ist das Plugin über Einstellungen in einer .htaccess-Datei, mit der Einstellungen des Webservers Apache geändert werden können, vor dem Ausführen von PHP-Skripten geschützt. Dieser Schutz funktioniert jedoch in vielen Fällen nicht. Das Problem betrifft auch viele weitere Webapplikationen, die entweder den Code des jQuery File Upload Plugins verwenden oder ebenfalls auf den Schutz durch .htaccess-Dateien setzen.

Das Plugin ist das zweitbeliebteste jQuery-Projekt auf Github, nach jQuery selbst. Es wurde 7.800 mal geforkt. Sein Programmcode findet sich in Hunderten, wenn nicht Tausenden anderen Projekten, darunter Content Management Systems (CMS), Customer Relation Management Systems (CRM), verschiedenen Plugins für Wordpress oder Drupal, Joomla-Komponenten und vielen anderen. Entsprechend viele Systeme sind von der Sicherheitslücke betroffen.

.htaccess bietet nicht immer Schutz

Wie viele andere PHP-Webapplikationen setzte das Plugin auf .htaccess-Dateien, um die Dateien abzusichern. In .htaccces-Dateien können ordner- und dateispezifische Einstellungen für den Apache Webserver festgelegt werden. Das jQuery-Plugin verhindert beispielsweise über eine .htaccess-Datei, dass PHP-Skripte im Kontext der Webseite ausgeführt werden können.

Seit der im November 2010 erschienen Version 2.3.9 des Apache Webservers werden die .htaccess-Dateien allerdings in den Standardeinstellungen nicht mehr beachtet. Das hat zwei einfache Gründe: Zum einen leidet die Performance des Servers, wenn bei jedem Zugriff auf einen Ordner zusätzlich .htaccess-Dateien abgefragt werden müssen, zum anderen können mit den Dateien auch Sicherheitseinstellungen des Servers umgangen werden, was sich zudem von Admins schlecht kontrollieren lässt.

Kurz: Alle Versionen des jQuery File Upload Plugins, die nicht mit einem Apache Webserver mit aktivierter .htaccess-Unterstützung betrieben wurden, waren verwundbar.

<#youtube id="XQAfw8lEIFc">

Der Sicherheitsforscher Cashdollar war jedoch mitnichten der Erste, der die Lücke entdeckte: Auf Youtube lassen sich Tutorials zum Ausnutzen der Sicherheitslücke finden, die bis ins Jahr 2015 zurückreichen. Ein großes Geheimnis war die Lücke also eigentlich nicht, allerdings waren weder Sicherheitsforscher, noch der Entwickler Sebastian Tschan oder einer der zahlreichen Forks auf die Lücke aufmerksam geworden.



Das Problem liegt tiefer



Die Sicherheitslücke in jQuery File Upload Plugin (CVE-2018-9206) wurde mit der Version 9.22.1 geschlossen, alle Versionen davor sind von der Lücke betroffen. Durch die breite Verwendung des Programmcodes dürfte es aber sehr lange dauern, bis ein Großteil der entsprechenden Installationen gefixt ist.

Neben der umfangreichen Softwarepalette, die direkt von der Lücke betroffen ist, gibt es etliche Webapplikationen, die auf .htaccess-Dateien setzen, um Berechtigungsmodelle umzusetzen. So verbieten etliche Webapplikationen den Zugriff auf Dateien und Ordner mittels .htaccess-Dateien. Andere verbieten - ähnlich wie im beschriebenen Fall des jQuery-Plugins - den Upload von bestimmten Dateien oder das Ausführen von PHP- und anderem Programmcode. Dieser Schutz existiert auf vielen Systemen schlicht nicht. Sei es, weil sie mit den Standardeinstellungen des Apache Webservers laufen oder mit anderen Webservern wie Nginx oder Lighttpd betrieben werden.

Ein Beispiel ist die Webapplikation Magento, mit welcher Online-Shops betrieben werden können. Ihre Konfiguration wird in einer .xml-Datei abgelegt, die durch eine .htaccess-Datei abgesichert werden soll. Diese steht mit der Standardkonfiguration des Apache Webservers sowie anderen Webservern offen im Internet. Der Golem.de-Autor Hanno Böck wies die Magento-Entwickler im Juni 2017 auf das Problem hin, erhielt jedoch nie eine Antwort. Bei einem Scan der Alexa Top 1 Million Webseiten Mitte 2017 konnte bei 324 Onlineshops die Konfigurationsdatei ausgelesen werden.

Eine Lösung des Problems ist nicht in Sicht

Auch wenn der Webserver selbst betrieben und die Konfiguration gepflegt wird, können leicht Fehler passieren. So muss bei vielen Installationen von Webapplikationen die zentrale Konfiguration des Webservers angepasst werden und bei jedem Update überprüft werden. Dabei ist oft nicht einmal dokumentiert, welche Einstellungen gesetzt werden müssen. Haben Admins keinen Zugriff auf die Konfiguration und sind .htaccess-Dateien nicht erlaubt, können Webapplikationen häufig nicht sicher betrieben werden.

Ende 2017 stellte die Free Software Foundation (FSF) fest, dass eine Drupal-Backup-Datei ihrer Defective-by-Design-Kampagne öffentlich zugänglich war. Im Rahmen eines Updates hatten die FSF-Admins vergessen, die Verwendung von .htaccess-Dateien in Apache zu aktivieren. Der .htaccess-Schutz des Backups entfiel und die Datei konnte öffentlich eingesehen werden.

Das jQuery File Upload Plugin liefert mittlerweile Sicherheitshinweise und Konfigurationssnippets für Apache und Nginx. Bleibt zu hoffen, dass mehr Webapplikationen ihre Nutzer bei der Installation auf die Konfiguration des Webservers hinweisen. Nutzer, die keinen Zugriff auf die Konfigurationsdateien haben, sind jedoch auch hier außen vor. Die Rechte- und Zugangskonfiguration von Webapplikationen bleibt weiter fragil.  (mtr)


Verwandte Artikel:
Apache-Sicherheitslücke: Optionsbleed bereits 2014 entdeckt und übersehen   
(20.09.2017, https://glm.io/130166 )
Optionsbleed: Apache-Webserver blutet   
(18.09.2017, https://glm.io/130105 )
Drupalgeddon 2: 115.000 Webseiten mit Drupallücken übernommen   
(07.06.2018, https://glm.io/134831 )
Passwörter geleakt: Datenschützer prüft Sanktionen gegen Knuddels   
(11.09.2018, https://glm.io/136501 )
Zero Day: Drupal-Seiten werden angegriffen   
(26.04.2018, https://glm.io/134076 )

© 1997–2020 Golem.de, https://www.golem.de/