Prinzipiell handelt es sich bei JavaScript um eine Computersprache mit sehr eingeschränkten Berechtigungen. Die Skriptsprache erlaubt es im Wesentlichen, …
- das aktuelle Browser-Fenster über DOM (Document Object Model) zu manipulieren,
- neue Browser- oder Dialogfenster zu öffnen,
- Seitenelemente zu animieren, ein- und auszublenden oder in ihrer Gestaltung zu verändern,
- Eingabewerte zu validieren,
- Ajax nachzuladen,
- Informationen über die Lesegewohnheiten und Browsing-Aktivitäten des Benutzers an andere Webseiten zu übertragen.
Dabei erhält JavaScript lediglich Zugriff auf die Cookies des Internetnutzers und andere für Webseiten reservierte Datenspeicher. Zugriff auf die Festplatte des Browser-Nutzers erlangt ein Webseitenbetreiber über JavaScript nicht. Mit der Skriptsprache lassen sich somit auf dem Rechner weder Bibliotheken aufrufen noch Folgeprogramme starten. Sichergestellt wird dies durch das sogenannte Sandbox-Prinzip, das den Einflussbereich von Skripten auf das jeweilige Browser-Fenster beschränkt, in dem JavaScript ausgeführt wird.
Nichtsdestotrotz bietet JavaScript damit immer noch einen gewissen Spielraum für Manipulation. Ein missbräuchlicher Einsatz von JavaScript ermöglicht es beispielsweise:
- Informationen über den Browser oder das Betriebssystem eines Internetnutzers auszulesen, um dessen Internetverhalten aufzuzeichnen oder Sicherheitslücken auszuloten (z. B. veraltete Plug-ins),
- unzählige Pop-up-Fenster zu öffnen, um den Rechner des Internetnutzers lahm zu legen (Denial of Service, kurz DoS),
- bösartigen Code zu verschleiern,
- Webseiten vertrauenswürdiger Anbieter im Rahmen von Phishing-Attacken zu simulieren.
Hinzu kommt, dass Programmfehler mitunter erst zur Laufzeit eines Skripts auf dem Rechner des Anwenders zum Tragen kommen.
Das zentrale Sicherheitsrisiko ist jedoch weniger die Skriptsprache als vielmehr der jeweilige JavaScript-Interpreter im Browsers. Ist dieser fehlerhaft, entsteht eine Sicherheitslücke, die umgehend geschlossen werden muss. Nur so lässt sich sicherstellen, dass Skripte isoliert in der Sandbox ablaufen und keinen Einfluss auf andere Programme oder das zugrundeliegende System nehmen können.