JavaScript ist eine der Kerntechniken des modernen Internet, birgt aber auch einige Risiken.
Bösartiger Javascript Code kann aktiv Sicherheitslücken im Browser ausnutzen und den Rechner kompromittieren. Diese Gefahr besteht immer, wenn man Programmcode ausführt.
Im Januar 2013 lieferten die Server des Werbenetzwerkes OpenX bösartige Scripte aus, die den Rechner über Sicherheitslücken im Internet Explorer kompromittierten.
Alle bisher bekannten Exploits von NSA/FBI gegen den TorBrowser nutzten Javascript.
- Forscher der Columbia University haben eine side-channel attack vorgestellt, die komplett als Javascript im Browser läuft: The Spy in the Sandbox -- Practical Cache Attacks in Javascript (PDF). Mit dem Angriff können beliebige Prozesse außerhalb des Browsers analysiert werden ohne den Rechner zu kompromittieren (spurenfrei). Seitenkanalangriffe sind u.a. auch ein moderner Angriff gegen Kryptografie. OpenSSL wurde z.B. 2003 erfolgreich mit der Vaudenay timing attack angegriffen.
- Bösartiger Javascript Code kann sich auch gegen Dritte richten, ohne das der Nutzer es bemerkt. Chinas Great Cannon injiziert Javascript Code beim Aufruf chinesischer Webseiten, um die PCs der Nutzer als Botnet für DDoS-Attacken zu nutzen.
Prinzip Whitelisting
Ein generelles Abschalten ist heutzutage nicht sinnvoll. Ähnlich dem Cookie-Management kann man mit
NoScript JavaScript für vertrauenswürdige Websites zur Erreichung der vollen Funktionalität erlauben, im allgemeinen jedoch deaktivieren. Gute Webdesigner weisen den Nutzer darauf hin, dass ohne Javascript eine deutliche Einschränkung der Funktionalität zu erwarten ist.
Einstellungen für hohe Sicherheitsanforderungen
Just-In-Time Compiler sollen die Ausführung von Javascript beschleunigen. Der Javascript Code wird nicht Anweisung für Anweisung interpretiert sondern vor der Ausführung durch einen Compiler gejagt, der verschiedene Optimierungen vornimmt und das Resultat direkt als Maschinencode ausführt. Das ermöglicht "JIT spraying" Angriffe.
Die zusätzliche Komplexität schafft außerdem zusätzliche Fehlerquellen. Es gab bereits sicherheitskritische Bugs in den JIT-Compilern von von Firefox, beispw.
Bug #160744.
iSEC Partners empfiehlt deshalb in einem Sicherheitsaudit für den TorBrowser, die JIT-Compiler für höhere Sicherheitsanforderungen (mittlerer Sicherheitslevel beim TorBrowser) zu deaktivieren:
javascript.options.baselinejit | = false |
javascript.options.ion | = false |
javascript.options.native_regexp | = false |
Diese Einstellungen können die Performance einiger Webseiten deutlich verringern.