Eval-Injection
Was ist Eval-Injection?
Eval-InjectionKonkreter Unterfall der Code-Injection: untrusted Eingaben werden an dynamische Auswertungsfunktionen wie JavaScript eval() oder Python eval/exec übergeben.
Eval-Injection ist der konkrete Unterfall der Code-Injection, bei dem die dynamische Auswertungsfunktion einer Sprache — JavaScript eval, new Function, setTimeout(string), Python eval/exec, Ruby eval, PHP-Äquivalente, VBA Application.Run — mit Daten aus Benutzereingaben aufgerufen wird. Da diese Primitive die übergebene Zeichenkette als vollständigen Quelltext im Host-Prozess interpretieren, führt Ausnutzung zu vollständigem Sprach-RCE: Zugriff auf Imports, Globals, Dateisystem, Umgebung und Subprozesse. Schutz bietet das vollständige Entfernen dynamischer Auswertung, der Einsatz sicherer Parser (JSON.parse, ast.literal_eval), strikte Allow-List-Validierung für Ausdrücke sowie Laufzeit-Sandboxes wie vm2 oder beschränkte Subprozesse.
● Beispiele
- 01
Python: result = eval(request.form['expr']) — Payload __import__('os').system('id').
- 02
Node: new Function('return ' + req.query.f)() — Payload process.mainModule.require('child_process').execSync('id').
● Häufige Fragen
Was ist Eval-Injection?
Konkreter Unterfall der Code-Injection: untrusted Eingaben werden an dynamische Auswertungsfunktionen wie JavaScript eval() oder Python eval/exec übergeben. Es gehört zur Kategorie Angriffe und Bedrohungen der Cybersicherheit.
Was bedeutet Eval-Injection?
Konkreter Unterfall der Code-Injection: untrusted Eingaben werden an dynamische Auswertungsfunktionen wie JavaScript eval() oder Python eval/exec übergeben.
Wie funktioniert Eval-Injection?
Eval-Injection ist der konkrete Unterfall der Code-Injection, bei dem die dynamische Auswertungsfunktion einer Sprache — JavaScript eval, new Function, setTimeout(string), Python eval/exec, Ruby eval, PHP-Äquivalente, VBA Application.Run — mit Daten aus Benutzereingaben aufgerufen wird. Da diese Primitive die übergebene Zeichenkette als vollständigen Quelltext im Host-Prozess interpretieren, führt Ausnutzung zu vollständigem Sprach-RCE: Zugriff auf Imports, Globals, Dateisystem, Umgebung und Subprozesse. Schutz bietet das vollständige Entfernen dynamischer Auswertung, der Einsatz sicherer Parser (JSON.parse, ast.literal_eval), strikte Allow-List-Validierung für Ausdrücke sowie Laufzeit-Sandboxes wie vm2 oder beschränkte Subprozesse.
Wie schützt man sich gegen Eval-Injection?
Schutzmaßnahmen gegen Eval-Injection kombinieren typischerweise technische Kontrollen und operative Praktiken, wie in der Definition oben beschrieben.
Welche anderen Bezeichnungen gibt es für Eval-Injection?
Übliche alternative Bezeichnungen: eval()-Injection, Dynamische Auswertungs-Injection.
● Verwandte Begriffe
- attacks№ 195
Code-Injection
Schwachstellenklasse, bei der vom Angreifer gelieferte Daten von einer Anwendung als Code interpretiert und ausgeführt werden, was beliebige Ausführung im Kontext erlaubt.
- attacks№ 1009
Server-Side Template Injection
Angriff, der Template-Engine-Syntax in nicht vertrauenswürdige Eingaben einschleust und beim Rendern des Templates serverseitige Codeausführung erlaubt.
- attacks№ 202
Command Injection
Angriff, bei dem Benutzereingaben ungefiltert an eine Betriebssystem-Shell übergeben werden und die Anwendung dadurch vom Angreifer gelieferte Befehle ausführt.
- vulnerabilities№ 539
Unsichere Deserialisierung
Schwachstelle, bei der eine Anwendung nicht vertrauenswürdige Daten deserialisiert und Angreifer beliebige Objekte erzeugen — häufig mit Remote-Code-Execution.
- appsec№ 538
Eingabevalidierung
Serverseitige Prüfung, ob jede unvertrauenswürdige Eingabe vor der Verarbeitung dem erwarteten Typ, Längen-, Wert-, Format- und Wertebereich entspricht.