Anzeige
Eine Cross-Site-Scripting-Lücke steckt in einem weit verbreiteten PHP-Codebeispiel.
Eine Cross-Site-Scripting-Lücke steckt in einem weit verbreiteten PHP-Codebeispiel. (Bild: Screenshot)

jQuery: Cross-Site-Scripting in Captcha-Beispielcode weit verbreitet

Eine Cross-Site-Scripting-Lücke steckt in einem weit verbreiteten PHP-Codebeispiel.
Eine Cross-Site-Scripting-Lücke steckt in einem weit verbreiteten PHP-Codebeispiel. (Bild: Screenshot)

Ein populäres jQuery-Plugin liefert Code mit einer Cross-Site-Scripting-Lücke aus. Der verwundbare Code stammt ursprünglich von einem Beispielskript für Captchas, das auf sehr vielen Webseiten zu finden ist.

Anzeige

Der IT-Sicherheitsexperte Sijmen Ruwhof hat eine Cross-Site-Scripting-Lücke (XSS) in einem Beispielcode gefunden, der mit dem jQuery-Validation-Plugin mitgeliefert wird. Der Programmierer des Plugins hat zunächst nicht auf die Kontaktversuche von Ruwhof reagiert, und in der jüngsten Version des Plugins ist der entsprechende Code immer noch vorhanden. Eine Analyse des Problems ergab, dass die Lücke in einem Beispielcode für Captchas steckt, der auf vielen weiteren Webseiten zum Einsatz kommt. An den Entwickler des jQuery-Plugins wurde sie bereits 2011 gemeldet.

Ausgabe von ungefilterter Variable

Das Validation-Plugin für jQuery dient dazu, Benutzereingaben in Formularen clientseitig auf Korrektheit zu prüfen. In einem Unterverzeichnis befinden sich verschiedene Codebeispiele, darunter auch eines für eine Captcha-Eingabe. Zwar dürfte der Demo-Code von den wenigsten Anwendern verwendet werden, aber wer das Plugin installiert, wird vermutlich in der Regel auch die anderen mitgelieferten Dateien entpacken und nicht löschen. In der index.php-Datei des Captcha-Codes wird die Variable $_SERVER['PHP_SELF'] ungefiltert ausgegeben. Diese Variable enthält den Namen des aufgerufenen Skripts. Durch das direkte Anhängen von Javascript-Code an die URL hat man somit eine Cross-Site-Scripting-Lücke. Diese wiederum kann beispielsweise dazu genutzt werden, um Session-Cookies des Nutzers einer Webseite zu klauen, die das entsprechende Plugin installiert hat.

Ruwhof hatte die Lücke im August an den Entwickler des Validation-Plugins gemeldet und darauf keine Antwort erhalten. Auch weitere Kontaktversuche blieben erfolglos, im November wandte er sich direkt an das jQuery-Projekt. Auch dort erhielt er keine Antwort. Eine Suche ergab dann, dass bereits 2011 ein entsprechender Eintrag im Github-Bugtracker des Projekts erstellt wurde. Dort standen zwar keine Details zur Lücke, es ließ sich aber aus dem Kontext schließen, dass es wohl um dasselbe Problem ging. Der Entwickler des jQuery-Validation-Plugins schrieb dort, dass die Lücke keine große Sache sei und man den entsprechenden PHP-Beispielcode am besten entfernen sollte. Nur: Passiert ist das bis heute nicht. Auch die jüngste Version 1.13.1 liefert den entsprechenden Code noch mit.

Lücke bereits mehrfach entdeckt

Einen weiteren Hinweis auf die Lücke findet man in der Open Source Vulnerability Database (OSVDB). Dort wurde 2013 ein Eintrag erstellt. Offenbar wurde das Problem also schon mehrfach unabhängig voneinander gefunden. Ein Fix für die Lücke wurde jetzt, einige Stunden nach der Veröffentlichung von Ruwhof, im Github-Code des Validation-Plugins eingepflegt.

Doch das ganze Problem hat offenbar noch größere Ausmaße: Der verwundbare Code wurde nicht vom Autor des jQuery-Plugins selbst geschrieben, sondern offenbar von einer anderen Webseite übernommen. Die Webseite ist nicht mehr online, über Wayback Machine lässt sich jedoch eine alte Version der Seite samt Download-Möglichkeit für den Captcha-Code aufrufen. Dieser Beispielcode wurde offenbar nicht nur von dem fraglichen jQuery-Plugin übernommen. Ruwhof fand mittels Google einige tausend Webseiten mit dem entsprechenden Code.

Zuletzt suchte Ruwhof noch nach Codestücken, die in ähnlicher Weise direkt die Variable $_SERVER['PHP_SELF'] direkt an den Nutzer ausgaben. Diese Suche brachte hunderttausende Ergebnisse. Der PHP-Code von Webseiten ist üblicherweise nicht direkt sichtbar, daher handelt es sich bei den Fundstücken um Quellcodes oder Codebeispiele aus Foren. Es dürfte jedoch klar sein, dass ziemlich viele Seiten von Cross-Site-Scripting-Lücken dieser Art betroffen sind.

Chrome und Internet Explorer filtern Reflective XSS

