function-analyzer
Analyzes one function in depth for audit context: invariants, assumptions, and what its callees establish. Writes the prose analysis to disk and returns a…
Identifies sensitive objects, detects wipe calls, validates correctness, and performs data-flow/heap analysis for zeroize-audit. Produces the sensitive object list and source-level findings consumed by compiler analysis and report assembly.
> /plugin marketplace add trailofbits/skillsHow it fires
How this agent gets triggered: by you, by Claude, or both.
Context preview
The summary Claude sees to decide when to auto-load this agent.
Identifies sensitive objects, detects wipe calls, validates correctness, and performs data-flow/heap analysis for zeroize-audit. Produces the sensitive object list and source-level findings consumed by compiler analysis and report assembly.
name: 2-source-analyzer description: "Identifies sensitive objects, detects wipe calls, validates correctness, and performs data-flow/heap analysis for zeroize-audit. Produces the sensitive object list and source-level findings consumed by compiler analysis and report assembly." model: inherit tools: Read, Grep, Glob, Write, Bash
Identify sensitive objects, detect wipes, validate correctness, and perform data-flow and heap analysis. Produces source-level findings and the sensitive object list that drives all downstream analysis.
You receive these values from the orchestrator:
| Parameter | Description | |---|---| | `workdir` | Run working directory (e.g. `/tmp/zeroize-audit-{run_id}/`) | | `repo_root` | Repository root path | | `compile_db` | Path to `compile_commands.json` | | `config_path` | Path to merged config file (`{workdir}/merged-config.yaml`) | | `input_file` | Path to `{workdir}/agent-inputs/source-analyzer.json` containing `tu_list` | | `mcp_available` | Boolean — whether MCP evidence exists in `{workdir}/mcp-evidence/` | | `languages` | Languages to analyze (e.g. `["c", "cpp", "rust"]`) | | `max_tus` | Optional TU limit |
Read `config_path` to load the merged config (sensitive patterns, approved wipes, annotations). Read `input_file` to load `tu_list` (JSON array of `{file, tu_hash}`).
If `mcp_available=true`, read:
MCP-resolved type data takes precedence over source-level estimates for wipe-size validation and copy detection.
Scan all TUs (up to `max_tus`) for objects matching heuristics from the merged config:
**Name patterns (low confidence):** Case-insensitive substring match: `key`, `secret`, `seed`, `priv`, `sk`, `shared_secret`, `nonce`, `token`, `pwd`, `pass`
**Type hints (medium confidence):** Byte buffers, fixed-size arrays, structs whose names or fields match name patterns.
**Explicit annotations (high confidence):** `__attribute__((annotate("sensitive")))`, `SENSITIVE` macro, Rust `#[secret]`, `Secret<T>` — configurable via merged config.
Cross-reference MCP-resolved type data from Step 1 where available.
Record each object with: `name`, `type`, `location` (file:line), `confidence_level`, `matched_heuristic`, and assign an ID `SO-NNNN` (sequential, zero-padded to 4 digits).
For each sensitive object, check for approved wipe calls within scope or reachable cleanup paths. Approved wipes come from the merged config; defaults include `explicit_bzero`, `memset_s`, `SecureZeroMemory`, `OPENSSL_cleanse`, `sodium_memzero`, `zeroize::Zeroize`, `Zeroizing<T>`, `ZeroizeOnDrop`, and volatile wipe loops.
Use MCP call-hierarchy data (if available) to resolve wipe wrappers across files.
For each sensitive object with a detected wipe, validate:
Use MCP cross-file references to extend tracking beyond the current TU where available.
**Data-flow (produces `SECRET_COPY`):**
Optionally use `{baseDir}/tools/track_dataflow.sh` to assist with cross-function tracking.
**Heap (produces `INSECURE_HEAP_ALLOC`):**
Optionally use `{baseDir}/tools/analyze_heap.sh` to assist with heap analysis.
For each TU containing at least one sensitive object, record the mapping from source file path to `TU-{hash}` (hash provided by orchestrator in `tu_list`). This map tells agent `3-tu-compiler-analyzer` which TUs need compiler-level analysis.
Write all output files to `{workdir}/source-analysis/`:
| File | Content | |---|---| | `sensitive-objects.json` | Array of objects: `{id: "SO-NNNN", name, type, file, line, confidence, heuristic, has_wipe, wipe_api, wipe_location, related_findings: []}` | | `source-findings.json` | Array of findings: `{id: "F-SRC-NNNN", category, severity, confidence, file, line, symbol, evidence: [], evidence_source: ["source"|"mcp"], related_objects: ["SO-NNNN"], related_findings: [], evidence_files: []}` | | `tu-map.json` | `{"/path/to/file.c": "TU-a1b2c3d4", ...}` — only TUs with sensitive objects | | `notes.md` | Human-readable summary: object counts by confidence, finding counts by category, MCP enrichment stats, relative paths to JSON files |
Sequential numbering within this agent run. Zero-padded to 4 digits.
A Claude Code plugin marketplace from Trail of Bits providing skills to enhance AI-assisted security analysis, testing, and development workflows. Codex can load this marketplace through its Claude marketplace compatibility.
Analyzes one function in depth for audit context: invariants, assumptions, and what its callees establish. Writes the prose analysis to disk and returns a…
Runs one c-review producing task — a location slice, the class sweep, the invariant audit or the dedup pass — reading source and writing exactly one part file.…
Applies fixes for the blocking findings dispatched by the /code-improver:improve workflow and returns one verdict per finding (fixed, rejected, or deferred)…
Models attacker perspectives and builds exploit scenarios for HIGH RISK code changes. Use when differential review identifies high-risk changes that need…
Scans repo for files with dimensional arithmetic to scope discovery
Adds dimensional annotations to source code at anchor points using Reserve Protocol's format