Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
layerleak — layerleak Docker Hub シークレットスキャナー | Kitploit
ツール/GitHubGitHub/brumbelow/layerleak
脆弱性スキャナーコンテナセキュリティクラウドセキュリティDevSecOpsシークレット検出APIセキュリティ
GitHubbrumbelow/layerleak

layerleak

layerleak Docker Hub シークレットスキャナー

リポジトリを見る
422920日前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

layerleak OCIイメージシークレットスキャナー

made-with-Go

貢献ガイドラインについてはCONTRIBUTING.mdを確認してください。

  • 任意の公開OCI準拠レジストリ(Docker Hub、GHCR、Quay、GCR、MCR、Amazon ECR Public、セルフホスト)に対して動作するOCIイメージシークレットスキャナー。イメージレイヤー、設定メタデータ、イメージ履歴を分析し、マニフェストダイジェストごとに重複排除された検出結果を保存します。
  • 従来のシークレットスキャナーは、コンテナイメージをフラットなブロブとして扱ったり、ローカルのDockerデーモンに依存することがよくあります。このプロジェクトはOCIイメージの内部構造を考慮して設計されています。

目次

  • ドキュメントページ
  • 現在の機能
  • インストール
  • Postgresの永続化
  • 開始方法
  • HTTP API
  • Docker Composeによるデプロイ(Dockge / Komodo)
  • ライセンス
  • このプロジェクトを支援する

ドキュメントページ

  • https://brumbelow.github.io/layerleak/docs

公開サイトは、.github/workflows/pages.ymlによってmainブランチのweb/からビルドされます。ドキュメントソースとシミュレートされたブラウザデモは、両方ともそのディレクトリにあります。

現在の機能:

  • 任意のOCI準拠レジストリ(Docker Hub、GHCR、Quay、GCR、MCR、Amazon ECR Public、セルフホスト)からの公開イメージ
  • 読み取り専用スキャン
  • シークレットの検証なし
  • Dockerデーモンの依存関係は不要
  • マニフェスト認識およびレイヤー認識スキャン
  • 最終ファイルシステムと削除されたレイヤーのアーティファクトをスキャン
  • イメージ設定メタデータ、環境変数、ラベル、履歴をスキャン
  • シークレットフィンガープリントによる検出結果の重複排除と、同じマニフェスト内の繰り返しの同一コンテキストスニペットの圧縮
  • 60種類以上のシークレットタイプに対するネイティブ検出器と、フォールバックレイヤーとしてのTruffleHogデフォルト
  • テスト/フィクスチャ/スペック/e2e/受け入れパスでの検出結果を抑制し、開発イメージでの誤検出を削減

インストール

前提条件:

  • Go 1.25.7+

Goでインストール:

go install github.com/brumbelow/layerleak@latest
layerleak --help

正規のインストールターゲットはモジュールルートです。 リリースを明示的に固定するには:

go install github.com/brumbelow/[email protected]

v1.0.0を、公開されている任意のv1.x.yタグに置き換えてください。 GOBINまたはGOPATH/binディレクトリがPATHに含まれていることを確認してください。

モジュールパスはgithub.com/brumbelow/layerleakであるため、go install @latestは公開されている最も高いv1.x.yタグに解決されます。v2.x.yモジュールリリースでは、モジュールパスをgithub.com/brumbelow/layerleak/v2に変更する必要があります。モジュールインストールされたバイナリは、layerleak --versionを通じて解決されたモジュールバージョンを報告します。ローカルチェックアウトビルドでは、Goがチェックアウトに埋め込んだバージョンを報告し、モジュールバージョンが利用できない場合はdevにフォールバックします。

ソースからビルド:

git clone https://github.com/brumbelow/layerleak.git
cd layerleak
go build -o layerleak .
./layerleak --help

コンテナイメージでAPIを実行:

docker pull ghcr.io/brumbelow/layerleak:latest
docker run --rm \
  -p 8080:8080 \
  -e LAYERLEAK_DATABASE_URL='postgres://<user>:<password>@<host>:5432/layerleak?sslmode=disable' \
  ghcr.io/brumbelow/layerleak:latest

コンテナイメージはデフォルトでAPIを実行し、LAYERLEAK_API_ADDR=0.0.0.0:8080を設定します。

オプションの環境設定:

cp .env.example .env

結果とデータベースの設定:

