viperagp - stock.adobe.com

Drive-by-Attacken und Co.: JavaScript und die Security

Werden Nutzer auf eine entsprechend präparierte Webseite gelockt, kann das System ohne weiteres Zutun des Anwenders infiziert werden. Hier die Hintergründe und Tipps zum Schutz.

Für die meisten Nutzer dürfte JavaScript nur ein weiteres „Anhängsel“ auf den Webseiten sein, die sie im Browser öffnen. Und für die IT-Profis, deren Arbeitsumfeld sich nicht hauptsächlich um Programmierung dreht, ist JavaScript zumeist eher eine Randerscheinung.

Dabei ist JavaScript in der Zwischenzeit weitaus mehr, als nur eine Skriptsprache für dynamisches HTML – wofür sie ursprünglich mal von Netscape entworfen und eingesetzt wurde.

JavaScript hat sich in den letzten Jahren zusammen mit CSS und HTML zu einer der Kerntechniken für die Erstellung von Webinhalten entwickelt. Es handelt sich dabei um eine vollständige, objektorientierte Programmiersprache, deren Funktionen problemlos in Webseiten eingebettet werden können.

JavaScript != Java: Die Unterschiede sind wichtig

Administratoren und IT-Mitarbeiter, die ihre Nutzer versuchen, auf die Gefährdung durch JavaScript hinzuweisen, bekommen häufig zur Antwort: „Ja, aber ich habe doch kein Java auf meinem System installiert, da kann doch nichts passieren.“ Die Namensähnlichkeit mit der ursprünglich von Sun Microsystems entwickelten (und jetzt von Oracle verwalteten) Programmiersprache Java führt leider leicht zu dieser Verwechslung. Sowohl Java als auch JavaScript arbeiten zwar objektorientiert und haben „Java“ im Namen, aber darin erschöpft sich die Ähnlichkeit zu einem Großteil: Es handelt sich um zwei unterschiedliche Plattformen.

Ein Browser oder ein Windows-System benötigen keine zusätzlichen Programme oder Bibliotheken, um JavaScript-Programme auszuführen. Auch als Teil von PDF-Dateien kann ausführbarer JavaScript-Code auf die Systeme gelangen und dann dort vom PDF-Betrachter ausgeführt beziehungsweise zu Ausführung an das Betriebssystem übergeben werden.

Grundsätzlich ist es Entwicklern von Webseiten mit Hilfe von JavaScript möglich, jeden möglichen Programmcode auszuführen, wenn ein Nutzer die entsprechende Webseite besucht. Das muss grundsätzlich nichts Schlechtes sein, so gibt den Entwickler sehr viele Möglichkeiten: Ruft der Nutzer eine Webseite auf, so werden automatisch verschiedene JavaScript-Dateien (mit der Endung .js) heruntergeladen und ausgeführt.

Das geschieht direkt im Browser oder aber über den Skript-Host (Wscript oder Cscript) des Windows-Systems – wobei dies dann auch ohne Unterstützung des Browsers möglich ist. Durch diese kleinen Programme können viele Seiten überhaupt erst genutzt werden: JavaScript führt die verschiedensten Aufgaben wie die Bereitstellung von ausfüllbaren Formularen oder die Möglichkeit, Dateien von einer Webseite herunterzuladen, bereit. Einige Webseiten regeln die komplette Darstellung mittels dieser Technik, so dass Nutzer, die JavaScript im Browser blocken, nur eine weiße Seite und die lapidare Meldung, sie mögen doch bitte JavaScript zulassen, zu sehen bekommen. Wie alle Softwaretechniken, kann leider aber auch diese zu schädlichen Zwecken ausgenutzt werden.

Kein Klicken notwendig – Drive-by-Attacken und weitere Angriffe

Für den Angreifer, der eine Schadsoftware auf dem Rechner des Nutzers installieren möchte, gibt es diverse Methoden, diese „zum Nutzer zu bringen“. Die bewährte Methode, infizierte Anhänge oder Links zu infizierten Dateien per Mail zu versenden, sollte in der Zwischenzeit zumindest einem Großteil der Nutzer bekannt und somit weniger erfolgreich sein.

Viel besser ist es da doch aus Sicht des Angreifers, wenn der Nutzer eine Mail mit einem Link zu einer bekannten Seite erhält, die grundsätzlich unverdächtig ist. Wurde diese jedoch zuvor kompromittiert, so werden eben auch infizierte JavaScript-Dateien heruntergeladen und durch den Browser ausgeführt. Der Nutzer muss dazu auf keiner Weise mithelfen – ein Klick oder gar ein aktiver Auftrag zum Download ist nicht notwendig.

