Skip to content
Security
Agent

5b-poc-validator

Compiles and runs all PoCs for zeroize-audit findings. Produces poc_validation_results.json consumed by the verification agent and the orchestrator.

From plugin
skills
7.9k30 skills30 agents8 commands1 MCP

Claude Code

> /plugin marketplace add trailofbits/skills

Agent definition

5b-poc-validator.md
name: 5b-poc-validator
description: "Compiles and runs all PoCs for zeroize-audit findings. Produces poc_validation_results.json consumed by the verification agent and the orchestrator."
model: inherit
tools: Read, Write, Bash, Grep

5b-poc-validator

Compile and run all PoCs listed in the manifest. This agent handles bulk compilation and execution, producing runtime results that are subsequently checked by the verification agent (5c-poc-verifier) for semantic correctness.

Input

You receive these values from the orchestrator:

| Parameter | Description | |---|---| | `workdir` | Run working directory (e.g. `/tmp/zeroize-audit-{run_id}/`) | | `config_path` | Path to `{workdir}/merged-config.yaml` |

Process

Step 0 — Load Configuration

Read `config_path` to access PoC-related settings.

Step 1 — Read Manifest

Read `{workdir}/poc/poc_manifest.json`. Collect all PoC entries.

If no PoCs exist, write an empty results file and exit.

Step 2 — Compile and Run Each PoC

Dispatch on `poc_entry.language`:

C/C++ PoCs (`language` is absent or `"c"`)

1. Compile:

   cd {workdir}/poc && make <makefile_target>

2. If compilation succeeds, run and record exit code:

   cd {workdir}/poc && ./<makefile_target>
   echo "Exit code: $?"

3. Record result: `{finding_id, category, language: "c", poc_file, compile_success, exit_code}`.

Rust PoCs (`language == "rust"`)

Rust PoCs use `cargo test`. The exit code convention maps directly: a passing `assert!` → test passes → cargo exits 0 → exploitable; a failing `assert!` (panic) → test fails → cargo exits non-zero → not exploitable.

1. Compile check (no run):

   <poc_entry.compile_cmd>
   # e.g. cargo test --manifest-path {workdir}/poc/Cargo.toml --no-run --test za_0001_missing_source_zeroize

2. If compilation succeeds, run the specific test and record exit code:

   <poc_entry.run_cmd>
   # e.g. cargo test --manifest-path {workdir}/poc/Cargo.toml --test za_0001_missing_source_zeroize -- --nocapture
   echo "Exit code: $?"

3. Capture stdout/stderr from the cargo test run and include in the result for the verifier.

4. Record result: `{finding_id, category, language: "rust", poc_file, compile_success, exit_code, stdout, stderr}`.

For Rust PoCs where `poc_supported: false`: skip compilation and execution; record `{compile_success: false, exit_code: null, validation_result: "no_poc"}` with the `reason` from the manifest.

Step 3 — Write Results

Write `{workdir}/poc/poc_validation_results.json`:

{
  "timestamp": "<ISO-8601>",
  "results": [
    {
      "finding_id": "ZA-0001",
      "category": "MISSING_SOURCE_ZEROIZE",
      "poc_file": "poc_za_0001_missing_source_zeroize.c",
      "compile_success": true,
      "exit_code": 0,
      "validation_result": "exploitable"
    }
  ]
}

Validation result mapping (applies to both C/C++ and Rust PoCs):

  • `compile_success=true, exit_code=0` → `"exploitable"` (binary exited 0 or cargo test passed)
  • `compile_success=true, exit_code=1` → `"not_exploitable"` (C binary exited 1)
  • `compile_success=true, exit_code≠0 and ≠1 (Rust)` → `"not_exploitable"` (cargo test failed due to assert panic)
  • `compile_success=false` → `"compile_failure"`
  • `poc_supported=false` → `"no_poc"`

Output

Write to `{workdir}/poc/`:

| File | Content | |---|---| | `poc_validation_results.json` | Results for all PoCs |

Error Handling

  • **Manifest missing**: Fatal — write error and exit.
  • **Individual compile failure**: Record `compile_failure` in results, continue with next PoC.
  • **Individual runtime failure**: Record exit code, continue with next PoC.
  • **Always write `poc_validation_results.json`** — even if empty (`{"timestamp": "...", "results": []}`).
Read more
@trailofbits
Ships withskills

Trail of Bits skills and plugins for AI-assisted security analysis, testing, and development. Install this marketplace in Claude Code or Codex, or import it into your ChatGPT workspace marketplace.

7.9k95 skills30 agents1 MCP
Get the whole plugin

Stars on GitHub

Momentum

stars in total
7.9k
Star history of trailofbits/skills on GitHub, a chart by star-history.com

Other agents on skills.

function-analyzer

function-analyzer

Agent

Analyzes one function in depth for audit context: invariants, assumptions, and what its callees establish. Writes the prose…

@trailofbits@trailofbitsInstall Agent
c-review-worker

c-review-worker

Agent

Runs one c-review producing task — a location slice, the class sweep, the invariant audit or the dedup pass — reading source and…

@trailofbits@trailofbitsInstall Agent
fixer

fixer

Agent

Applies fixes for the blocking findings dispatched by the /code-improver:improve workflow and returns one verdict per finding…

@trailofbits@trailofbitsInstall Agent
adversarial-modeler

adversarial-modeler

Agent

Models attacker perspectives and builds exploit scenarios for HIGH RISK code changes. Use when differential review identifies…

@trailofbits@trailofbitsInstall Agent

More agents from other plugins.

dependency-review

dependency-review

Agent

<!-- SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. --> <!--…

nemoclaw12d23k
@nvidia@nvidiaInstall Agent
autopilot

autopilot

Agent

Autonomous hunt loop agent. Runs the full hunt cycle (scope → recon → rank → hunt → validate → report) without stopping for…

@awarexone@awarexoneInstall Agent
autopilot

autopilot

Agent

Autonomous hunt loop agent. Runs the full hunt cycle (scope → recon → rank → hunt → validate → report) without stopping for…

@shuvonsec@shuvonsecInstall Agent
SELF-TEST

SELF-TEST

Agent

This document verifies that the `jwx-dev-v4:guide` skill enables an answering agent to navigate the **scattered** documentation…

jwx2w2.4k
@lestrrat-go@lestrrat-goInstall Agent

Questions about 5b-poc-validator.

Which coding agents can use 5b-poc-validator?
5b-poc-validator installs in Claude Code and Cursor: each loads subagents from .claude/agents, so copy the file there. Flowy's auto-invocation runs in Claude Code only.