export LAYERLEAK_LOG_LEVEL=info
export LAYERLEAK_FINDINGS_DIR=findings
export LAYERLEAK_API_ADDR=127.0.0.1:8080
export LAYERLEAK_PERSIST_RAW_SECRETS=0
export LAYERLEAK_TAG_PAGE_SIZE=100
export LAYERLEAK_HTTP_TIMEOUT=30s
export LAYERLEAK_MAX_FILE_BYTES=1048576
export LAYERLEAK_MAX_LAYER_BYTES=536870912
export LAYERLEAK_MAX_LAYER_ENTRIES=50000
export LAYERLEAK_MAX_MANIFEST_BYTES=0
export LAYERLEAK_MAX_CONFIG_BYTES=0
export LAYERLEAK_MAX_TAG_RESPONSE_BYTES=8388608
export LAYERLEAK_MAX_REPOSITORY_TAGS=0
export LAYERLEAK_MAX_REPOSITORY_TARGETS=0
export LAYERLEAK_REGISTRY_REQUEST_ATTEMPTS=2
# オプションのレジストリオーバーライド。通常は未設定のままにします。
export LAYERLEAK_REGISTRY_BASE_URL=
export LAYERLEAK_REGISTRY_AUTH_URL=
export LAYERLEAK_DATABASE_URL=postgres://postgres:postgres@localhost:5432/layerleak?sslmode=disable

同じ変数とそのデフォルト値は.env.exampleにあり、デフォルト値の信頼できる情報源です。

変数デフォルト目的
LAYERLEAK_LOG_LEVELinfoログレベル: debug、info、warn、error
LAYERLEAK_FINDINGS_DIR未設定JSON検出結果ファイルを書き込む場所。未設定の場合、go.modを含む最も近い親ディレクトリの下のfindings/にデフォルト設定され、見つからない場合は現在の作業ディレクトリにフォールバックします。
LAYERLEAK_API_ADDR127.0.0.1:8080APIサーバーのバインドアドレス。コンテナイメージはこれを0.0.0.0:8080にオーバーライドします。
LAYERLEAK_PERSIST_RAW_SECRETS01に設定すると、生のシークレット値と生のコンテキストスニペットをディスクとPostgresに書き込みます。検出結果はデフォルトで編集されたままになります。
LAYERLEAK_HTTP_TIMEOUT30sすべてのレジストリ呼び出し(マニフェスト、ブロブ、タグページ、認証トークン)に対するリクエストごとのタイムアウト。任意のGoの期間(30s、2m、1h)を受け入れます。
LAYERLEAK_MAX_FILE_BYTES1048576(1 MiB)レイヤー内のファイルごとにバッファリングされる最大解凍バイト数。このサイズを超えるファイルは大きすぎるとしてスキップされます。ゼロより大きくなければなりません。
LAYERLEAK_MAX_LAYER_BYTES536870912(512 MiB)レイヤーごとの最大解凍レイヤーストリームバイト数。0は制限を無効にします。
LAYERLEAK_MAX_LAYER_ENTRIES50000レイヤーごとの最大tarエントリ数。0は制限を無効にします。
LAYERLEAK_MAX_MANIFEST_BYTES0マニフェスト本体の最大バイト数。0は制限を無効にします。
LAYERLEAK_MAX_CONFIG_BYTES0イメージ設定本体の最大バイト数。0は制限を無効にします。
LAYERLEAK_MAX_TAG_RESPONSE_BYTES8388608(8 MiB)レジストリのタグリスト応答ページあたりの最大バイト数。0は制限を無効にします。
LAYERLEAK_TAG_PAGE_SIZE100リポジトリ全体のスキャン用のレジストリタグリストページサイズ。
LAYERLEAK_MAX_REPOSITORY_TAGS0リポジトリスキャンごとに列挙される最大タグ数。0は制限を無効にします。
LAYERLEAK_MAX_REPOSITORY_TARGETS0リポジトリスキャンごとに解決される最大の異なるターゲット数。0は制限を無効にします。
LAYERLEAK_REGISTRY_REQUEST_ATTEMPTS2各レジストリリクエストの試行回数(最初の試行を含む)。
LAYERLEAK_REGISTRY_BASE_URL未設定オプションのオーバーライド。通常、layerleakは各イメージ参照からこれを導出します。プロキシや代替エンドポイントを介してスキャンを強制する場合にのみ設定します。
LAYERLEAK_REGISTRY_AUTH_URL未設定オプションのオーバーライド。通常、レジストリのWWW-Authenticateチャレンジから検出されます。
LAYERLEAK_DATABASE_URL未設定設定されている場合、layerleakはスキャンをPostgresに書き込み、永続化が成功しないとコマンドは失敗します。

