agentsclimarketplace

Omv audit

Skill bx33661/oh-my-vul/skills/omv-audit

Deep-audits a candidate finding from an Evidence.v1 file. Use when the user has an omv-find result they want to investigate further, wants to prove or disprove a vulnerability, needs to fill Evidence.v1 fields for omv-report, or invokes `/omv-audit`. Reads .omv/findings/<id>.yaml and produces a confirmed or blocked finding with all required evidence fields populated.From its SKILL.md

Install
npx -y skills add bx33661/oh-my-vul --skill omv-audit

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

2 things to look at

  • 3 stars3 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
  • runs commandsInstructs the agent to run 8 commands, including `omv threat-map init <id>` and 7 more.

SKILL.md

10.7 KB, ~3.3k tokens by cl100k_base, as published. Nobody here has run it

omv-audit

深度审计一个 candidate 漏洞发现,填充 Evidence.v1 文件,为 /omv-report 做好准备。

Stay in passive research mode: read public source code only. Do not send requests to live services, do not auto-execute PoC code. Local analysis, static reasoning, and local test descriptions are allowed.

Invocation

/omv-audit <id> [--force]
  • <id> 对应 .omv/findings/<id>.yaml 文件
  • --force 允许重新审计已为 confirmed/blocked 的文件

Reference Loading

按需加载,不要一次性全读:

  • 审计方法论与置信度框架:references/audit-playbook.md
  • CVSS v3.1 度量决策表:references/shared/cvss-builder.md
  • 14 个生态的 PatternPack manifest 位于 references/pattern-packs/,对应 Markdown registry 位于 references/patterns/
  • Evidence.v1 字段定义与 evidence/submission 评分规则:contracts/evidence.v1.yaml
  • ThreatMap.v1 图证据字段:contracts/threat-map.v1.yaml
  • Verification.v1 对抗复核 sidecar:contracts/verification.v1.yaml

审计目标

读取 .omv/findings/<id>.yaml 后,你的目标是将以下字段填写为具体、可验证的值(非 unknown):

必填(confirmed 所需)

  • versions.tested — 实际测试的版本号
  • evidence.source — 攻击者可控的输入入口(含 file:line)
  • evidence.sink — 危险操作(含 file:line)
  • evidence.guard — 缺失或可绕过的防御(含 file:line 或"不存在"的说明)
  • evidence.reproducer — 本地复现步骤描述
  • evidence.observed_result — 本地运行后实际观测到的结果(若 passive 模式无法在本地执行,保留 unknown,在 provenance.unverified_fields 中列出,交由 /omv-repro 完成)
  • cvss.vector / cvss.score / cvss.severity
  • dedup.* — NVD/GHSA/生态系统数据库检索结果
  • verdict.* — 当前可利用性判断(proven|plausible|blocked|disproven)、置信度和原因

如何达到目标,由你自主决定。 根据 finding 的实际情况——漏洞类别、已有线索、代码结构——自主选择切入点、阅读哪些文件、花多少精力在每个环节。参考 references/audit-playbook.md 获取思维框架,但不要把它当作执行脚本。

如果 finding 属于任一受支持生态,先加载 references/pattern-packs/ 下对应 JSON,再按需加载 references/patterns/ 下对应 Markdown registry,用其中的 source pattern、sink signature、expected guard、evidence criteria、false-positive checks 和 CWE 映射辅助判断。Pattern registry 是方法论,不是真实漏洞案例库;不要加载无关生态 registry。

当证据链足够清楚时,生成可选 ThreatMap.v1 sidecar,记录 source → transform → sink 的 dataflow 路径:

omv threat-map init <id>

这会在 .omv/threatmaps/<id>.yaml 生成骨架(finding_idpackage 块已从 finding 填好,paths: [] 留待填写)。然后在每个已确认的 source → sink 路径下补一条 paths[] 条目:source(type/location/description)、transforms[](中间每一步:parse/decode/normalize/validate/authorize)、sinkguard(present/bypassable)、confidence。Schema 见 contracts/threat-map.v1.yaml。ThreatMap 是 Evidence.v1 的补充,不替代 evidence.source / evidence.sink / evidence.guard 摘要字段;sidecar 不修改父 Evidence.v1 文件。填写后运行 omv threat-map validate <id>

如果进行了 verifier 对抗复核,先运行 omv verification init <id>,再把 verifier 的结论写入 .omv/verifications/<id>.yaml:同意则 decision.status: pass;找到反证则 decision.status: fail 并填写 disagreements / required_changes。写完运行 omv verification validate <id>。不要只把 verifier 结论留在聊天记录里。

解释审计结论时使用方法论语言:说明输入如何到达 sink、guard 为什么缺失或可绕过、哪些证据仍不充分。除非用户提供真实 finding 作为上下文,否则不要把真实包或真实 CVE 当作教程示例。

约束边界

以下是硬约束,不可逾越:

  1. 不攻击线上服务 — 所有分析基于公开源代码和本地环境
  2. 不自动执行 PoCevidence.reproducer 只写步骤描述,不自动运行
  3. submission score < 75 时不得升为 confirmed — 低分时保留 candidate 状态并列出缺失项
  4. blocked 必须填写 blockers 列表 — 每条 blocker 说明具体原因
  5. 不伪造证据 — 无法验证的字段保留 unknown,在 provenance.unverified_fields 中列出
  6. CLI validation 是硬门槛 — 只有 omv findings validate <id> 返回 OK 时,才允许把结论作为 confirmed 交给 /omv-report

HARD-GATE: evidence before confirmed

