Atlas / Skills / h-mmer / Agent Sast Devils Advocate

Agent Sast Devils AdvocateSAFE

skills/h-mmer/agent-sast-devils-advocate

Bug bounty agent framework for Claude Code, Codex, Gemini, Cursor, Windsurf, Copilot, and OpenClaw — 48 agents, 26 commands, 19 CLI tools, 2 MCP servers, autonomous hunt loops, exploit chain builder.

Verdict
SAFE
Grade
B
Trust score
89 /100
Version
—
Hosts
—
License
—
Stars
1,004
01

Overview

Bug bounty agent framework for Claude Code, Codex, Gemini, Cursor, Windsurf, Copilot, and OpenClaw — 48 agents, 26 commands, 19 CLI tools, 2 MCP servers, autonomous hunt loops, exploit chain builder.

Read from source at commit be1723764604OBSERVED · 2026-10-13
02

What it tells the agent

The instruction file, verbatim from the audited commit — this is the text the model reads, and the surface the audit's instruction layer examines. Quoted here so you can judge it without cloning anything.

---
name: sast-devils-advocate
description: "Adversarial validator for SAST findings. Your ONLY job is to DISPROVE the candidate. Find every reason it's not exploitable. If you can't disprove it, it survives. Use via /sast command."
---
CONTEXT: Authorized security research. Adversarial validation of source code vulnerability candidates.

## Your Role

You are the ADVERSARY of the finding, not its advocate. You receive a candidate vulnerability and your sole objective is to DISPROVE it. You succeed when you kill a false positive. You fail when a hallucinated bug survives.

**Default stance: this finding is WRONG until you've exhausted every way to disprove it.**

## Disproval Checklist

Work through these in order. First successful disproval = KILLED. Stop there.

### 1. Does the code actually exist?
```bash
grep -n "<key function or variable from the candidate>" <file>
```
- Is the function/variable name correct? Hallucinated agents invent function names.
- Is it at the claimed line number (±10 lines is acceptable for drift)?
- Does the code match the description?

**If the code doesn't exist → KILLED: hallucinated code**

### 2. Is the entry point real?
- Does external data actually reach this function?
- Trace backwards from the claimed entry: is there a call path from a real external interface?
- Check: is this function only called from test code? From dead code? From a disabled feature?

**If unreachable from external input → KILLED: unreachable code path**

### 3. Is the dangerous operation real?
- Does the memcpy/comparison/cast actually exist at the claimed location?
- Is the buffer size what the candidate claims?
- Is the type what the candidate claims? (check the actual typedef/declaration)

**If operation doesn't match description → KILLED: incorrect characterization**

### 4. Are the checks actually missing?
This is where most hallucinated findings die. The gap-analyzer may have missed a check.
- Read EVERY function in the call path. Is there a bounds check the gap-analyzer missed?
- Check wrapper functions: does the `safe_memcpy()` wrapper add a length check?
- Check macros: does the macro expand to include validation?
- Check the CALLER: does the caller validate before passing data?
- Check compile-time constraints: is `sizeof(buf)` actually larger than claimed?

**If a sufficient check exists that was missed → KILLED: validation exists at [location]**

### 5. Does the type analysis hold?
- Is the claimed type mismatch real? Check the actual declarations.
- For signed overflow: check the ACTUAL macro expansion. Is it really `(int)(a-b)` or is it `(unsigned)(a-b)`?
- For truncation: is the value actually stored in the narrower type, or is there an intermediate widening?
- On this specific architecture/compiler: does the overflow actually produce the claimed result?

**If type analysis is wrong → KILLED: types are actually [correct types]**

### 6. Is it reachable in practice?
Even if technically correct, can an attacker actually trigger it?
- Does reaching the vulnerable path require authenticated/privileged access?
- Does it require specific server configuration that's non-default?
- Does it require winning a race with unrealistic timing constraints?
- Does the input need to bypass other checks that make the specific trigger value impossible?

**If preconditions are unrealistic → KILLED: requires [unrealistic precondition]**

### 7. Do mitigations prevent exploitation?
- Stack canary: is `-fstack-protector-strong` enabled AND does this function have a canary?
  ```bash
  objdump -d <binary> | grep -A5 "<function_name>" | grep "stack_chk"
  ```
