2026西湖龙井茶官网DTC发售:茶农直供,政府溯源防伪到农户家
环境设置
上个月,一位朋友通过私信给我发了一张截图。一个人工智能安全代理“发现”了一个流行开源项目中的漏洞。该代理逐步展示了利用步骤,建议了补丁,可谓面面俱到。看起来非常可信。
随后有人指出,它反复近乎直接引用的通用漏洞披露编号实际上是多年前的。
这种情况将会持续发生。当我们将大型语言模型集成到漏洞研究工作流程中时,我们遇到了一个在传统静态分析中没有完全对应类比的问题:你使用的工具可能已经在训练数据中见过答案,并且它无法可靠地告诉你哪些发现源于推理,哪些源于记忆。
在过去的几个月里,我在一份合同工作中为安全流程添加了人工智能辅助的初步分类功能。以下是我关于如何避免被误导的一些心得。
发生原因(根本原因)
大型语言模型是在开放互联网上所有可抓取的文本上进行训练的。其中包括:
- 完整的 美国国家漏洞数据库
- GitHub 安全公告
- 博客上的通用漏洞披露撰写文章
- 漏洞赏金披露(在禁运期结束后)
- 邮件列表存档(如开源安全、完全披露等)
- 项目变更日志和提交信息
如果一个通用漏洞披露在模型的训练截止日期之前已经公开,那么该模型很可能已经见过关于该漏洞的描述、补丁,以及可能还有某人对其的分析。当你让同一个模型检查那个存在漏洞的文件时,它并不总是在发现漏洞——有时它只是在识别漏洞。
棘手之处在于:模型通常无法告诉你究竟是哪种情况。无论哪种情况,它生成的输出都同样自信。内部并没有标记来区分“我从记忆中检索到此信息”与“我是根据眼前的代码推导出的”。
这与导致大型语言模型在泄露的基准测试问题上表现不可靠的现象相同——如果基准测试内容进入了训练数据,模型就会通过回忆来“解决”它。而在安全领域,这一问题的后果更为严重。
验证工作流程
这是我在任何被人工智能标记的发现升级之前所执行的粗略流程。这些方法并不新奇——我希望我从第一天起就这么做了。
第一步:首先检查公共数据库
在信任任何发现之前,将漏洞指纹与已知的通用漏洞披露进行模糊匹配。美国国家漏洞数据库发布了你可以本地拉取的 JavaScript 对象 notation 数据馈送:
import json
from difflib import SequenceMatcher
from pathlib import Path
# 美国国家漏洞数据库年度馈送: https://nvd.nist.gov/vuln/data-feeds
def load_nvd_feed(year: int) -> list[dict]:
path = Path(f"nvdcve-1.1-{year}.json"免责声明:本文内容来自互联网,该文观点不代表本站观点。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请到页面底部单击反馈,一经查实,本站将立刻删除。