MoonFuji/invariant-first-bug-bounty
GitHub: MoonFuji/invariant-first-bug-bounty
一个 Agent Skill,通过证据关卡和机械验证约束 AI 代理在 bug bounty 研究中的报告行为,确保提交前完成 invariant 分析、追踪验证和重复检测。
Stars: 0 | Forks: 0
# Invariant 优先的 Bug Bounty
[](https://agentskills.io)
[](LICENSE)
一个 Agent Skill,使 AI 辅助的 bug bounty 研究在撰写报告之前先获得报告验证。
Coding agent 通常会发现一个危险的函数,构建一个本地的 proof-of-concept,然后直接跳到撰写一份精美的报告。这跳过了审核人员用来拒绝或标记为重复提交的问题:
- 在接受的威胁模型下,攻击者是否能到达该路径?
- 该行为是否赋予了攻击者新的能力?
- 目标是否拥有该错误代码并接受这种证明类型?
- 根本原因与先前的报告和 upstream 工作有何不同?
此 skill 需要一个安全 invariant、完整的 source-to-effect trace、最强有力的良性解释、阴性对照、路由所有权以及语义重复分析。它将这些决策存储在 `candidate.json` 中,并在通过确定性验证之前阻止报告的撰写。
## 安装说明
使用开放的 Agent Skills 安装程序配合 Codex、Claude Code、Cursor、OpenCode 或其他受支持的 agent:
```
npx skills add MoonFuji/invariant-first-bug-bounty
```
列出安装程序检测到的内容而不进行安装:
```
npx skills add MoonFuji/invariant-first-bug-bounty --list
```
对于手动安装,请将 repository 克隆到您的 agent 使用的 skills 目录中。目录名必须保持为 `invariant-first-bug-bounty`:
```
git clone https://github.com/MoonFuji/invariant-first-bug-bounty.git invariant-first-bug-bounty
```
常见的用户级位置包括 Codex 兼容设置的 `~/.agents/skills/invariant-first-bug-bounty` 和 Claude Code 的 `~/.claude/skills/invariant-first-bug-bounty`。
## 使用方法
要求您的 agent 在程序授权的目标上显式调用该 skill:
```
Use $invariant-first-bug-bounty to audit this in-scope source repository.
Model one security invariant before broad recon. Persist the candidate state,
trace the deepest reachable path, and return an evidence-backed terminal verdict.
```
该 skill 将以下情况视为有效结果:
| 结论 | 含义 |
|---|---|
| `REPORTABLE` | 该候选者通过了报告阶段的证据关卡 |
| `HOLD` | 缺少指定的威胁模型、证明、路由或新颖性产出物 |
| `KILL` | 关卡失败,或所谓的影响并未改变攻击者的能力 |
| `ROUTE_ELSEWHERE` | 另一个项目或披露渠道负责修复 |
| `NO_REPORTABLE_FINDING` | 所选的 invariant 在经历完整的 trace 和反驳尝试后依然成立 |
## 它如何改变狩猎过程
```
scope and route
|
security invariant
|
source-to-effect trace + sibling path
|
capability delta + strongest refutation
|
accepted proof + negative controls
|
root-cause fingerprint + route ownership
|
persisted verdict
```
广泛的 regex recon 位于 model gate 之后。在 agent 记录下 principals、受保护资产、信任边界、状态存储、执行点以及一个 invariant 之前,一个可疑的 sink 无法成为候选者。
## 机械关卡
启动一个候选者:
```
cp assets/candidate.template.json /path/to/hunt/candidate.json
python scripts/validate-candidate.py --stage model /path/to/hunt/candidate.json
```
在完成 trace 后记录最终决定:
```
python scripts/validate-candidate.py --stage decision /path/to/hunt/candidate.json
```
在撰写准备提交的报告之前:
```
python scripts/validate-candidate.py --stage report /path/to/hunt/candidate.json
```
非零的报告阶段退出意味着报告仍然被阻止。正确的做法是收集指定的证据、更改路由,或者保留不可报告的结论。为了满足 validator 而编辑毫无根据的断言违反了此工作流。
model-gated 的覆盖扫描是可选的:
```
bash scripts/recon-sweep.sh \
--candidate /path/to/hunt/candidate.json \
/path/to/in-scope-repository \
/tmp/recon-output
```
它将搜索结果写入选定的输出目录。它不负责验证漏洞。
## 包含内容
```
SKILL.md Core invariant-first controller
agents/openai.yaml Skill-list metadata
assets/candidate.template.json Durable candidate and decision state
references/ Proof, targeting, testing, and bug-class guidance
scripts/validate-candidate.py Model, decision, and report gates
scripts/recon-sweep.sh Optional model-gated source coverage
```
核心 controller 保持简洁。仅当目标架构或证明路由需要时,Agent 才会加载详细的参考。
## 为什么重复分析与众不同
该 skill 将候选者指纹化为:
```
boundary|primitive|invariant|effect
```
Agent 将该指纹与研究者的报告、程序披露、upstream issue 和 patch、最近的 advisory 以及同源实现进行比较。干净的公开搜索并不能证明其新颖性,因为私有的重复池仍然不可见。最近的 advisory 增加了竞争性,而不是创造新颖性加分。
当 HackerOne MCP 工具可用时,`SKILL.md` 定义了检查研究者的报告、程序披露、跨程序搜索以及相近报告匹配项的顺序。
## 局限性
此 skill 不保证存在漏洞、新颖性、bounty 资格、严重性或被接受。它的 regex 扫描不是安全扫描器。validator 仅检查所需的证据字段是否存在并与结论一致;它无法证明证据的真实性。
Agent 仍然可能推理错误。在提交之前,请检查 trace,复现所声称的边界,并阅读程序政策。
## 仅限授权研究
仅在程序范围和安全港条款涵盖的资产上,或您拥有的系统上使用此 skill。使用您拥有的账户和数据,尽量减少影响,并在证明可能暴露或更改第三方数据时停止。绝不使用发现的凭据或 pivot 到不相关的系统。
请勿在公开的 issue 或 pull request 中放置实时凭据、私密的程序材料或未披露的漏洞详情。
## License
MIT。详见 [LICENSE](LICENSE)。
标签:AI插件, AI智能体, Homebrew安装, 应用安全, 逆向工具