fold/docs/internal/ctf-eval-loop2.md
trvon eb85913f6e
eval: CTF loop 2 — 3.7%→7.4% detection, 2x improvement
- dangerous-import correctly flags gets() and system() imports
- Hardcoded-string FP fix too aggressive (drops real findings)
- CWE gaps: buffer overflow, format string, UAF, div-zero still missed
- Next: wire binary_bb_encoder into pipeline for Z3-proved findings
2026-05-29 21:30:38 -04:00

48 lines
1.9 KiB
Markdown

# CTF Binary Re-Evaluation — Loop 2
> Generated 2026-05-30. Re-evaluation after Phase 1-3 binary backend improvements.
## Detection Rate Trend
| Loop | Detection Rate | Findings | FPs | Real Findings |
|------|---------------|----------|-----|---------------|
| Baseline | 3.7% (1/27) | 1 | 0 | 1 |
| Loop 1 (pre-FP fix) | 259% (70/27) | 70 | ~67 | ~3 |
| Loop 1 (post-FP fix) | 7.4% (2/27) | 2 | 0 | 2 |
**Net improvement: 3.7% → 7.4% (2x)**
## What's Working
| Detector | Real Findings | Example |
|----------|--------------|---------|
| `dangerous-import` | 2 | `gets()` in libbof_overflow, `system()` in libcmd_injection |
| `binary-security` | 1 | `gets()` xref in vulnerable_gets function |
## What Failed (FP Sources in Loop 1)
| Detector | FPs | Root Cause |
|----------|-----|------------|
| `hardcoded-string` | ~67 | Build paths, system library paths in binary data |
| `hardcoded-string` (post-fix) | 0 | Fix was too aggressive — also drops real credential findings |
## What's Still Missed (CWE gaps)
| CWE | Expected Finding | Status |
|-----|-----------------|--------|
| CWE-121 | Buffer overflow via strcpy | ❌ Not detected (binary strcpy import not flagged) |
| CWE-134 | Format string via printf | ❌ Not detected |
| CWE-416 | Use-after-free | ❌ Needs basic block analysis |
| CWE-369 | Division by zero | ❌ Needs Z3 encoding |
| CWE-190 | Integer overflow | ❌ Needs Z3 encoding |
| CWE-476 | Null dereference | ❌ Needs Z3 encoding |
| CWE-78 | Command injection | ✅ Detected (system() import) |
## Next Steps for Binary Backend
| # | Action | Effort | Expected Gain |
|---|--------|--------|--------------|
| 1 | Wire binary_bb_encoder.cpp into scan pipeline | S | +6 Z3-proved findings |
| 2 | Add strcpy/printf to dangerous import list | S | +2 findings |
| 3 | Fix hardcoded-string: add security-relevant path filter | S | +2 real, 0 FP |
| 4 | Basic block xref analysis (call→string association) | M | +3 findings |