MAX_*制限のいずれかを正の値に設定すると、それを超えるとスキャンが失敗し、作業を黙って切り詰める代わりに明確なエラーが返されます。

結果の動作:

  • 実用的な検出結果はfindingsに残り、ゼロ以外のスキャン終了ステータスを生成します。
  • テスト/例/デモのプレースホルダーと思われるものは、抑制されたサンプル検出結果として個別に出力され、total_findingsにはカウントされません。
  • 検出結果レコードにはdisposition、disposition_reason、line_numberが含まれ、トリアージと誤検出のレビューが容易になります。
  • 設定された運用制限を超えた場合、layerleakは失敗する前に生成された部分的な結果を書き込み、レンダリングした後、スキャンが不完全であるためステータス1で終了します。

Postgresの永続化

Layerleakには、migrations/の下にバージョン管理されたSQLマイグレーションが含まれています。 マイグレーションは意図的に手動で行われます。スキャナーはスキーマを自動生成または自動アップグレードしません。 Layerleakは、DBバックエンドのAPIとスキャナーの永続化にPostgreSQLサーバー>= 16.13を必要とします。

マイグレーションを順番にpsqlで適用します:

psql "$LAYERLEAK_DATABASE_URL" -f migrations/0001_initial.up.sql
psql "$LAYERLEAK_DATABASE_URL" -f migrations/0002_finding_occurrence_metadata.up.sql
psql "$LAYERLEAK_DATABASE_URL" -f migrations/0003_scan_runs.up.sql

または、コンテナヘルパーコマンドを使用してマイグレーションを適用:

docker run --rm \
  -e LAYERLEAK_DATABASE_URL="$LAYERLEAK_DATABASE_URL" \
  ghcr.io/brumbelow/layerleak:latest \
  layerleak-migrate-up

layerleak-migrate-upは、マイグレーションが既に適用されている場合でも安全に再実行できます。 部分的なマイグレーション状態を検出した場合、ゼロ以外のコードで終了し、手動介入を求めます。 ヘルパーはまた、サーバーバージョン>= 16.13を強制し、バンドルされているpostgresql-client-16がUbuntu PGDG 24.04パッケージ(.pgdg24.04+)でバージョン>= 16.13-1.pgdg24.04+1であることを検証します。

マイグレーションを逆順でロールバック:

psql "$LAYERLEAK_DATABASE_URL" -f migrations/0003_scan_runs.down.sql
psql "$LAYERLEAK_DATABASE_URL" -f migrations/0002_finding_occurrence_metadata.down.sql
psql "$LAYERLEAK_DATABASE_URL" -f migrations/0001_initial.down.sql

運用上のデフォルト:

  • マイグレーションは追加的であることが期待されます。
  • スキーマは、first_seen_atとlast_seen_atを持つ現在の重複排除状態を保持し、scan_runsに追加専用のスキャン履歴も保存します。
  • 現在のスキャンで触れられたタグについて、タグマッピングが更新されます。
  • 検出結果は(manifest_digest, fingerprint)によって正規に重複排除され、永続化の前に繰り返しの同一コンテキストスニペットが圧縮されます。
  • スキャン履歴は、公開結果JSONの編集されたスナップショットを保存し、生の値や生のスニペットは保存しません。

シークレット安全性に関する注意:

  • Postgresの永続化はデフォルトで編集されたプレビューを保存します。
  • LAYERLEAK_PERSIST_RAW_SECRETS=1の場合、Postgresは生の検出結果値と生のスニペットも保存します。
  • scan_runs.result_jsonスナップショットは編集されたままです。
  • layerleak専用のデータベースまたはスキーマを使用してください。
  • 最も安全な削除パスとして、個々の行を外科的に削除しようとする代わりに、専用のデータベースまたはスキーマを削除してください。

開始方法

CLIヘルプを表示:

layerleak --help
layerleak scan --help

help_output

サポートされている任意のレジストリ上の公開OCIイメージに対してスキャンを実行:

ツールをダウンロード