Simple Science

Hochmoderne Wissenschaft einfach erklärt

# Computerwissenschaften# Kryptographie und Sicherheit

WebAssembly-Sicherheit durch Obfuskation stärken

Ein neues Framework verbessert den Schutz von WebAssembly-Binärdateien gegen Reverse Engineering.

― 7 min Lesedauer


Wasm-Sicherheit:Wasm-Sicherheit:Obfuskations-Frameworkvor Angriffen zu schützen.Ein neuer Ansatz, um Wasm-Binärdateien
Inhaltsverzeichnis

WebAssembly (Wasm) ist ein neuer Binärformat, das immer beliebter wird, besonders bei Webanwendungen. Es ermöglicht Entwicklern, Code mit fast nativer Geschwindigkeit auf verschiedenen Geräten und Plattformen auszuführen, was es zu einer guten Alternative zu traditionellen Webprogrammiersprachen wie JavaScript macht. Die Hauptidee hinter Wasm ist, hochsprachige Sprachen wie C, C++, Rust und andere in ein Format zu kompilieren, das im Web ausgeführt werden kann, und so die Leistung bei rechenintensiven Aufgaben wie Gaming und Grafikverarbeitung zu verbessern.

Trotz seiner Vorteile sind Wasm-Binärdateien nicht gut geschützt. Sie können einfach von Angreifern gelesen und modifiziert werden, die verfügbare Tools nutzen können, um die kompilierten Binärdateien zu analysieren. Das bedeutet, dass bösartige Personen Wasm-Code zurückentwickeln können, um Schwächen zu finden und auszunutzen, was ein erhebliches Sicherheitsrisiko darstellt.

Warum Obfuskation nötig ist

Angesichts der Schwachstellen von Wasm gibt es einen dringenden Bedarf an Obfuskationstechniken. Obfuskation bezieht sich auf die Praxis, den Code schwer verständlich zu machen, während die ursprüngliche Funktionalität erhalten bleibt. Das ist wichtig, um sensible Informationen zu schützen und unautorisierten Zugriff auf die zugrunde liegende Logik der Software zu verhindern.

Aktuell gibt es keine speziellen Obfuskationstools, die speziell für Wasm-Binärdateien entwickelt wurden. Das Fehlen solcher Tools lässt Binärdateien potenziellen Bedrohungen von Angreifern ausgesetzt, die sie analysieren und ausnutzen könnten.

Einführung eines neuen Obfuskationsrahmens

Um die Lücke im Schutz von Wasm-Binärdateien zu schliessen, schlagen wir einen neuen Obfuskationsrahmen vor, der speziell für Wasm funktioniert. Unser Rahmen konzentriert sich auf zwei Hauptbereiche der Obfuskation: Datenobfuskation und Codeobfuskation.

Datenobfuskation

Die Datenobfuskation zielt darauf ab, sensible Informationen im Code zu schützen, wie Funktionsnamen und Zeichenfolgenliterale. Indem wir lesbare Daten durch zufällige Zeichenfolgen oder verschlüsselte Werte ersetzen, wird es für Angreifer viel schwieriger, die Funktionsweise des ursprünglichen Programms zu verstehen.

Zum Beispiel können Funktionsnamen durch zufällige Bezeichner ersetzt werden, was es Angreifern erschwert, den Zweck jeder Funktion zu bestimmen. Ebenso können Zeichenfolgenliterale, die wichtige Informationen enthalten, verschlüsselt und nur zur Laufzeit entschlüsselt werden, um die Chancen einer Offenlegung zu minimieren.

Codeobfuskation

Die Codeobfuskation konzentriert sich darauf, die tatsächlichen Anweisungen und den Kontrollfluss des Programms zu verändern. Diese Art der Obfuskation kann es erheblich erschweren, dass Angreifer das Programm mit gängigen Reverse-Engineering-Tools analysieren.

In unserem Rahmen führen wir Techniken wie das Flattening des Kontrollflusses ein, das die Ausführungsreihenfolge so umstellt, dass sie das Ergebnis nicht beeinflusst, aber für jeden, der die zugrunde liegende Logik verstehen will, komplexer wird. Indem wir den Fluss der Anweisungen komplizieren und Schichten der Abstraktion hinzufügen, können wir die ursprüngliche Absicht des Codes effektiv verschleiern.

