mcpField
B
Betterleaks Cloud - GitHub, Git, S3, Dir Secret Scanner

Betterleaks Cloud - GitHub, Git, S3, Dir Secret Scanner

远程服务
apify.com安全05 周前更新

关于 Betterleaks Cloud - GitHub, Git, S3, Dir Secret Scanner

Betterleaks Cloud 是托管在 Apify 上的密钥扫描器,面向安全团队和研究人员。它可扫描 GitHub、Git 仓库、S3 兼容存储及其他输入,并可选检测发现的密钥是否仍有效。

主要功能

  1. 01扫描 GitHub、Git、S3、R2 和 MinIO
  2. 02按关键词搜索 GitHub
  3. 03扫描归档文件和原始文本
  4. 04可选验证发现的密钥
  5. 05使用自定义 TOML 规则
  6. 06导出结构化发现记录

适用场景

  1. 01审计组织的 GitHub 仓库
  2. 02报告前检查泄露凭据
  3. 03按计划持续扫描
  4. 04检查公开的 S3 兼容存储

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://mcp.apify.com/?tools=anshumanatrey/betterleaks-cloud
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

全部服务地址
Streamable HTTPhttps://mcp.apify.com/?tools=anshumanatrey/betterleaks-cloud需要授权

工具

详细介绍

Betterleaks Cloud - GitHub 和 S3 密钥扫描器

托管于云端的 Betterleaks v1.3.1,可用于在 GitHub、克隆的 Git 仓库或 S3 / R2 / MinIO 存储桶中查找泄露的 API 密钥、钱包私钥和凭据。可选的实时验证功能会针对每个检测到的密钥调用供应商 API,以标记哪些密钥仍然有效。

可作为 Apify Actor 使用。启动费用为 $0.05,每扫描一个仓库收费 $0.05,每个经实时验证的密钥收费 $0.30。无需安装,无需 CLI,输出为扁平 JSON。


它有什么功能?

扫描 GitHub 组织、用户、仓库、拉取请求、议题、gist、操作工作流或 S3 存储桶,查找泄露的凭据。本工具基于 Betterleaks(Gitleaks 的继任者,由原 Gitleaks 作者 Zachary Rice 和来自 Red Hat、Amazon、RBC 的共同维护者维护)构建。Betterleaks CLI 的每个标志都以输入字段的形式提供。启用验证后,会针对每条发现实时调用供应商 API,并标记为 valid、invalid、revoked、unknown 或 error。

它与在本地运行 Betterleaks 有什么不同?

本地 Betterleaks CLI此 Actor
设置安装 Go 二进制文件、设置 GitHub 令牌、配置 shell粘贴 JSON 输入
范围一次处理一个目标github / git / s3 模式 + 我们的 global_github 模式(由 Code Search 选择仓库)
验证成本由你的机器承担 HTTP 出站流量由 Apify 管理,使用并行工作进程
输出处理输出到 stdout JSON,由你自行解析数据集记录,可筛选视图
定时运行cron + 自行配置内置 Apify Schedules
成本你笔记本电脑的电费Actor 启动费用 $0.05 + 每扫描一个仓库 $0.05

它与我们的 gitleaks-github-secret-scanner Actor 有什么不同?

gitleaks-cloudbetterleaks-cloud(本工具)
引擎Gitleaks 8.xBetterleaks 1.3.1(Gitleaks 的继任者)
实时验证不支持支持(可选)
来源类型仅 github + gitgithub、git、s3、dir、stdin、global_github
定价$0.01 + 每个仓库 $0.02$0.05 + 每个仓库 $0.05 + 每个经实时验证的密钥 $0.30
最适用场景批量扫描,单次扫描成本低关注“密钥是否仍然有效?”的高级扫描

什么时候应该使用它?

  • 审计自己的 GitHub 组织,查找意外提交到提交记录中的密钥
  • 在漏洞赏金狩猎中,报告前实时验证密钥
  • 收购前对目标公司的 GitHub 足迹进行安全检查
  • 按计划持续监控,并在发现任何新的、经实时验证的密钥时发出警报
  • 取证:追踪哪个 PR 引用中的哪个悬空提交泄露了凭据
  • 扫描他人公开分享的 Cloudflare R2 / AWS S3 存储桶

费用是多少?

按事件付费:

  • 每次 Actor 启动收费 $0.05
  • 在 github / git / global_github 模式下,每扫描一个仓库收费 $0.05
  • 每条推送到数据集的发现收费 $0.01
  • 每个经实时验证的密钥收费 $0.30(仅当启用验证且状态返回 valid 时收费)
  • 每次 Code Search 查询收费 $0.005(仅限 global_github 模式)

典型扫描:

场景费用
扫描 1 个小型仓库,发现 1 条结果,不进行验证$0.11
扫描 1 个大型仓库,发现 30 条结果,不进行验证$0.40
扫描包含 25 个仓库的组织,发现 50 条结果,不进行验证$1.80
搜索 25 个仓库中的 rzp_live_$1.93
扫描 100 个仓库,发现 200 条结果,其中 10 个密钥经实时验证$10.05

与 GitGuardian Enterprise 每年约 $5000 的固定费用相比。使用此 Actor 进行全面扫描,每次可便宜 300–500 倍。

可以扫描哪些模式?

模式扫描内容必填输入
github指定的 GitHub 组织/用户/仓库/PR/议题/gist(由你选择)建议提供 target_url、github_token
global_github按关键字搜索整个 GitHub——我们通过 Code Search 添加了这一层必须提供 global_search_query、github_token
git包含完整历史记录的单个 git 克隆 URLtarget_url
s3AWS S3、Cloudflare R2、MinIO 或任何兼容 S3 的存储桶target_url、S3 凭据(公开存储桶可使用 s3_anonymous)
dirtarball/zip URL——我们会下载、解压并扫描文件系统dir_source_url
stdin你粘贴的原始文本内容stdin_content

在 github 模式下可以扫描哪些 GitHub 资源?

可以扫描 betterleaks 支持的全部 12 种资源,并通过 include/exclude 进行选择:

  • repos(默认)、forks
  • prs、pr-comments
  • issues、issue-comments
  • actions、action-artifacts
  • discussions
  • releases、release-assets
  • gists

你还可以按 since/until 日期筛选,使用 glob 模式排除仓库,或指定目标 GitHub Actions 工作流文件。

能否发现已从当前文件中删除的泄漏?

可以。Betterleaks 会扫描完整的 git 历史记录。即使某个密钥已提交,随后又在之后的提交中删除,它仍会保留在历史记录中并被检测到。每条发现记录中的 Commit 字段会告知你引入泄漏的提交。

你还可以启用高级 --log-opts 透传功能,使用 git pickaxe(-S secret_string)针对性地搜索历史记录。

是否会通过供应商的实时 API 验证密钥?

可选——默认关闭,以便加快扫描速度。设置 validation: true 后,Betterleaks 会使用规则内置的 CEL 验证器,针对每条发现记录向供应商 API 发送 HTTP 请求。

输出字段:

  • ValidationStatus:valid(仍处于活动状态)、invalid(已拒绝)、revoked(已明确禁用)、unknown(无法确定)或 error
  • ValidationReason:人类可读的原因说明
  • ValidationMeta:供应商专属元数据。对于 GitHub PAT,其中包括 username、name 和已授予的 scopes。对于 Stripe,则包括测试/实时模式和账户信息。

注意:只有 TOML 中包含 validate CEL 子句的规则才会进行验证。并非每种检测到的密钥类型都有对应子句(上游规则集会不断扩充)。

你还可以调整验证行为:

  • validation_timeout(每个请求的 HTTP 超时时间)
  • validation_workers(并行 HTTP 工作线程数)
  • validation_status(仅筛选输出特定状态)
  • validation_debug(在 ValidationMeta 中包含原始 HTTP 响应)
  • validation_extract_empty(即使验证器输出为空,也将其包含在内)
  • validation_env_vars(向 CEL 验证器公开额外的环境变量)

可以使用自定义检测规则吗?

可以——将完整的 betterleaks TOML 配置粘贴到 custom_config_toml 中。根据 TOML 的编写方式,该配置会替换内置规则或在其基础上添加规则。

你还可以使用 enable_rule,仅运行内置规则集中白名单内的规则 ID(例如 `["github-fine-grained-pat", "stripe-secret-key"]),而无需编写自己的配置。

格式参考:https://github.com/betterleaks/betterleaks/blob/main/.betterleaks.toml

输出是什么样的?

每条数据集记录都是 betterleaks 的原始 Finding 结构体——不会进行转换,也不会重命名字段:

{
  "RuleID": "github-fine-grained-pat",
  "Description": "GitHub Fine-Grained Personal Access Token, risking unauthorized repo access.",
  "Match": "github_pat_11AABBCC...",
  "Secret": "github_pat_11AABBCC...",
  "StartLine": 12,
  "EndLine": 12,
  "StartColumn": 18,
  "EndColumn": 105,
  "MatchContext": "...optional surrounding lines if match_context is set...",
  "CaptureGroups": {},
  "Fragment": {
    "FilePath": "config/secrets.env",
    "Url": "https://github.com/owner/repo/blob/<sha>/config/secrets.env#L12"
  },
  "Attributes": {
    "path": "config/secrets.env",
    "resource": "git.patch_content",
    "url": "https://github.com/owner/repo/blob/<sha>/config/secrets.env#L12",
    "git.author_name": "alice",
    "git.author_email": "[email protected]",
    "git.commit": "abcd1234",
    "git.date": "2025-06-12T10:23:14Z",
    "git.message": "Add config",
    "github.owner": "owner",
    "github.repo": "repo",
    "github.visibility": "public"
  },
  "Tags": [],
  "Fingerprint": "abcd1234:config/secrets.env:github-fine-grained-pat:12",
  "ValidationStatus": "valid",
  "ValidationReason": "",
  "ValidationMeta": {
    "username": "alice",
    "name": "Alice Doe",
    "scopes": "repo, workflow"
  }
}

该数据集预配置了两个视图:

  • 发现记录:所有记录
  • 仅显示有效密钥:筛选出 ValidationStatus == valid 的记录,作为高置信度的分类列表

准确度如何?

基于 Betterleaks 1.3.1 的底层规则集(200 多个检测器),以及上游基于 BPE 分词的误报过滤器和基于 CEL 的上下文过滤器。实际测试运行中的计算用量:

  • 扫描单个小型仓库:约 7 秒,0.0084 个计算单位
  • 扫描 anshumanatrey/*(约 30 个仓库):约 134 秒,0.1491 个计算单位,735 条发现
  • 使用查询 rzp_live_ 扫描 3 个仓库的 global_github:约 8.5 秒,0.0095 个计算单位,14 条发现

常见问题

问:可以扫描私有仓库吗? 可以,提供具有 repo 权限范围的 github_token 即可。

问:会扫描 PR 分支和悬空提交吗? 可以通过 --include prs 扫描 PR 引用。目前不会扫描悬空提交,但底层工具支持此功能。

问:如何处理速率限制? 未提供 github_token 时,GitHub 的共享速率限制约为每小时 60 次请求。提供令牌后,你的账户每小时可发起 5000 次请求。进行任何实际扫描时,请务必提供令牌。

问:可以定期运行吗? 可以,通过 Apify Schedules 实现。推荐用于持续监控场景。

问:可以使用自己的 betterleaks 规则 TOML 文件吗? 可以,通过 custom_config_toml 设置。也可以通过 enable_rule 将特定内置规则加入白名单。

问:什么是 global_github 模式? 这是我们在上游 betterleaks 基础上新增的模式。你提供搜索查询,我们使用 GitHub Code Search 查找不重复的候选仓库,然后并行对每个仓库运行 betterleaks git。适用于在整个 GitHub 上查找特定密钥模式。

问:为什么不使用更便宜的 gitleaks-github-secret-scanner actor? 对于大批量、关注成本的扫描,请使用那个工具。当实时验证很重要时(例如漏洞赏金分流、事件响应,以及确认哪些密钥确实需要轮换),请使用此工具。

问:检测到的密钥会如何处理? 密钥会写入本次运行的数据集,只有运行该 actor 的用户可以访问。我们绝不会在服务器端存储这些密钥。

问:可以扫描不属于我的 S3 存储桶吗? 仅限公开存储桶(匿名模式),或你持有访问凭证的存储桶。

问:扫描规模上限是多少? 仓库数量没有硬性上限。max_target_megabytes(默认值为 100)会跳过大于该值的文件。

限制

  • 按 CEL 规则进行验证:只有包含 validate 子句的规则才会执行实时探测。目前并非每种密钥类型都有此类规则。
  • global_github 模式需要 GitHub PAT(Code Search 仅限通过身份验证的用户使用)。
  • dir 模式要求来源为可下载的 tarball URL,而非本地文件。
  • Apify 运行超时会将每个子进程的扫描时间限制为 30 分钟。对于超过 200 个仓库的组织扫描,请拆分为多次运行。
  • stdin 模式受 Apify 输入大小上限(约 5 MB)限制。

合乎伦理地使用

仅用于经授权的安全测试。此 actor 会扫描公开的 GitHub 内容(即任何已登录 GitHub 用户都能看到的内容),或 PAT 明确授权你访问的私有仓库。

发现的问题应通过负责任的披露渠道报告:

  • 泄露信息的开发者(提交作者的电子邮件)
  • 供应商的 security@ 地址
  • 如果供应商设有漏洞赏金计划,则通过该计划报告

在未经所有者授权的情况下使用泄露的凭证,在大多数司法管辖区都属违法行为。

我作品集中的其他项目

许可证

MIT。上游 Betterleaks 二进制文件同样采用 MIT 许可证,由 betterleaks/betterleaks 维护(Zachary Rice 以及来自 Red Hat、Amazon、RBC 的共同维护者)。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。