In vielen Fällen wird die Skript-Datei dann im Hintergrund den Internet-Datenverkehr zu einem Exploit-Server umleiten, wo dann ein entsprechendes Exploit-Kit den Rechner auf Angriffspunkte hin untersucht. Wurde ein Angriffspunkt, eine Schwachstelle oder auch eine nicht gepatchte Lücke gefunden, dann hat das Exploit-Kit vielfach Zugriff auf Systemfunktionen mit Administrator-Rechten und kann entsprechende Malware auf das System nachladen.

Drive-by-Attacke via JavaScript: Es gibt noch viele andere Möglichkeiten, den Rechner eines Nutzers zu kompromittieren, wenn er eine Webseite besucht. Diese Skizze soll verdeutlich, wie einfach es prinzipiell sein kann, Schadcode zu installieren, ohne dass der Nutzer auch nur einen Klick ausführt.
Abbildung 1: Drive-by-Attacke via JavaScript: Es gibt noch viele andere Möglichkeiten, den Rechner eines Nutzers zu kompromittieren, wenn er eine Webseite besucht. Diese Skizze soll verdeutlich, wie einfach es prinzipiell sein kann, Schadcode zu installieren, ohne dass der Nutzer auch nur einen Klick ausführt.

Dieser Ablauf funktioniert natürlich nicht nur mit JavaScript – Drive-by-Downloads sind mit Hilfe einer ganzen Reihe von Techniken machbar. Doch dadurch, dass diese Programmiersprache in Webumgebungen so omnipräsent ist und sich Nutzer und leider auch Systembetreuer der Gefahr nicht bewusst sind, ist sie ein ideales Werkzeug, um solche Angriffe auszuführen. Wer auf der Seite w3techs.com nachsieht, wird feststellen, dass aktuell 95 Prozent aller Webseiten im Internet JavaScript einsetzen. Infektion und Ausführung sind beim Einsatz von JavaScript komplett unsichtbar für den Nutzer, der ja zudem „nichts getan“ hat – er hat nichts aktiv heruntergeladen und auch auf keine ausführbare Datei geklickt.

JavaScript-Dateien können aber durchaus auch auf anderen Wegen auf die Rechner der Nutzer gelangen. So können entsprechende Skripte auch in versteckten iFrames integriert werden, die der Nutzer nicht einmal sieht, wenn er die Webseite aufruft. Die JavaScript-Dateien werden im Normalfall natürlich trotzdem ausgeführt. Auch in Online-Banner, deren Anzeige ja von vielen kommerziellen Webseiten mit aggressiven Methoden, die den Einsatz von Schutzmaßnahmen gegen JavaScript und ähnliche Techniken verhindern sollen, entsprechend unterstützt wird, können entsprechende JavaScript-Dateien eingebettet werden. Schließlich bleibt noch die „klassische“ Möglichkeit, JavaScript-Dateien als Attachment zu versenden, dass dann direkt vom entsprechenden Windows-Host ausgeführt wird.

Was kann helfen? Möglichkeiten für den Schutz

Die erste Möglichkeit, die Verbreitung von JavaScript-Dateien via Browser zu unterbinden, besteht darin, die Einstellungen des jeweiligen Browsers so zu konfigurieren, dass JavaScript nicht ausgeführt wird oder dass der Browser wenigstens eine Nachfrage anzeigt, wenn JavaScript zur Ausführung kommt.

Leider sind die Anbieter der Browsersoftware hier keine allzu große Hilfe: Wer beispielsweise den Firefox-Browser in der aktuellen Version 58 (Quantum) verwendet, wird im Menü Einstellungen vergeblich nach einer Möglichkeit suchen, die Unterstützung von JavaScript abzuschalten oder gar einzelne Webseiten gezielt auszuwählen. Mozilla bezeichnet JavaScript in der Dokumentation einfach als standardmäßig aktiviert. Mit about:config kann die Einstellung dennoch geändert werden, in dem der Toggle-Schalter bei javascript.enabled auf den Wert false gesetzt wird. Googles Chrome bietet immerhin bei den erweiterten Einstellungen des Browsers noch eine Möglichkeit, JavaScript generell zuzulassen oder zu blocken, beziehungsweise auch einzelne Seiten auf eine White- oder Blacklist zu setzen.