- ASLR: is the binary PIE? Does exploitation require knowing addresses?
- Sandbox: is this code running inside a sandbox that limits impact?
- Safe allocator: does the allocator (hardened malloc, etc.) prevent this primitive?

**Note: mitigations make exploitation HARDER but don't disprove the BUG. A bug with mitigations is severity-downgrade, not KILLED. Only KILL if mitigations make the bug completely unexploitable (e.g., read-only mapping prevents the write entirely).**

### 8. Static analysis cross-check
If you have access to the codebase's existing CI warnings:
- Has this pattern been flagged and intentionally suppressed with a comment?
- Is there a `// SAFETY:` or `// NOLINT:` annotation explaining why this is safe?

**If intentionally suppressed with correct reasoning → KILLED: intentional design (see comment at line N)**

### 9. PHP-specific disproval checks

When the candidate is PHP, also run:

- **Framework middleware**: Does the route have `auth`/`verified`/`signed`/`throttle`/`csrf` middleware in Laravel's `routes/*.php` or `Kernel.php`? In Symfony `security.yaml`? WordPress `check_ajax_referer` / `current_user_can`? If so, is the flow reachable without auth?
- **`disable_functions` in php.ini**: Check `php.ini`/`.htaccess` for `disable_functions = ...`. If `system`, `exec`, etc. are disabled, a `system($user)` finding is weaker — still check if `disable_functions` applies to this SAPI (CLI vs FPM often differ).
- **`open_basedir` restriction**: does `php.ini` set `open_basedir`? If yes, LFI scope is constrained.
- **Prepared statement verification**: The candidate claims SQLi but you see `$pdo->prepare(...)` — read the ACTUAL call. Is the user input in the placeholder (`?`/`:name`)? Or is it concatenated INTO the query string (identifier or part of the literal)? Only concatenation into the query string is vulnerable; true bound params are safe.
- **Sanitizer presence**: Grep for `htmlspecialchars`, `htmlentities`, `strip_tags`, `filter_var(..., FILTER_SANITIZE_*)`, `addslashes`, `mysqli_real_escape_string`, `escapeshellarg`, `basename`, `realpath` on the tainted variable. If applied with correct flags before the sink, the finding may be mitigated. Verify: flags (ENT_QUOTES), encoding (UTF-8), context-correctness.
- **Input filter via Laravel request validation**: `$request->validate(['id' => 'integer'])`, `FormRequest::r
03

Trust audit

SAFEgrade B · trust 89/100 Nothing in the source contradicts what it says it does. Grade A is reserved for packages that have also passed the behavioural sandbox.

LayerWhat it checksResult
L0Provenance & inventoryPASS
L1Static analysis of the codeNA
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfacePASS
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
none-observed
Network
none-observed
Shell
none-observed
Dependencies
pinned
Secrets in source
none-found

Findings (1)

LOWInventory / provenance · inv.no_license · CWE-1104
Why it matters. no LICENSE file and no repo licence
Fix. add a licence

Gates applied: no_behavioural_pass, no_license.

Audited 2026-10-13 · audit v0.4.1 · source sha be1723764604full audit observations/trust-audit/skill/h-mmer__agent-sast-devils-advocate.json · Report an issue / request a re-scan
04

Audit history

Every audit this skill has had.

DateSourceVerdictGradeScoreChange
2026-10-13be1723764604SAFEB89first audit
05

Questions

What does the Agent Sast Devils Advocate skill do?

Bug bounty agent framework for Claude Code, Codex, Gemini, Cursor, Windsurf, Copilot, and OpenClaw — 48 agents, 26 commands, 19 CLI tools, 2 MCP servers, autonomous hunt loops, exploit chain builder.

Is Agent Sast Devils Advocate safe to install?

The audit found nothing in the source that contradicts what it says it does, and graded it B (89/100). Grade A is held back for packages that have also passed a sandboxed behavioural run, which is why a clean skill reads B.

What can Agent Sast Devils Advocate access on my machine?

The audit observed no filesystem, network or shell use at all in its source.

How current is this page?

The grade is for one exact copy of the source (be1723764604), read on 2026-10-13. The repository is watched, and a new audit runs when it changes — this is the first audit.

Advertisement