Anwendungssicherheit
Fuzz-Testing
Auch bekannt als: Fuzzing
Definition
Automatisierte Testtechnik, die ein Programm mit großen Mengen fehlerhafter, zufälliger oder unerwarteter Eingaben füttert, um Crashes, Speicherkorruption und Sicherheitslücken aufzudecken.
Beispiele
- OSS-Fuzz lässt libFuzzer kontinuierlich gegen den OpenSSL-Parser laufen, um Speicherkorruptionen zu finden.
- Jazzer fuzzt einen Java-JSON-Parser und findet DoS durch tief verschachtelte Eingaben.
Verwandte Begriffe
Mutations-Fuzzing
Fuzzing-Strategie, die neue Testeingaben durch zufälliges Mutieren vorhandener gültiger Samples erzeugt – Bitflips, Byte-Einfügungen, Datei-Splices.
Coverage-Guided Fuzzing
Fuzzing-Technik, die das Target instrumentiert, um Codeabdeckung zu messen, und gezielt Eingaben weiterentwickelt, die neue Pfade erreichen – mit deutlich höherer Bug-Findequote.
Symbolische Ausführung
Programmanalyse-Technik, die Code mit symbolischen Eingaben statt mit konkreten Werten ausführt und Pfadbedingungen aufbaut, die ein SMT-Solver löst, um Bugs zu finden.
DAST (Dynamic Application Security Testing)
Blackbox-Sicherheitstests, die eine laufende Anwendung über das Netzwerk untersuchen, um nur zur Laufzeit sichtbare Schwachstellen wie Injection, Auth-Fehler und Fehlkonfigurationen zu finden.
Pufferüberlauf
Speicher-Sicherheitslücke, bei der ein Programm über das Ende eines allokierten Puffers hinausschreibt, benachbarten Speicher überschreibt und häufig Codeausführung ermöglicht.
Secure Coding
Secure Coding — definition coming soon.