在隔离的离线虚拟机中构建已注册的开源仓库,并扫描其安全漏洞,通过电子邮件发送包含复现步骤和建议补丁的发现结果的服务。
OSS Scanner 是 Anthropic 提供的一项服务,用于扫描关键开源代码仓库中的安全漏洞。要了解有关该服务的更多信息,请访问 red.anthropic.com/oss-scanner。
请注意,使用此工具须遵守 OSS Scanner 条款 中列出的条款和条件。
通过提交一个添加以下目录的拉取请求来注册一个开源项目:
projects/<name>
我们的安全扫描器会在隔离的虚拟机中构建你的项目,然后在无互联网访问的情况下对其进行分析,并将发现的问题通过电子邮件发送给 primary_contact(以及任何抄送对象),每封邮件都附有复现步骤和可用的建议补丁。报告由模型生成,未经人工审核。因此,我们不会对这些发现设置 90 天的披露期,也不会将其公开。项目所有者应提供 project.yaml(用于配置扫描器)、Dockerfile(说明如何构建项目),以及可选的 threat_model.md(提供项目特定的威胁建模)。
从 templates/project.yaml 开始:
repo: https://github.com/example/project # required: the git repository to scan; add #branch to pin one
primary_contact: [email protected] # required: reports and build problems go here (one address)
auto_ccs: # optional: more addresses on every mail
- [email protected]
homepage: https://example.org # optional
disabled: false # optional: true pauses reports without removing the enrolment
dockerfile: .oss-scanner/Dockerfile # required unless a Dockerfile sits in this repo next to your project.yaml
threat_model: .oss-scanner/threat_model.md # optional; also supports placing the file in this repository
repo 和 primary_contact 始终是必填项。dockerfile 是必填项,除非你将 Dockerfile 放在 project.yaml 旁边(见下文)。其他项均为可选。
project.yaml 中的电子邮件地址是公开的。请使用你愿意公开的地址,例如安全别名。
如需接收加密报告,请添加你的 ASCII 装甲 OpenPGP 公钥。报告随后只会发送到 primary_contact;pgp 不能与 auto_ccs 同时使用:
pgp: |
-----BEGIN PGP PUBLIC KEY BLOCK-----
mQINBF...
-----END PGP PUBLIC KEY BLOCK-----
你必须提供 Dockerfile,且只能放在以下两个位置之一:
dockerfile: 设置为其路径(我们建议放在类似 .oss-scanner/Dockerfile 的位置)。这是首选方案,因为它允许你在无需在此处提交拉取请求的情况下更新构建;或者,project.yaml 旁边,即 projects/<name>/Dockerfile,并且不在 project.yaml 中设置 Dockerfile: 键。如果你不想向自己的仓库添加文件,可以将其放在此处,扫描器会像构建仓库内副本一样构建它。(威胁模型的工作方式相同。设置 threat_model 字段以指定其在你仓库中的位置,或将其放在此处 projects/<name>/threat_model.md。)
Dockerfile 的用途是设置你的环境、安装所有依赖项并构建项目。初始项目设置会在启用网络访问的情况下运行,但之后的安全审计会在无互联网访问的情况下运行。构建或测试所需的任何内容都必须在初始 Dockerfile 设置期间获取。我们建议检查你的测试在构建出的镜像中是否通过。
threat_model.md(可选但强烈推荐)文件允许你向扫描器提供有关你预期安全目标的文档。我们发现,提供有关你如何评定报告严重性的指导最为有用(例如,你是否认为认证后 SQLi 是高危还是严重?没有已证实利用的缓冲区溢出是否最高只定为高危?存储型 XSS 何时为中等、高危和严重?)。该文件还可以说明项目做什么、不可信输入从哪里进入、哪些组件重要、哪些不在范围内、你希望报告和补丁呈现为何种形式,或任何其他你认为重要或有用的内容。
我们建议你在提交拉取请求之前运行两个命令:
tools/validate.py 会根据上述规则检查 projects/<name>/。tools/check <name> 会按照我们的扫描器的方式构建你的项目,并在无网络的已完成镜像中打开一个 shell。如果你的测试在此容器中通过,我们的扫描器很可能就能处理你的项目。tools/check --qemu <name> 会在按扫描器方式布置的虚拟机中执行相同操作。这些工具需要你的主机已安装 git、Docker 和带 PyYAML 的 Python 3(pip install pyyaml);--qemu 需要 x86-64 上的 Linux,并使用 QEMU 而不是 Docker。
primary_contact 发送包含错误消息的电子邮件。primary_contact 和任何其他抄送对象,并附上复现步骤和可用的建议补丁。你可以随时通过 PR 编辑你的项目。要取消注册你的项目,请将 disabled 字段设置为 true 以暂停报告,或移除 projects/\<name\>/ 以完全撤回项目。
tools/check 会像 docker build 一样,在启用网络访问的情况下运行你项目的 Dockerfile。使用 --qemu 时,构建会在虚拟机内运行,这使其无法访问你的文件,但它仍然可以访问你计算机和本地网络上的服务。只检查你信任的项目,或使用一台没有什么可失去的机器。tools/check 会将 Claude Code 安装到它构建的镜像中(扫描器也会这样做)。Claude Code 受其自身条款约束。请访问 red.anthropic.com/oss-scanner。
维护状态: 此仓库由 Anthropic 积极维护。我们仅审查并合并注册拉取请求(projects/<name>/ 下的更改);我们不接受其他贡献,包括对 tools/ 或 templates/ 的更改。有关如何注册,请参阅 CONTRIBUTING.md;要报告此仓库中的漏洞,请参阅 SECURITY.md;另请参阅 CODE_OF_CONDUCT.md。