关于 Betterleaks Cloud - GitHub, Git, S3, Dir Secret Scanner
Betterleaks Cloud 是托管在 Apify 上的密钥扫描器,面向安全团队和研究人员。它可扫描 GitHub、Git 仓库、S3 兼容存储及其他输入,并可选检测发现的密钥是否仍有效。
主要功能
- 01扫描 GitHub、Git、S3、R2 和 MinIO
- 02按关键词搜索 GitHub
- 03扫描归档文件和原始文本
- 04可选验证发现的密钥
- 05使用自定义 TOML 规则
- 06导出结构化发现记录
适用场景
- 01审计组织的 GitHub 仓库
- 02报告前检查泄露凭据
- 03按计划持续扫描
- 04检查公开的 S3 兼容存储
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://mcp.apify.com/?tools=anshumanatrey/betterleaks-cloudclaude mcp add --transport http anshumanatrey-betterleaks-cloud https://mcp.apify.com/?tools=anshumanatrey/betterleaks-cloud{"mcpServers":{"anshumanatrey-betterleaks-cloud":{"type":"http","url":"https://mcp.apify.com/?tools=anshumanatrey/betterleaks-cloud"}}}在 Cursor 中打开{"servers":{"anshumanatrey-betterleaks-cloud":{"type":"http","url":"https://mcp.apify.com/?tools=anshumanatrey/betterleaks-cloud"}}}在 VS Code 中打开{"mcpServers":{"anshumanatrey-betterleaks-cloud":{"type":"http","url":"https://mcp.apify.com/?tools=anshumanatrey/betterleaks-cloud"}}}{"mcpServers":{"anshumanatrey-betterleaks-cloud":{"serverUrl":"https://mcp.apify.com/?tools=anshumanatrey/betterleaks-cloud"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
https://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-cloud | betterleaks-cloud(本工具) | |
|---|---|---|
| 引擎 | Gitleaks 8.x | Betterleaks 1.3.1(Gitleaks 的继任者) |
| 实时验证 | 不支持 | 支持(可选) |
| 来源类型 | 仅 github + git | github、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 克隆 URL | target_url |
s3 | AWS S3、Cloudflare R2、MinIO 或任何兼容 S3 的存储桶 | target_url、S3 凭据(公开存储桶可使用 s3_anonymous) |
dir | tarball/zip URL——我们会下载、解压并扫描文件系统 | dir_source_url |
stdin | 你粘贴的原始文本内容 | stdin_content |
在 github 模式下可以扫描哪些 GitHub 资源?
可以扫描 betterleaks 支持的全部 12 种资源,并通过 include/exclude 进行选择:
repos(默认)、forksprs、pr-commentsissues、issue-commentsactions、action-artifactsdiscussionsreleases、release-assetsgists
你还可以按 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(无法确定)或errorValidationReason:人类可读的原因说明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@地址 - 如果供应商设有漏洞赏金计划,则通过该计划报告
在未经所有者授权的情况下使用泄露的凭证,在大多数司法管辖区都属违法行为。
我作品集中的其他项目
- gitleaks-github-secret-scanner - 基于 Gitleaks、价格更低且不进行验证的扫描器
- holehe-email-osint - 通过邮箱查找已注册的账户(120 多个网站)
- phoneinfoga-phone-osint - 电话号码 OSINT
- theharvester-osint - 通过公开来源查找邮箱 / 子域名 / 主机
- social-analyzer - 在 300 多个社交平台上查找用户名
- nmap-scanner - Nmap 端口扫描器
- netintel - DNS / WHOIS / IP 地理位置 / 端口扫描 / SSL / 技术栈
- instagram-profile-intel-no-login - 无需登录即可获取 Instagram 个人资料情报
- bug-bounty-finder - 搜索 HackerOne、Bugcrowd、Intigriti
许可证
MIT。上游 Betterleaks 二进制文件同样采用 MIT 许可证,由 betterleaks/betterleaks 维护(Zachary Rice 以及来自 Red Hat、Amazon、RBC 的共同维护者)。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。