Betterleaks Cloud - GitHub, Git, S3, Dir Secret Scanner について
Betterleaks Cloudは、Apify上で動作するセキュリティチームや研究者向けのシークレットスキャナーです。GitHub、Gitリポジトリ、S3互換ストレージなどを調べ、検出したシークレットが有効かどうかも任意で確認できます。
主な機能
- 01GitHub、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 シークレットスキャナー
漏えいした API キー、ウォレットの秘密鍵、認証情報を GitHub、クローンした Git リポジトリ、S3/R2/MinIO バケットから探すための、クラウドホスト型 Betterleaks v1.3.1 です。オプションのライブ検証では、検出された各シークレットをベンダーの API に照会し、現在も有効なものにフラグを付けます。
Apify Actor として利用できます。開始時に $0.05、スキャンしたリポジトリごとに $0.05、ライブ検証したキーごとに $0.30 です。インストールも CLI も不要で、フラットな JSON 形式で出力します。
何ができますか?
GitHub の組織、ユーザー、リポジトリ、プルリクエスト、Issue、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 トークンを設定して、シェルを構成 | JSON 入力を貼り付けるだけ |
| 対象範囲 | 一度に 1 つの対象 | github/git/s3 モードと、リポジトリを選択する Code Search を使った global_github モード |
| 検証コスト | お使いのマシンの HTTP 通信量 | Apify が管理する並列ワーカー |
| 出力の扱い | stdout の JSON を自分で解析 | データセットのレコード、フィルター可能なビュー |
| スケジュール | cron + 手動での設定 | Apify Schedules を内蔵 |
| コスト | お使いのノート PC の電気代 | Actor の開始時に $0.05 + スキャンしたリポジトリごとに $0.05 |
gitleaks-github-secret-scanner Actor との違いは何ですか?
| gitleaks-cloud | betterleaks-cloud(本 Actor) | |
|---|---|---|
| エンジン | 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 の ref にあるどの dangling commit から認証情報が漏えいしたかを追跡する
- 誰かが公開共有した Cloudflare R2/AWS S3 バケットをスキャンする
料金はいくらですか?
イベントごとの従量課金です:
- Actor の開始ごとに $0.05
- スキャンしたリポジトリごとに $0.05(github/git/global_github モード)
- データセットに追加した検出結果ごとに $0.01
- ライブ検証したシークレットごとに $0.30(検証が有効で、ステータスが
validの場合のみ) - Code Search のクエリごとに $0.005(
global_githubモードのみ)
スキャンの一般的な料金:
| シナリオ | 料金 |
|---|---|
| 小規模なリポジトリを 1 つスキャン、検出結果 1 件、検証なし | $0.11 |
| 大規模なリポジトリを 1 つスキャン、検出結果 30 件、検証なし | $0.40 |
| 25 個のリポジトリを含む組織をスキャン、検出結果 50 件、検証なし | $1.80 |
rzp_live_ を対象に 25 個のリポジトリをグローバル検索 | $1.93 |
| 100 個のリポジトリをスキャン、検出結果 200 件、ライブ検証 10 件 | $10.05 |
定額で年間約 $5000 の GitGuardian Enterprise と比較してください。この Actor を使った包括的なスキャン 1 回あたりの費用は、300~500 分の 1 です。
どのモードでスキャンできますか?
| モード | スキャン対象 | 必須の入力 |
|---|---|---|
github | 特定の GitHub 組織/ユーザー/リポジトリ/PR/issue/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"
}
}
データセットには、事前設定済みのビューが 2 つあります。
- 検出結果:すべてのレコード
- 有効なシークレットのみ:
ValidationStatus == validで絞り込んだ、優先度の高いトリアージリスト
精度はどの程度ですか?
基盤となる Betterleaks 1.3.1 のルールセット(200 以上の検出器)に加え、上流版の BPE トークン化に基づく誤検出フィルターと、CEL ベースのコンテキストフィルターを使用しています。実際のテスト実行で確認された計算リソースの使用量は次のとおりです。
- 小規模なリポジトリを 1 件スキャン:約 7 秒、計算ユニット 0.0084
anshumanatrey/*をスキャン(約 30 件のリポジトリ):約 134 秒、計算ユニット 0.1491、検出結果 735 件- クエリ
rzp_live_を使用した 3 件のリポジトリのglobal_githubスキャン:約 8.5 秒、計算ユニット 0.0095、検出結果 14 件
よくある質問
Q: プライベートリポジトリをスキャンできますか? はい。repo スコープを持つ github_token を指定してください。
Q: PR のブランチや参照されていないコミットもスキャンしますか? --include prs を指定すれば PR の参照をスキャンします。参照されていないコミットは現在公開されていませんが、基盤となるツールは対応しています。
Q: レート制限にはどのように対処していますか? github_token がない場合、GitHub の制限は共有で約 60 リクエスト/時です。トークンがある場合は、アカウントあたり 5000 リクエスト/時です。実際のスキャンでは必ずトークンを指定してください。
Q: スケジュールを設定して実行できますか? はい。Apify Schedules で実行できます。継続的な監視の用途におすすめです。
Q: 独自の betterleaks ルール TOML を使用できますか? はい。custom_config_toml で指定できます。または、enable_rule で組み込みルールを個別にホワイトリストへ追加できます。
Q: global_github モードとは何ですか? 上流の betterleaks に独自機能を追加したものです。検索クエリを指定すると、GitHub Code Search で重複のない候補リポジトリを見つけ、それぞれに対して betterleaks git を並列で実行します。GitHub 全体から特定のシークレットパターンを探すのに便利です。
Q: 代わりに、より安価な gitleaks-github-secret-scanner actor を使わないのはなぜですか? 大量のスキャンを低コストで行いたい場合は、そちらを使用してください。実際の検証が重要な場合(バグ報奨金プログラムでのトリアージ、インシデント対応、実際にローテーションすべきシークレットの把握など)は、この actor を使用してください。
Q: 検出されたシークレットはどうなりますか? 実行時のデータセットに書き込まれ、actor を実行したユーザーだけがアクセスできます。サーバー側に保存することはありません。
Q: 所有していない S3 バケットをスキャンできますか? 公開されている(匿名モード)か、認証情報を持っている場合に限り可能です。
Q: スキャンできる最大サイズはどのくらいですか? リポジトリ数に固定の上限はありません。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 サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。