Skip to content

长期路线:finding 语义级去重与链式发现合并机制(#87 后续) #89

Description

@wufufu770

长期路线:finding 语义级去重与链式发现合并机制(#87 的后续)

关联 #87(防垃圾洞四层改进)。#87 的签名去重(host+path+category+词面 Jaccard)解决"同端点同缺陷",本 issue 跟踪两个它覆盖不到的长期方向。

方向一:语义级去重(接入 knowledge-retrieval 的 trigram 索引)

问题:词面 Jaccard 对"同一缺陷换措辞"不敏感。实测一轮 SRC 中同一 CORS 缺陷被以不同措辞报告 ~283 次,签名去重只归并了同 path 部分,跨措辞变体仍依赖阈值运气。

提案

  1. 复用 knowledge-retrieval.mjs 已有的字符 trigram TF-IDF 余弦索引与 index.bin 缓存机制(该索引已服务于知识卡检索,零新依赖),为 Finding 建第二个索引:语料 = title + category + endpoint path
  2. auto-triage 判重时从"词集 Jaccard"升级为"词集 Jaccard + trigram 余弦"双通道:任一超阈即候选重复,双通道交叉确认再 reject(降低误杀)
  3. 阈值建议:余弦 ≥0.85 且词集 J≥0.3 → 近重复;0.6-0.85 灰区 → triaged 但 reason 标 possible_dup,供面板人工裁决

方向二:链式发现的跨 worker 合并机制

问题:deep/exploit-chainer worker 被鼓励产出"链式整合报告"(EXPLOIT CHAINER / MASTER / L3 chain 类),同一攻击链被多个 worker 各自整合成独立 finding——实测同一链条存在 5-6 份变体,且链式 finding 的首个 URL 各不相同,签名去重天然失效。

提案

  1. 链签名:chain 类 finding(category 含 chain/exploit-chain)按"涉及 Endpoint 集合的哈希 + 根因类别集合"生成 chain_sig,写入时同签名 → 409 引用既有链(与写入时签名去重同机制)
  2. 证据追加而非新建:同链新证据走 /write/signal[:AT] 到链内端点;Finding.repro 只增补差异步骤
  3. 面板呈现:d2d Findings 看板按 chain_sig 聚簇展示,簇内展开各 worker 的独立证据

优先级建议

  • 方向一成本低(索引/缓存/纯函数基建都在),建议先行
  • 方向二依赖 chain 类 finding 的结构化约定(目前 category 命名混乱:exploit-chain/attack-chain/chain/complete-abuse-chain 混用),需先定 category 枚举口径

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions