Anthropic 为何构建它
在过去六个月中,Anthropic 的模型在重要的开源软件中发现了超过 29,000 个候选漏洞,但其安全团队只能手动审核约 6,000 个。许多收到首批经人工验证报告的维护者表示,希望直接收到所有未经验证的报告以及拟议的补丁 — 近 5,000 份报告就这样发了出去。
OSS Scanner 将此流程转变为可选择加入的快速通道。经人工验证的报告仍会通过 Anthropic 的协调漏洞披露 (CVD) 流程处理;已加入的项目还会在原始模型输出准备就绪后立即收到。Anthropic 表示,该项目的灵感来自 Google 的 OSS-Fuzz。
维护者会收到什么
完成登记后,项目会接受扫描,维护者会通过电子邮件收到一组报告。Anthropic 的流水线包含用于复核漏洞、提出补丁和进行根因分析的代理。每份报告都包含:
- 可独立运行的复现程序
- 漏洞说明;在可行的情况下,还会通过二分查找确定漏洞何时引入
- 可用时提供候选补丁
项目会定期重新扫描,以发现新引入的漏洞以及之前遗漏的漏洞。扫描频率取决于流水线中的项目数量、项目的使用范围和其他因素。
准确度如何?
发布前,Anthropic 的渗透测试人员检查了 48 个项目中的 97 个严重和高危漏洞报告。其中 85 个(88%)符合 Anthropic 的 CVD 流程标准;其余 12 个中,有 11 个是真实问题,但与已知问题重复,只有 1 个是假阳性。Anthropic 预计真阳性率会超过 90%,同时提醒严重性评级可能偏高,或者扫描器可能无法正确理解项目的威胁模型。
早期参与者的反馈积极。wolfSSL 报告称,在 74 份报告中,除两份外均有效,其中五份最终成为 CVE。Daniel Stenberg 表示,扫描器发现了 curl 多年来最严重的漏洞之一;PostgreSQL、OpenSSL 和 HotCRP 的维护者也对这些报告表示赞赏。
谁符合资格
Anthropic 采用与 OSS-Fuzz 类似的标准:逐个评估对基础设施和用户安全具有关键影响的成熟项目。重要因素包括遭受远程攻击的风险(例如处理不可信输入的库),以及用户和依赖项目的数量。如果项目的重要性不明显,请添加一句简短说明。
Anthropic 会人工核实申请者是否为核心维护者,并可能通过其他渠道联系项目方。这项服务面向能够及时处理已核实的高危和严重漏洞报告的项目——如果你的收件箱已经不堪重负,现在可能还不适合使用这项服务。
如何申请
核心维护者向 github.com/anthropics/oss-scanner 提交拉取请求,添加 projects/your-project/project.yaml,并以该仓库中的模板为起点。
必填字段:
- repo — 用于克隆的 git URL,可选择附加 #branch;无需托管在 GitHub 上
- primary_contact — 接收所有报告的电子邮件地址
- Dockerfile — 相对于 repo 的 Dockerfile 路径,该文件用于安装依赖项并构建项目;或者,将名为 Dockerfile 的文件放在 project.yaml 旁边,并省略此字段
可选字段:
- auto_ccs — 每份报告中抄送的其他地址
- homepage — 项目网站
- threat_model — 威胁模型文件路径,默认为 .oss-scanner/threat_model.md
- pgp — 用于加密报告邮件的公钥;设置此项后,不允许使用抄送地址
- disabled — 设置为 true 可暂停报告
运行 tools/validate.py,并在本地构建 Dockerfile,然后再提交拉取请求。申请获批后,Anthropic 会在其基础设施上构建镜像;如果构建失败,会通过电子邮件通知你。
Dockerfile 和离线审计
Dockerfile 的构建过程可以访问网络。此后,代理执行的所有审计都在经过加固的沙箱中运行,互联网访问会被完全禁用。因此,镜像必须预先安装所有依赖项并构建项目。Anthropic 建议确保测试能在容器内通过:这样代理就可以编译并运行代码来确认漏洞。
威胁模型文件
threat_model.md 是可选文件,没有规定格式。你可以借此向代理说明其他地方未记录的信息:
- 哪些代码应接受测试、哪些输入属于对抗性输入,以及哪些内容不在范围内
- 严重、高危、中危和低危的评级标准
- 报告应采用的形式、补丁应尽量精简还是达到可合并状态,以及哪些概念验证有用
- 去重应达到的粒度
没有该文件时,扫描器会自行推测。你可以在两次扫描之间修改此文件,以调整报告内容。我们的威胁模型生成器可以生成一份可直接使用的文件。
披露、暂停和署名
这些未经验证的漏洞报告没有 90 天期限。如果 Anthropic 之后通过其 CVD 计划验证某份报告,可能会在告知你有人工验证人员确认后 90 天披露该漏洞。Anthropic 表示,未来可能会为部分高危报告设定期限,并会提前通知且提供退出选项。
要暂停服务,请在 PR 中将 project.yaml 里的 disabled: true 设为 true;要退出,请删除 projects/ 目录。请直接回复报告邮件提供反馈;如果你尚未登记,请写信至 oss-scanner-questions@anthropic.com。
署名为可选项。Anthropic 建议在提交说明中加入类似这样的内容:“由 Anthropic 的 OSS Scanner 发现,漏洞编号 ANT-2026-ABCD1234”。
数据安全
报告按照 Anthropic 标准 CVD 漏洞报告的方式处理:存储在隔离且严格受限的云项目中,仅运行该计划的安全人员可以访问。
OSS Scanner 与 Claude Security 的区别
Claude Security 是 Anthropic 面向企业的商业产品,用于发现并修复企业自身代码中的漏洞。OSS Scanner 面向开源维护者:它增加了耗用大量 token 的实验性测试框架,以发现更深层的漏洞,全部费用由 Anthropic 承担。维护者还可以通过 Claude for OSS 免费获得 Claude Max 20x;安全专业人员则可以申请加入 Cyber Verification Program。
project.yaml 生成器
填写字段,即可生成符合 Anthropic 常见问题解答中所述格式的 project.yaml,并获取提交拉取请求所需的命令。提交前请务必检查仓库中的当前模板。
任何公开的 git 托管平台均可。分支会以 #branch 的形式附加。
Anthropic 仓库中 projects/ 下的文件夹。
通常填写你自己的邮箱。所有报告都会发送到此邮箱。
相对于 repo 的路径。如果你将 Dockerfile 放在 project.yaml 旁边,请清除此项。
可选,多个地址以逗号分隔。
除非文件位于其他位置,否则请保留默认值。
可选。报告将加密;此时不允许抄送。
projects/my-project/project.yaml
repo: https://github.com/owner/project primary_contact: you@example.org Dockerfile: Dockerfile
打开拉取请求
gh repo fork anthropics/oss-scanner --clone cd oss-scanner mkdir -p projects/my-project cp ~/Downloads/project.yaml projects/my-project/project.yaml python3 tools/validate.py git checkout -b enroll-my-project git add projects/my-project git commit -m "Enroll my-project in OSS Scanner" git push -u origin enroll-my-project gh pr create --repo anthropics/oss-scanner --fill
需要 GitHub CLI (gh) 和 Python 3。Anthropic 会在接受申请前手动核实你是核心维护者。
Dockerfile 示例
适用于使用 CMake 构建的 C/C++ 项目的起点。请根据项目调整软件包和构建命令;关键是所有内容都在镜像内安装和构建,因为审计会离线运行。
FROM debian:bookworm
RUN apt-get update && apt-get install -y --no-install-recommends \
build-essential cmake git ca-certificates pkg-config \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /src
COPY . .
# Build everything and fetch all dependencies now:
# the audit itself runs with no network access.
RUN cmake -B build -DCMAKE_BUILD_TYPE=Debug && cmake --build build -j"$(nproc)"
# Optional, but recommended: make sure tests pass inside the image.
RUN ctest --test-dir build --output-on-failure关于 Anthropic OSS Scanner 的常见问题
Anthropic OSS Scanner 免费吗?
是的。Anthropic 承担已登记项目扫描的全部费用。
我的项目必须托管在 GitHub 上吗?
不需要。repo 字段可以指向任何 git 托管平台。只有登记申请的拉取请求会提交到 GitHub。
报告经过人工审核吗?
不。快速通道报告完全由模型生成。人工验证的报告仍会通过 Anthropic 的 CVD 流程单独发送。
如果我的项目未获接受怎么办?
你可以随时在 ossscanner.org 上扫描该项目,并在此登记以接收每周深度扫描——任何公开仓库均符合条件。
如何停止接收报告?
提交一个 PR,在 project.yaml 中添加 disabled: true,或删除项目目录。之后你将只会收到经过人工验证的 CVD 报告。