オープンソースプロジェクト
betterleaks/betterleaks avatar
betterleaks/betterleaks

Betterleaks は Git 以外も横断する Expr ベースのシークレット検査

世界をスキャンしてください (秘密を探します)。 |新しい情報源 | GitHub、GitLab、Hugging Face、S3 などのソースのサポート。

スター 1,931フォーク 138GoMIT

ひと目でわかる

これは何?
Git、ローカルディレクトリ、GitHub、GitLab、Hugging Face、S3 を対象にできる Betterleaks のルールと検証機構を整理します。
誰に向いている?
検出結果と validate の通信範囲を分けて確認する。Betterleaksは、Gitリポジトリ、ローカルファイル、GitHub、GitLab、Hugging Face、S3ソースをサポートする柔軟なシークレットスキャンツールを提供します。
商用利用できる?
できます。MIT は寛容なライセンスで、著作権表示とライセンス表示を残せば、使用・改変・販売が可能です。
今もメンテナンスされている?
されています。最後のコミットは 1 日前です。
何の言語で書かれている?
主に Go です(GitHub の言語統計による)。

回答はプロジェクトの GitHub データ(最終同期:2026年9月14日)と当サイトの分析に基づくもので、法的助言ではありません。

オープンソース詳細解説

betterleaks-betterleaks: Betterleaksとは

Betterleaksは設定可能で高速かつ徹底的なシークレットスキャナーです。Gitleaksのオリジナル作者を含むチームが保守しています。開発はAikido Securityが支援しています。READMEでは、検出エンジンの仕組みを説明する一連のブログ記事(「Regex is all you need」、「Rare Not Random」、「Express YourCELf」)が参照されています。ソース資料にはベンチマークや「高速なパフォーマンス」以外の性能主張は記載されていません。

betterleaks-betterleaks: インストール方法

READMEにはいくつかのインストール方法が記載されています。macOSのHomebrew: brew install betterleaks または brew install betterleaks/tap/betterleaks。Fedora Linux: sudo dnf install betterleaks。コンテナ: docker pull ghcr.io/betterleaks/betterleaks:latest。Go開発者: go install github.com/betterleaks/betterleaks@latest。ソースからビルドするにはリポジトリをクローンしてmake buildを実行します。READMEは「最新のOS/Archで動作する」と述べていますが、最小GoバージョンやOS要件は明記されていません。

betterleaks-betterleaks: スキャンソース

Betterleaksは異なるデータソースに対応するサブコマンドを提供します。betterleaks gitでGitリポジトリをスキャン。betterleaks dirでローカルファイルシステムをスキャン。betterleaks githubでGitHubの組織、ユーザー、特定リソース(例:--include issues,prs,actions,releases,gistsでプルリクエスト)をスキャン。betterleaks gitlabでGitLabのグループ、プロジェクト、マージリクエストをスキャン。betterleaks huggingface(別名betterleaks hf)でHugging Faceのモデル、データセット、Spaces、バケットをスキャン。betterleaks s3で公開S3データセットやCloudflare R2アカウントのバケットをワイルドカードパスで列挙。betterleaks stdinで標準入力から読み取り。各サブコマンドは-v(詳細出力)や--git-workers(並列度)などのフラグを受け付けます。

betterleaks-betterleaks: 設定とルールフィルタリング

設定はTOML形式で記述され、Expr式を使用したフィルタリングを行います。グローバルprefilterは正規表現マッチングの前に実行され、attributesマップ(ファイルパス、git author名など)にアクセスして早期にリソースをスキップできます。グローバルfilterは候補シークレットごとに実行されます。ルールは[[rules]]テーブルで定義され、id、description、regex、keywords、オプションのfilter、validateフィールドを持ちます。READMEには、CEL形式の設定は互換性のために受け付けられるが、新しい設定ではExprを使用すべきと記載されています。ユーザーはBetterleaks Playground(betterleaks.com/playground)でルールをテストできます。READMEは、本番環境ではアップストリームのデフォルト設定を直接拡張するのではなく、独自の設定を維持することを推奨しています。

betterleaks-betterleaks: 検証とトークン効率フィルタリング

ルール定義のvalidateフィールドはExprを使用して、検出されたシークレットがまだアクティブかどうかを確認するためにターゲットサービスに対して非同期HTTPリクエストを実行します。READMEでは、GitHubのFine-Grained PAT検証の例が示されており、有効性、ユーザー名、OAuthスコープが返されます。トークン効率フィルタリングはBPEトークン化を使用して文字列の「希少性」を測定し、自然言語からの誤検知をフィルタリングするのに役立ちます。READMEには、このフィルタリングの具体的なしきい値やパフォーマンス特性は記載されていません。

betterleaks-betterleaks: ライセンスとプロジェクトステータス

BetterleaksはMITライセンスでリリースされており、著作権はZachary Rice(2026年)に帰属します。ライセンスは、著作権表示を含めることを条件に、ソフトウェアの使用、コピー、変更、マージ、公開、配布、サブライセンス、販売を許可します。ソフトウェアは「現状のまま」提供され、いかなる種類の保証もありません。リポジトリメタデータは1593スター、112フォーク、70オープンイシュー、アーカイブされていないことを示しています。開発はAikido Securityがスポンサーとなっています。READMEには公式のサポートチャネルやセキュリティ保証は記載されていません。

検出結果と validate の通信範囲を分けて確認する。README に記載された機能をこのプロジェクトの構成に即して確認し、実行時の入力、生成物、ログを記事対象のリポジトリ内で照合してから利用範囲を決めます。

Betterleaks の設計では、スキャン対象の広さとルールの精度を同じ問題として扱わないことが重要です。betterleaks git と betterleaks dir では履歴やローカルパスを対象にし、github、gitlab、huggingface、s3 では外部サービスの認証と列挙範囲が加わります。TOML の [[rules]] に id、description、regex、keywords、filter、validate を定義し、まず prefilter で不要な候補を落とし、その後に候補単位の filter と非同期 HTTP の validate を確認します。GitHub Fine-Grained PAT の検証例は便利ですが、実行すれば対象サービスへ通信するため、認証情報と監査ログの設計が必要です。CEL 互換入力と新規 Expr 設定の違い、BPE による希少性判定、並列度を変えた結果を小さなテストリポジトリで比較します。デフォルト設定を直接改変せず、プロジェクト固有の設定を保守するという README の方針も運用上の判断材料になります。

実行時には、まず stdin で短いテスト文字列を流し、次に git の履歴、最後に外部ソースを試すと原因を分離できます。検出結果にはルール id とファイル属性を残し、filter で除外された候補と validate で通信された候補を区別します。S3 や Cloudflare R2 の列挙は権限と公開範囲に影響するため、対象バケットを限定した資格情報を用意します。GitHub の issues や actions まで含める場合も、--include の指定を記録します。ルールを更新した後は誤検知だけでなく、既知のテスト用シークレットを拾えるかを同時に確認します。

betterleaks.tomlを上流から切り離す

README は本番利用なら上流の既定設定を直接 extend せず、自分の betterleaks.toml を維持するよう勧めています。既定例は github.com/betterleaks/betterleaks/blob/main/config/betterleaks.toml、説明は docs/config.md、規則の試作は betterleaks.com/playground です。prefilter は高価な正規表現の前に path や git.author_name で打ち切り、filter はマッチ後に finding["secret"] を見る、というのが README の区分です。github-fine-grained-pat のような [[rules]] と components["rule-id"]?.secret の複合規則も本文に例があります。

導入は brew install betterleaks、sudo dnf install betterleaks、docker pull ghcr.io/betterleaks/betterleaks:latest、go install github.com/betterleaks/betterleaks@latest、または git clone 後の make build です。スキャン例は betterleaks git /path/to/repo -v --source-workers=16、betterleaks dir、betterleaks github、betterleaks gitlab です。README 取得時点のタグは v1.8.1、v1.8.0、v1.7.4 です。利用例として Aikido Security、MegaLinter、Moyai、Entire.io、LeakTK が列挙されますが、自リポジトリでの誤検知率は自分の toml で測る必要があります。Gitleaks 由来のメンテナが保守している、と README は述べています。

編集部の結論

検出結果と validate の通信範囲を分けて確認する。Betterleaksは、Gitリポジトリ、ローカルファイル、GitHub、GitLab、Hugging Face、S3ソースをサポートする柔軟なシークレットスキャンツールを提供します。設定はExprベースのフィルターとバリデーターを使用し、誤検知を減らし検出されたシークレットを検証できます。プロジェクトはMITライセンスでオープンソースであり、開発はAikido Securityがサポートしています。

公式情報源

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
コミュニティノート

コミュニティノート