Anwendungssicherheit
Symbolische Ausführung
Auch bekannt als: Symbolische Analyse, Concolic Execution
Definition
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.
Beispiele
- KLEE auf einer C-Bibliothek ausführen, um Eingaben zu erzeugen, die jeden Branch erreichen und Asserts auslösen.
- angr und AFL++ kombinieren, um Constraints zu lösen, die Fuzzing allein nicht knackt.
Verwandte Begriffe
Fuzz-Testing
Automatisierte Testtechnik, die ein Programm mit großen Mengen fehlerhafter, zufälliger oder unerwarteter Eingaben füttert, um Crashes, Speicherkorruption und Sicherheitslücken aufzudecken.
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.
Mutations-Fuzzing
Fuzzing-Strategie, die neue Testeingaben durch zufälliges Mutieren vorhandener gültiger Samples erzeugt – Bitflips, Byte-Einfügungen, Datei-Splices.
SAST (Static Application Security Testing)
Automatisierte Analyse von Quellcode, Bytecode oder Binaries – ohne Ausführung – um Sicherheitsschwächen wie Injection, unsichere APIs oder schwache Kryptografie 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.