What problem does it solve?
This Skill identifies cases where sensitive data is not reliably zeroized in C/C++/Rust code, including situations where cleanup looks correct in source but is removed by compiler optimizations.
Core Features & Use Cases
- Detect missing zeroization in source: Finds sensitive objects (keys, tokens, secrets) without approved wipe calls or cleanup on all relevant paths.
- Catch optimized-away wipes: Uses LLVM IR comparison across optimization levels to detect wipes eliminated by dead-store elimination and related transformations.
- Confirm evidence with compiler artifacts: Uses assembly and (optionally) semantic IR and CFG analysis to validate stack retention, register spills, and path dominance.
- Generate and validate PoCs: Produces proof-of-concept programs that demonstrate whether the secret persists after the audited operation.
Use cases include auditing cryptographic code, authentication/session handling, and security-critical cleanup routines for secrets stored in stack memory, heap memory, or intermediate copies.
Quick Start
Run zeroize-audit against the repository at the provided path with a build context by supplying your compile_commands.json (for C/C++) or Cargo.toml (for Rust), and generate an evidentiary report plus validated PoCs.