NO status: confirmed WITHOUT:
  - concrete evidence.source / sink / guard (prefer file:line)
  - omv findings validate <id> OK in this turn when omv is available
  - submission score ≥ 75
  - no unresolved blockers
NO exploitability: proven WITHOUT non-unknown observed_result (or explicit user observation recorded)
NO "ready to submit" LANGUAGE — that is omv review --strict, not audit

If validate fails after you tried confirmed, revert to candidate, list errors, stop.

Subagent Team Orchestration

本 skill 支持 Codex 和 Claude Code 的 subagent 编排。你在审计流程中可以显式委托给专门的 subagent 角色,让它们在独立的 context 里并行或串行完成子任务:

# 数据流分析 → 交给 dataflow-tracer subagent(2-5 个文件静态分析)
Use the dataflow-tracer subagent to analyze: [finding_id], [package_url], [vuln_class]

# Guard 可绕过性评估 → 交给 guard-checker subagent(独立 context + bypass-bias)
Use the guard-checker subagent to evaluate whether the guard at [file:line] is bypassable

# CVSS 评分 → 交给 cvss-analyst subagent(纯推理,无网络访问)
Use the cvss-analyst subagent to compute CVSS for: [vuln_class], [impact_fields]

# 去重检索 → 交给 dedup-analyst subagent(WebSearch + WebFetch)
Use the dedup-analyst subagent to check duplicates for: [ecosystem], [package], [vuln_class]

# 对抗复核 → 交给 verifier subagent(默认反驳 bias),并写入 Verification.v1
Use the verifier subagent to refute the dataflow-tracer's conclusion for: [finding_id], then record the result in .omv/verifications/<id>.yaml

推荐编排序列(全量审计)

stage 1: dataflow-tracer    → {source, sink, guard_note}
stage 2: guard-checker      → {bypassable, method}(仅在 guard 存在时调)
stage 3: dedup-analyst      → {dedup 状态}(与 stage 1 并行)
stage 4: cvss-analyst       → {vector, score, severity}
stage 5: verifier           → 对抗复核 source→sink 链,输出 Verification.v1 review
stage 6: synthesize         → 汇聚后写 Evidence.v1 + ThreatMap.v1 + Verification.v1

编排决策规则:已知的字段跳过对应阶段(例如 dedup 已 searched 则跳过 stage 3;cvss 已填则跳过 stage 4)。Subagent 调用是建议而非强制——你可以在单 context 内完成全部审计或用 subagent 协助部分环节,取决于 finding 复杂度和你的判断。无论是否使用 subagent,只要做了对抗复核,结论都必须记录到 Verification.v1 sidecar。

Subagent 可用性

Codex 使用当前会话提供的原生 delegation 能力;Claude Code 使用 omv setup --platform claude-code 安装到 .claude/agents/ 的角色定义。若当前客户端没有 subagent 能力,在主 context 中顺序完成同样的审计阶段,不得因此跳过证据门槛。

结论规则

审计结束后根据证据完整性选择结论:

结论触发条件下一步
confirmed五项 source/sink/guard/reproducer/result 全部已知,submission score ≥ 75运行 omv findings validate <id>,提示用户运行 /omv-report
blocked证据链断裂,或发现疑似重复 CVE,或无法本地复现填写 blockers,运行 omv findings validate <id>(预期 FAIL)
candidate(保留)部分字段已填但 submission score 不足;或 observed_result 为 unknown 但其他字段已填展示缺失项清单;若仅缺 observed_result,提示运行 /omv-repro <id>

同时更新 verdict

  • 已本地证明可利用:exploitability: provenconfidence: high|medium
  • 证据链合理但未复现:exploitability: plausibleconfidence: medium|low
  • 默认防护、环境前置或证据断裂阻止利用:exploitability: blocked
  • 审计证明不是漏洞:exploitability: disproven

如果尝试 confirmed 但 CLI validation 失败,必须保持或恢复为 candidate,逐条展示 validation errors,不得提示用户提交报告。

审计结束时始终运行:

omv findings validate <id>

然后运行或建议:

omv dashboard

如本轮做出关键判断(确认 source -> sink、发现 guard 缺失、判定重复或 blocked),在 .omv/notes/<id>.md 追加一条时间戳决策记录。不要把 notebook 内容写入 Evidence.v1。

Use the CLI result for lifecycle handoff:

  • If the finding remains candidate because only evidence.observed_result is missing, tell the user to run /omv-repro <id>.
  • If the finding is confirmed and validation returns OK, tell the user to run /omv-report <id>.
  • If the finding is blocked, tell the user to review blockers and optionally run omv findings archive <id> --reason blocked.

Deterministic Helpers

  • omv findings validate <id> — 校验字段完整性,输出 evidence/submission 分数
  • omv findings promote <id> --status confirmed|blocked — 更新 status 字段
  • omv threat-map init <id> — 生成 .omv/threatmaps/<id>.yaml ThreatMap.v1 dataflow 骨架
  • omv threat-map validate <id> — 校验 ThreatMap.v1 图证据和 Evidence 摘要一致性
  • omv verification init <id> — 生成 .omv/verifications/<id>.yaml Verification.v1 对抗复核骨架
  • omv verification validate <id> — 校验 Verification.v1 和 Evidence hash 是否过期
  • omv dashboard — 显示 active findings 的下一步动作
  • python3 scripts/resolve_source_path.py --ecosystem npm --pkg <name>(Windows 使用 py -3)— 获取源文件 raw URL
  • python3 scripts/collect_metadata.py --repo <github-url>(Windows 使用 py -3)— 获取仓库元数据

What ships with it: 43 files

72.2 KB alongside SKILL.md, 1 of them executable

3 more files not listed here. See all 43 in the repository.

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.