Eine kleine, aber wichtige Einstellung: Administratoren sollten darauf achten, dass auf den Systemen der Nutzer die Anzeige für die Dateinamenerweiterung im Explorer eingeschaltet ist. So lassen sich Skript-Dateien deutlich schneller erkennen und finden.
Abbildung 2: Eine kleine, aber wichtige Einstellung: Administratoren sollten darauf achten, dass auf den Systemen der Nutzer die Anzeige für die Dateinamenerweiterung im Explorer eingeschaltet ist. So lassen sich Skript-Dateien deutlich schneller erkennen und finden.

Für den praktischen Einsatz ist das eher unhandlich beziehungsweise auch nicht ausreichend. Hier können dann wirklich nur Lösungen wie das Firefox-Addon NoScript oder ScriptSafe (steht für Google Chrome und Mozilla Firefox zur Verfügung) helfen.

Auch Mozilla empfiehlt unter dem Stichwort „JavaScript“ den Einsatz solcher Tools. Allerdings verlangen sie eine entsprechende Konfiguration für die verschiedenen Webseiten. Die Standardeinstellungen von NoScript rufen beispielsweise auf populären Webseiten sofort die Blockade samt Meldung, man möge doch den „Add-Blocker“ ausschalten: Das ist nicht nur falsch, sondern vom Standpunkt der Sicherheit her auch alles andere als ideal. Hier zeigt sich wieder einmal, dass sicherheitsbewusste Nutzer grundsätzlich größeren Aufwand treiben müssen. 

Eine weitere, nützliche Vorsichtsmaßnahmen: Dateien mit der Endung
Abbildung 3: Eine weitere, nützliche Vorsichtsmaßnahmen: Dateien mit der Endung

Schließlich möchten wir noch eine Regel erwähnen, die ebenfalls nicht neu ist, aber gerade im Zusammenhang mit der Tatsache, dass JavaScript-Dateien auch direkt unter Windows ohne Mithilfe des Browsers ausgeführt werden können, wieder einmal an Bedeutung gewinnt.

Administratoren sollten ihre Nutzer dazu anhalten, im Explorer unbedingt die Anzeige der Dateinamenerweiterungen einzuschalten, die auch unter Windows 10 nach wie vor nach der Installation nicht aktiviert ist. Auf diese Weise lassen sich die JavaScript-Dateien leichter und schneller erkennen. Zudem sollten sich in den Einstellungen für die Standard-Apps die entsprechenden Dateiendungen „.js“ und „.JSE“, die dort standardmäßig mit dem Windows Script Host verknüpft sind, auf eine Verknüpfung mit einem Editor umstellen.

So führt ein versehentlicher Doppelklick auf eine solche Skript-Datei dazu, dass sie zunächst nur angezeigt und nicht gleich ausgeführt wird – was besonders folgenreich sein kann, wenn der Nutzer Administrator-Rechte besitzt.

Fazit: Nicht per se gefährlich – kann aber für Angriffe genutzt werden

Soll man nun grundsätzlich auf den Einsatz von JavaScript verzichten? Das wird in der Praxis wohl schlecht möglich sein: Jede IT-Abteilung, die ihre Nutzer dazu bringen wollte, JavaScript beispielsweise in den Browsern komplett zu blocken, würde wenn nicht einen Aufruhr, dann doch einen starken Anstieg der Supportanrufe verzeichnen. Zu viele der kommerziellen Webseiten setzen nicht nur bei Menüs ihrer Portale auf diese Skriptsprache. Manche Seiten präsentieren sich auch komplett leer mit dem lapidaren Hinweis, dass Nutzer dieses Angebot ohne JavaScript nicht nutzen könnten.

Nun sollte dieser Artikel aber nicht den Eindruck vermitteln, dass es grundsätzlich gefährlich sei, JavaScript zuzulassen oder einzusetzen. Administratoren sollten allerdings dafür sorgen, dass sich die Nutzer der möglichen Gefahren bewusst, die durch diese Programmiersprache entstehen können. Sie müssen entsprechende Schutzmaßnahmen in ihren Browsern ergreifen, wozu es gehört, JavaScript grundsätzlich eben nicht generell zu erlauben. Zudem sollten Admins darauf achten, dass keine unbekannten Dateien mit einer .js-Endung ungeprüft auf ihren Systemen ausgeführt werden können.

Folgen Sie SearchSecurity.de auch auf Twitter, Google+, Xing und Facebook!

Nächste Schritte

Windows 10: Best Practices für mehr Sicherheit

BSI: Mindeststandard für sichere Webbrowser

Wie JavaScript für einen Angriff gegen ASLR genutzt wird

Erfahren Sie mehr über Anwendungs- und Plattformsicherheit