Day 31 of 60 · Dynamic, fuzz & dynamic security

Symbolic / concolic execution

Where ordinary fuzzing can't get past a magic-number check, symbolic engines walk through the door, and produce concrete inputs that hit every reachable path.

ProblemCode paths fuzzers can't reach because they require structured inputs (parsers, file formats).

How it works

Treat inputs as symbolic variables; the engine explores all feasible paths and produces concrete inputs that hit each.

What it catches

Deep parser bugs, format-string vulnerabilities, path coverage that ordinary fuzzing misses. Niche; high setup cost.

Tools

KLEE · OSS Manticore · OSS angr · OSS

Verdict by project size

Small
Skip
Medium
Skip
Large
Opt
Extra-large
Rec

Cost

Project size Setup Maint / mo Tool / mo CI / run
Small <10k LOC 5d 2h $0 ,
Medium 10–100k LOC 15d 10h $0 ,
Large 100k–1M LOC 50d 40h $0 ,
Extra-large >1M LOC 150d 200h $0 ,
Setup = engineer-days to first useful run · Maint = engineer-hours / month at steady state · Tool = out-of-pocket $ / month · CI = minutes added (or saved) per pipeline run

Lifecycle & ownership

When in lifecycle
Build Test
Per merge · Runs after merge to main; nightly heavy jobs.
Who owns it
Security / AppSec
SAST, DAST, threat modelling
Collaborates with: Developer

Reference implementations

Quick check

Symbolic / concolic execution shines where ordinary fuzzing struggles, namely…

One question. Pick the best answer. Your streak is saved locally on this device.

Save the lesson

Download SVG ↓

Screenshot for a 1:1, drop it in Slack, or download the SVG.

thinkbridge THE VALIDATION ATLAS DAY 31 OF 60 DYNAMIC, FUZZ & DYNAMIC SECURITY Symbolic / concolicexecution Where ordinary fuzzing can't get past a magic-number check,symbolic engines walk through the door; and produceconcrete inputs that hit every reachable path. FIVE-MINUTE LESSON · ONE QUICK-CHECK QUESTION There’s a new way there
All 60 days →