Herausforderungen bei der Implementierung von Obfuskation

Die Implementierung von Obfuskation für Wasm-Binärdateien bringt eigene Herausforderungen mit sich:

  1. Overhead: Jede Obfuskationstechnik darf die Ausführung der Binärdateien nicht erheblich verlangsamen oder ihre Grösse erhöhen. Benutzer erwarten, dass Anwendungen effizient arbeiten, sodass zusätzlicher Overhead zu Frustration führen könnte.

  2. Strukturierter Kontrollfluss: Wasm hat eine einzigartige Kontrollflussstruktur, der traditionelle Sprunganweisungen wie "goto" fehlen. Das bedeutet, dass Obfuskationstechniken speziell auf die Struktur von Wasm abgestimmt sein müssen.

  3. Widerstand gegen statische Analyse: Viele Tools können Wasm-Binärdateien analysieren, um ihre Semantik wiederherzustellen. Effektive Obfuskation muss sicherstellen, dass diese Tools nicht einfach sinnvolle Informationen aus dem obfuskierten Code extrahieren können.

Vorgeschlagene Techniken zur Obfuskation

Um diese Herausforderungen zu überwinden, verwendet unser Rahmen mehrere Techniken, die sowohl die Daten- als auch die Codeobfuskation ansprechen:

1. On-Demand-Entschlüsselung

Bei der Arbeit mit Memory-Daten schlagen wir eine On-Demand-Entschlüsselungsmethode vor. Anstatt alle Daten beim Start des Programms zu entschlüsseln, was Ressourcen und Zeit verbrauchen kann, entschlüsselt der Rahmen Informationen nur dann, wenn sie während der Ausführung benötigt werden. So minimieren wir den Overhead, während wir sensible Daten schützen.

2. Codeblockaufteilung

Die Codeblockaufteilung ermöglicht es uns, einen komplexen Codeblock in kleinere, handhabbare Abschnitte zu zerlegen. Jeder Abschnitt kann umgestellt werden, was zu einem komplizierteren Kontrollfluss führt. Diese Technik hält die Semantik des Programms intakt, während sie den Code schwerer nachvollziehbar macht.

3. Kontrollfluss-Flattening

Das Flattening des Kontrollflusses bezieht sich darauf, eine Reihe von Anweisungen so zu strukturieren, dass ihre Ausführungsreihenfolge weniger offensichtlich wird. Dies kann durch Techniken wie switch-case-Anweisungen erreicht werden, die in Schleifen eingebettet sind, die der Reihe nach ausgeführt werden, aber zufällig erscheinen, wodurch die Reverse-Engineering-Bemühungen kompliziert werden.

4. Alias-Störung

Diese Technik ersetzt direkte Funktionsaufrufe durch indirekte, die zur Laufzeit Daten verwenden, um zu bestimmen, welche Funktion aufgerufen werden soll. Das fügt Ungewissheit für Angreifer hinzu, die nicht leicht vorhersagen können, welcher Ausführungspfad des Programms verfolgt wird, was die Analyse erschwert.

5. Opake Prädikate

Opake Prädikate sind Ausdrücke, die immer das gleiche Ergebnis liefern, unabhängig von der Eingabe. Indem wir diese in den Kontrollfluss einfügen, können wir die Semantik des Programms weiter verschleiern. Angreifer werden Schwierigkeiten haben, die Bedeutung dieser Prädikate zu bestimmen, was zusätzliche Hindernisse für die statische Analyse schafft.

Bewertung des Obfuskationsrahmens

Um die Wirksamkeit unseres Obfuskationsrahmens zu bewerten, haben wir umfangreiche Tests mit verschiedenen Sets von Wasm-Binärdateien durchgeführt. Die Bewertung konzentrierte sich auf drei Hauptkriterien:

  1. Semantische Konsistenz: Wir haben sichergestellt, dass die obfuskierten Binärdateien immer noch die gleiche Ausgabe wie ihre ursprünglichen Gegenstücke erzeugten, was bestätigt, dass die Obfuskation die Funktionalität nicht beeinträchtigt hat.

  2. Widerstand gegen Reverse Engineering: Wir haben bewertet, wie schwierig es für Angreifer war, die obfuskierten Binärdateien zu analysieren, sowohl durch manuelle Analyse als auch durch statische Analysetools.

  3. Leistungsoverhead: Wir haben den Einfluss unserer Obfuskationstechniken auf die Ausführungszeit und die Binärdateigrösse gemessen. Unser Ziel war es, den Overhead so gering wie möglich zu halten und gleichzeitig einen angemessenen Schutz zu gewährleisten.

Testergebnisse

Die Ergebnisse unserer Bewertung zeigten vielversprechende Ergebnisse:

  • Alle getesteten Binärdateien behielten ihre ursprüngliche Funktionalität, was bestätigte, dass unsere Obfuskationsmethoden die semantische Konsistenz bewahrten.

  • Die Techniken erhöhten effektiv die Schwierigkeit des manuellen Reverse Engineerings. Angreifer fanden es herausfordernd, den obfuskierten Code zu interpretieren, der deutlich weniger lesbar wurde.

  • Obwohl einige Techniken Overhead einführten, gelang es uns, ihn unter 20 % sowohl in Bezug auf die Ausführungszeit als auch die Binärdateigrösse zu halten, sodass die obfuskierten Binärdateien praktisch für den Einsatz in der realen Welt blieben.

Fazit

Unser vorgeschlagener Obfuskationsrahmen für WebAssembly-Binärdateien stellt einen wichtigen Schritt zur Sicherung dieser aufkommenden Technologie dar. Indem wir die spezifischen Schwächen von Wasm ansprechen, bieten wir eine robuste Lösung, die sensible Daten schützt und Reverse-Engineering-Bemühungen kompliziert.

Mit diesem Rahmen können Entwickler ihre Anwendungen schützen, ohne die Leistung zu opfern. Die Techniken, die in unserem Obfuskationsansatz eingebettet sind, verbergen nicht nur die ursprüngliche Absicht des Codes, sondern widerstehen auch modernen statischen Analysetools, was einen fortwährenden Schutz in einer sich entwickelnden Landschaft von Cybersecurity-Bedrohungen gewährleistet.

Da WebAssembly weiterhin an Bedeutung gewinnt, wird auch der Bedarf an effektiver Binärobfuskation nur zunehmen. Unsere Forschung ebnet den Weg für weitere Erkundungen und Entwicklungen in diesem wichtigen Bereich und fördert kontinuierliche Fortschritte in den Schutzstrategien für Wasm-Binärdateien.

Originalquelle

Titel: WASMixer: Binary Obfuscation for WebAssembly

Zusammenfassung: WebAssembly (Wasm) is an emerging binary format that draws great attention from our community. However, Wasm binaries are weakly protected, as they can be read, edited, and manipulated by adversaries using either the officially provided readable text format (i.e., wat) or some advanced binary analysis tools. Reverse engineering of Wasm binaries is often used for nefarious intentions, e.g., identifying and exploiting both classic vulnerabilities and Wasm specific vulnerabilities exposed in the binaries. However, no Wasm-specific obfuscator is available in our community to secure the Wasm binaries. To fill the gap, in this paper, we present WASMixer, the first general-purpose Wasm binary obfuscator, enforcing data-level (string literals and function names) and code-level (control flow and instructions) obfuscation for Wasm binaries. We propose a series of key techniques to overcome challenges during Wasm binary rewriting, including an on-demand decryption method to minimize the impact brought by decrypting the data in memory area, and code splitting/reconstructing algorithms to handle structured control flow in Wasm. Extensive experiments demonstrate the correctness, effectiveness and efficiency of WASMixer. Our research has shed light on the promising direction of Wasm binary research, including Wasm code protection, Wasm binary diversification, and the attack-defense arm race of Wasm binaries.

Autoren: Shangtong Cao, Ningyu He, Yao Guo, Haoyu Wang

Letzte Aktualisierung: 2023-08-06 00:00:00

Sprache: English

Quell-URL: https://arxiv.org/abs/2308.03123

Quell-PDF: https://arxiv.org/pdf/2308.03123

Lizenz: https://creativecommons.org/licenses/by/4.0/

Änderungen: Diese Zusammenfassung wurde mit Unterstützung von AI erstellt und kann Ungenauigkeiten enthalten. Genaue Informationen entnehmen Sie bitte den hier verlinkten Originaldokumenten.

Vielen Dank an arxiv für die Nutzung seiner Open-Access-Interoperabilität.

Mehr von den Autoren

Ähnliche Artikel