Skip to content

v1.6.7 — 武器输出结构化解析(P0)

Choose a tag to compare

@hack-umbrella hack-umbrella released this 13 Oct 13:51
· 10 commits to llm since this release

P0:武器输出 → 结构化落库(路线图第 1 项主体)

问题

代码里没有任何解析器:nmap/nuclei 的输出动辄上千行,靠 agent 逐条 pentest_add_asset /
pentest_add_fact 必然漏项、重复、丢字段,且无法度量覆盖率。

新增

  • lib/ingest.mjs:纯函数解析器(零依赖、零 I/O、可复现)
    • nmap -oX XML → ip/subdomain 资产、port/service fact、脚本输出 info(只收 open 端口)
    • nuclei -jsonl → kind=vuln 候选(severity / template-id / matcher / extracted)
    • httpx -jsonl → 存活端点 + http fact(title/tech/webserver/状态码)
    • ffuf -of json → 端点候选 + http fact
    • masscan -oJ / naabu -json → 端口 fact
    • kind: auto 按内容嗅探,嗅探不出报错而不猜
    • 坏行/缺字段只记 notes,绝不静默丢数据
  • pentest_ingest 工具(决策层):读文件(≤64MB)→ 解析 → 合并去重 → 落库
    • 去重键:资产 type|value、事实 kind|target|detail;重复只合并来源
    • 每条记录带 sources=文件名@sha256前12位(溯源)
    • 资产按父类优先创建,解析器只给逻辑父子(不给 id),id 由工具解析
    • 已加入子 agent 的 toolFilter.deny(store 写入仍归决策 agent)
  • 明确不产出 finding:nuclei 命中落成 vuln fact,必须验证后才能 pentest_add_finding

测试

新增 test/ingest.test.mjs 30 项(真实工具输出样例:类型嗅探、字段完整性、
前缀陷阱、坏行留痕、去重合并、可复现性、坏输入报错)。npm test 共 11 个测试文件全绿。

同时补上已知事故的回归测试与文档(test/repair-v0-logs.test.mjs 15 项 + 旧会话修复章节),
并新增 ROADMAP.md 记录 1-10 项补齐计划的交付物与验收标准。