Cross-Site-Scripting-Lücken sind in Webanwendungen weit verbreitet. Bei der hier vorgestellten Lücke handelt es sich um eine sogenannte Reflective-XSS-Lücke. Chrome und der Internet Explorer haben einen Filter für derartige Lücken, somit lässt sie sich dort nicht ausnutzen. In Firefox gibt es bislang keinen derartigen Filter. Eine generelle Schutzmaßnahme zur Vermeidung von Cross-Site-Scripting ist die Header Content-Security-Policy. Die wird aber bislang nur von wenigen Webseiten eingesetzt.


eye home zur Startseite
Jakelandiar 20. Nov 2014

Ok das könnte bei dummen usern gehen wo so ein link nicht auffällt. Aber bei solchen...

Patrick Bauer 20. Nov 2014

"Javascript ist seit HTML5 in allen Browsern gleich und hat die gleichen Methoden und...

violator 19. Nov 2014

Na dann sag das mal deinem Chef und dem Kunden, dass das alles länger dauert als bei...

rz70 19. Nov 2014

k.T.

Kommentieren



Anzeige

  1. Softwareentwickler (m/w) User Interface / Datenbasis
    ROHDE & SCHWARZ GmbH & Co. KG, München
  2. Softwareentwickler für sicherheitsgerichtete Systeme in der Intralogistik (m/w)
    SEW-EURODRIVE GmbH & Co KG, Bruchsal
  3. IT Domain Architect (m/w) für Business Architecture und Design
    Allianz Managed Operations & Services SE, München
  4. Architect Microsoft Exchange / Lotus Notes (m/w)
    T-Systems International GmbH, Leinfelden-Echterdingen, Bonn, Bremen, Hamburg, München

Detailsuche



Anzeige

Folgen Sie uns
       


  1. Battlefield 1 angespielt

    Zeppeline, Sperrfeuer und die Wiedergeburts-Spritze

  2. Förderung

    Telekom räumt ein, dass Fiber-To-The-Home billiger sein kann

  3. Procter & Gamble

    Windel meldet dem Smartphone, wenn sie voll ist

  4. AVM

    Routerfreiheit bringt Kabel-TV per WLAN auf mobile Geräte

  5. Oculus App

    Vive-Besitzer können wieder Rift-exklusive Titel spielen

  6. Elektroauto

    Supersportwagen BMW i8 soll 400 km rein elektrisch fahren

  7. Keine externen Monitore mehr

    Apple schafft Thunderbolt-Display ersatzlos ab

  8. Browser

    Safari 10 soll auch auf älteren OS-X-Versionen laufen

  9. Dota

    Athleten müssen im E-Sport mehr als nur gut spielen

  10. Die Woche im Video

    Superschnelle Rechner, smarte Zähler und sicherer Spam



Haben wir etwas übersehen?

E-Mail an news@golem.de


Anzeige
Telefonabzocke: Dirty Harry erklärt mein Windows für kaputt
Telefonabzocke
Dirty Harry erklärt mein Windows für kaputt
  1. Security Ransomware-Bosse verdienen 90.000 US-Dollar pro Jahr
  2. Security-Studie Mit Schokolade zum Passwort
  3. Festnahme und Razzien Koordinierte Aktion gegen Cybercrime

Autotracker Tanktaler: Wen juckt der Datenschutz, wenn's Geld gibt?
Autotracker Tanktaler
Wen juckt der Datenschutz, wenn's Geld gibt?
  1. Ubeeqo Europcar-App vereint Mietwagen, Carsharing und Taxis
  2. Rearvision Ex-Apple-Ingenieure entwickeln Dualautokamera
  3. Tod von Anton Yelchin Verwirrender Automatikhebel führte bereits zu 41 Unfällen

Zenbook 3 im Hands on: Kleiner, leichter und schneller als das Macbook
Zenbook 3 im Hands on
Kleiner, leichter und schneller als das Macbook
  1. 8x Asus ROG 180-Hz-Display, Project Avalon, SLI-WaKü-Notebook & mehr
  2. Transformer 3 (Pro) Asus zeigt Detachable mit Kaby Lake
  3. Asus Zenbook Flip kommt für fast 800 Euro in den Handel

  1. Was, nur 200Mbit??

    melaw | 05:42

  2. Re: Phänomen SUV

    Johnny Cache | 05:21

  3. Re: Skins für Echtgeld sind doch echt bescheuert

    bentol | 03:40

  4. Re: Ich versteh gerade nur Bahnhof

    bentol | 03:24

  5. Re: Automatische Waffen beim WW1?

    teddybums | 02:38


  1. 15:00

  2. 10:36

  3. 09:50

  4. 09:15

  5. 09:01

  6. 14:45

  7. 13:59

  8. 13:32


  1. Themen
  2. A
  3. B
  4. C
  5. D
  6. E
  7. F
  8. G
  9. H
  10. I
  11. J
  12. K
  13. L
  14. M
  15. N
  16. O
  17. P
  18. Q
  19. R
  20. S
  21. T
  22. U
  23. V
  24. W
  25. X
  26. Y
  27. Z
  28. #
 
    •  / 
    Zum Artikel