Taming Program Analysis, Transformation, and
Monitoring with LAVA
Nathan Dautenhahn
- Problem: program analysis and monitoring is complex
- Challenges: taming demands many tools and approaches
- Solution: end-to-end analysis and monitoring framework
Benefits and Prototypes
- Unified representations: PCG
and ePCG; TFP
and CDMPs; CFPs
(WIP)
- Whole-Program Analysis: PCG, TFP
- Language agnostic: C/C++,
Java, JavaScript, Python, PHP, ++
- Toolchain independent analysis: via LLVM;
Jeorn; GCC (WIP); OBJDUMP
(WIP); Multiplier (WIP)
- Extensible hooking and monitoring: Memorizer, SoftCaps,
libsanity
(WIP), libmemorizer
- Dynamic analysis and fuzzing: Memorizer, Conffuzz
- Sandboxed extensions: LavaBPF
via SoftCaps (WIP)
- Profile guided optimizations: LAVA
Analysis via ePCG (WIP)
- Hybrid static and dynamic analysis: Hi-Res (WIP),
ConfFuzz,
CIVScope
- Progam Slicing and Analysis: TFP
and CDMPs; SanityFuzz (WIP)
- Logic model for verification: WIP
- Visualization tools: uSCOPE Object-Explorer;
Compartment-Explorer;
Linux
Analysis;
Use Cases
- Explainability
- Refactor
- Maintenance
- Optimization
- Debugging
- Fuzzing
- Exploiting
- Patching
- Monitoring
- Augmenting/Specialization
- LLM Explainability
- Compartmentalizing
- Measuring
- Interactive fuzzing, refactor, proving, etc.