Login
Newsletter
Werbung

Fr, 17. August 2018, 16:09

Software::Web

Die Sicherheit von WebAssembly jetzt und in Zukunft

Natalie Silvanovich von Googles Project Zero hat in einem Artikel die Probleme und die Versprechen von WebAssembly untersucht. Relativ wenige Sicherheitslücken und Fehler wurden gefunden, doch neue Funktionalität in WebAssembly könnte neue Lücken aufreißen.

Natalie Silvanovich gehört zum Project Zero, einem Team bei Google, das wichtige Software auf Sicherheitslücken untersucht. Wie sie jetzt schreibt, fand das Team bei der Untersuchung mehrerer Webbrowser mehrere Sicherheitslücken in WebAssembly, von denen einige auch fast gleichzeitig von anderen Teams gefunden wurden.

WebAssembly ist ein Format, das es ermöglicht, Code, der wie Assembler aussieht, mit JavaScript auszuführen. Es wurde in der letzten Zeit in allen vier bedeutenden Webbrowsern implementiert, womit wohl Firefox, Chrome, Microsoft Edge und Webkit-basierte Browser wie Safari gemeint sind. WebAssembly ist Teil der jeweiligen JavaScript-Engine und kann von dieser ohne den Zeitverlust durch Interpretation oder JIT-Compilierung ausgeführt werden. Es stellt also letztlich den Bytecode eines bereits compilierten Programms dar. Da WebAssembly standardisiert ist, kann es auf jedem Browser, der es unterstützt, in einheitlicher Weise ausgeführt werden.

Bevor WebAssembly ausgeführt werden kann, muss der Bytecode allerdings von der JavaScript-Engine eingelesen werden. Der Bytecode liegt in einem wohldefinierten Format mit diversen Abschnitten vor. Die meisten Fehler, die Project Zero in WebAssembly gefunden hat, traten in dieser Phase auf. Die Sicherheitslücke CVE-2018-4222 in WebKit entstand durch das doppelte Addieren eines Offsets und war auch aus funktionaler Sicht ein Fehler. In Chrome gab es CVE-2018-6092 einen Zahlenüberlauf, der zumindest auf 32-Bit-Plattformen auftreten konnte. Er wurde verursacht durch das Addieren der Zahlen im Bytecode angegebenen lokalen Variablen ohne Prüfung auf Grenzen. WebKit beging einen weiteren Fehler (CVE-2018-4121), der bei der Prüfung der Reihenfolge der Sektionen auftrat.

Einige weitere Fehler wurden beim Allokieren von Speicher oder bei der Änderung der Größe der Allokationen entdeckt, die im Detail in dem Artikel beschrieben werden. Bei der Ausführung von WebAssembly wurden dagegen laut Silvanovich zwar einige Fehler, aber keiner mit eindeutigem Einfluss auf die Sicherheit gefunden.

Zum Abschluss stellt Silvanovich fest, dass in WebAssembly überraschend wenige Sicherheitslücken vorhanden waren, besonders im Vergleich zu anderer neuer Funktionalität der Webbrowser. Dies führt sie wesentlich auf das einfache Design von WebAssembly zurück. Doch gerade wird die Funktionalität von WebAssembly erweitert, was vor allem in zwei Punkten Auswirkungen auf die Sicherheit haben könnte. Zum einen werden Threads eingeführt, weil offenbar die Parallelität mit JavaScript-Workern für einige nicht ausreichend war. Zum anderen wird zur besseren Unterstützung von Hochsprachen wie Java eine Garbage Collection (GC) in WebAssembly implementiert.

Werbung
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung