跳转到内容
ossscanner.org

工作原理

从仓库链接到经过验证的漏洞发现项

该流程与 Anthropic 为其 OSS Scanner 介绍的流程相同——威胁模型、审计、复核、根因分析、补丁——并基于可通过公共 API 使用的前沿 Claude 模型构建。

  1. 1

    安全克隆

    我们通过 HTTPS 执行浅克隆,并过滤 blob,只获取你指定的分支。Git hooks 会被禁用,符号链接会作为普通文件检出,且所有非 HTTPS 传输方式都会被拒绝。我们会屏蔽私有网络地址,因此无法将扫描器指向内部主机。

    仓库中的任何内容都不会被执行:不构建、不安装软件包、不运行测试。扫描结束后会删除检出内容。

  2. 2

    清点和风险排序

    我们会列出每个文本源文件及其语言和大小。随仓库引入的第三方代码、生成文件、压缩包和锁文件会被跳过。我们会根据危险操作点——内存复制、shell 执行、反序列化、SQL 构造、模板渲染、路径拼接、加密和身份验证代码——以及解析器、协议处理程序和请求路由等热点路径,为每个文件计算风险分数。

  3. 3

    威胁模型

    如果仓库中有 .oss-scanner/threat_model.md(Anthropic 的扫描器也会读取同一文件)、SECURITY.md,或你在注册时提供的威胁模型,扫描器就会遵循它。否则,模型会读取 README、目录结构和风险最高的文件,并起草一份威胁模型:项目的用途、不可信输入的入口,以及不在范围内的内容。

    威胁模型还会选出重点文件,让审计资源集中用于攻击者实际能够触及的代码。

  4. 4

    审计

    风险最高的文件会按行号整理成大批次,并连同威胁模型一起发送给推理模型。模型会查找细致的人类审计人员可能会报告的问题:

    • 内存安全:溢出、释放后使用、整数截断
    • 注入:SQL、命令、模板、路径遍历、SSRF
    • 身份验证、授权和会话逻辑
    • 不安全的反序列化和解析器混淆
    • 密码学误用和机密信息处理

    快速扫描使用 Claude Haiku,并采用适中的预算。已登记项目的深度扫描使用 Claude Sonnet,读取的代码量最多可增加至四倍。

  5. 5

    独立验证

    每个候选漏洞发现项都会交由拥有全新上下文的独立验证代理处理。它的任务是证伪该发现项:追踪数据流、查找其他位置的验证逻辑,并根据威胁模型检查输入是否真的由攻击者控制。只有经其确认或评为很可能成立的发现项才会保留;其余都会计为已驳回。

    对于保留的发现项,验证代理会撰写根因分析、复现用例,并以统一 diff 格式提供最小候选补丁。

  6. 6

    引入漏洞的提交和报告

    我们会合并根因相同的重复发现项。对存在漏洞的代码行运行 git blame,找出最近一次修改这些代码行的提交——通常就是引入漏洞的提交——这样你就可以添加 Fixes: 标签,并确认哪些版本受到影响。

    报告会以随机且不可猜测的 ID 存储。你可以将其导出为 Markdown 格式,用于安全公告;导出为 JSON 格式,用于工具处理;或导出为 SARIF 2.1.0 格式,用于 GitHub 代码扫描。

扫描器不会做什么

  • 不会运行或构建你的代码,也不会获取依赖项。
  • 不会公开漏洞发现项、创建问题单,也不会联系任何人(已注册的维护者除外)。
  • 扫描后不会保留你的源代码副本。报告只包含受影响代码行的简短片段。
  • 不作任何保证:模型可能漏掉漏洞,有时也会误报。干净的报告不等于安全认证。

为何隐藏复现用例

任何人都可以粘贴公开仓库链接,包括非维护者。根因分析和补丁有助于防御者;可运行的概念验证主要有助于攻击者。因此,复现用例会保持隐藏,直到有人向仓库提交令牌文件——这证明此人能够发布修复。此做法遵循 Linux 内核的指导:只有维护者提出请求时,才分享 AI 发现的漏洞复现用例。

这与 Anthropic 的 OSS Scanner 有何不同

Anthropic 会在离线沙箱中运行扫描器,并根据 Dockerfile 构建项目,因此代理可以编译并执行代码,动态确认漏洞。它使用最强大的模型,包括 Claude Mythos;该模型目前不对公众开放。我们使用公开可用的 Claude 模型进行静态代码分析。作为交换,任何人都可以在几分钟内使用 ossscanner.org,无需申请或 Dockerfile。