
keyhog v0.5.47
Rust製のオープンソースシークレットスキャナー
Webサイト · ドキュメント · アーキテクチャ · Vyre GPUエンジン
KeyHog: コード、クラウド、CI向けGPUアクセラレーション秘密情報スキャナ
KeyHogはRust製のオープンソース秘密情報スキャナで、ソースコード、Git履歴、コンテナ、クラウドストレージ、ブラウザ資産、コラボレーションコンテンツ、実行中のシステム全体にわたって、漏洩したAPIキー、トークン、パスワード、認証情報を検出・検証します。
ほとんどの秘密情報スキャナは、リポジトリチェックアウト内のCPU正規表現マッチで止まってしまいます。KeyHogは、934種類のサービス固有検出器、隠蔽された認証情報のデコード透過処理、コンテキストを考慮した証拠と抑制、ライブプロバイダー検証、そしてVyreによる第一級のCUDA、Metal、WGPU実行を組み合わせています。キャリブレーションは、対象となるすべての純Rust CPU、Hyperscan/SIMD、GPUバックエンドを測定します。その後、自動ルーティングにより、正確なホストとワークロードクラスに対して、同等性が証明された最速の経路を使用します。
| GPUは本物のバックエンド | 実際の攻撃対象領域をスキャン | ノイズからシグナルを分離 | 結果に基づいて行動 |
|---|---|---|---|
| CUDA、ネイティブMetal、WGPUは、黙ったフォールバックチェーンではなく、測定された同等のピアです。 | Git履歴、Dockerレイヤー、アーカイブ、クラウドバケット、ソースマップ、WASM、HARキャプチャ、ホスト型Gitコレクション、システム全体をスキャンします。 | 証拠、サンプル抑制、ベースラインを適用する前に、base64、hex、URL、protobuf、複数行、構造化設定をデコードします。 | プロバイダーAPIで対象の認証情報を検証し、SARIFまたは構造化エンベロープを出力し、正確なカバレッジと終了セマンティクスを維持します。 |
| cargo install --locked keyhog | |||
| keyhog scan . |
<p align="center">
<img src="https://assets.kitploit.com/production/public/readmes/7654/dfb768a9b8e8fa64082992f11d0b284d5ec6a199fc1eac85e0352fb20452186f.gif" alt="KeyHog スキャン。重大度、証拠、ファイルと行、修正方法、結果、カバレッジ状況を表示" width="900" />
</p>
## GPU を中心に構築されたシークレットスキャナ
KeyHog は、いくつかの正規表現を汎用コンピュートシェーダーに渡すだけではありません。
その GPU パスは、KeyHog と並行して開発された Rust GPU
コンピュート基盤である [Vyre](https://github.com/santhreal/vyre) 上に構築されています。
検出器トリガーは、イミュータブルな GPU 常駐テーブルにコンパイルされます。
境界付きソースバッチは、CPU および Hyperscan ルートで使用されるものと同じ
確認、抑制、証拠、レポートパイプラインに対して、完全なマッチ位置を生成します。
- **3 つの物理 GPU ピア。** CUDA、ネイティブ Metal、ポータブル WGPU は、
それぞれ独立して取得、測定、報告されます。
- **完全な結果の同等性。** キャリブレーションは、参照ルートと検出 ID が異なる候補を拒否します。
高速だが誤った回答がルーティングテーブルに入ることはありません。
- **永続的なルート証拠。** KeyHog は、バイナリ、検出器コーパス、
設定、ワークロードクラス、ホスト、アクセラレータ、ドライバ、測定されたタイミング
証拠を記録します。通常のスキャンはホットパスでベンチマークを実行しません。
- **常駐実行。** デーモンワーカーは、コンパイル済みの検出器とアクセラレータの
状態をウォームに保ち、ファイル、アーカイブ、履歴、リモート、クラウドの各バッチを繰り返し処理します。
- **隠れた CPU エスケープハッチなし。** 明示的に選択されたアクセラレータが
初期化またはディスパッチできない場合、GPU ラベルの下で CPU の検出結果を返す代わりに、
可視的に失敗します。
デフォルトの crates.io インストールは、ポータブルな純 Rust CPU ルートを使用するため、
クリーンな Rust ホストで動作します。Hyperscan を取得せずに 3 つの GPU ピアを有効にできます。```sh
cargo install --locked keyhog --no-default-features --features portable,gpu
HyperscanまたはVectorscanのSIMD正規表現ピアを有効にします:```sh cargo install --locked keyhog --no-default-features --features portable,simd
本番バックエンドの診断を実行し、測定されたルートを検査します。```sh
keyhog backend --self-test
keyhog calibrate-autoroute --policy all
keyhog backend --autoroute --json
バックエンドガイドには、 常駐テーブル、境界付きディスパッチモデル、パリティ契約、再現可能な クロスオーバー証拠が記載されています。
はじめに
インストールして最初のスキャンを実行する
上記の2つのコマンドは、最新のcrates.ioリリースをインストールし、ポータブルな純Rustルートで現在のツリーをスキャンします。
CI環境を正確に1つのリリースに固定するには、
cargo install --locked --version '=0.5.86' keyhog を使用します。KeyHogにはRust 1.89
以降が必要です。GPU、Hyperscan、CI、ポータブル、ソースビルドのプロファイルについては、
インストールガイドを参照してください。
KeyHogは、検出結果がアクティブなエビデンスポリシーをブロックすると、終了コード 1 を返します。デフォルトのポリシーは likely と confirmed の検出結果をブロックし、review の検出結果は終了コード 0 で表示したままにします。--evidence-policy paranoid はすべての階層をブロックします。各検出結果の正確なエビデンス階層、理由コード、ファイル、行、検出器、および
修復方法を確認してください。その他の非ゼロコードは、入力、システム、検証、または
カバレッジの失敗を示します。終了コードリファレンスを参照してください。
完全なプロセス契約は次のとおりです。
| 終了コード | 意味 |
|---|---|
0 成功 | アクティブなエビデンスポリシーをブロックする検出結果がなく、カバレッジの失敗も発生しませんでした。レビュー階層の検出結果は、デフォルトポリシーの下で表示されたままになる場合があります。 |
1 ブロックする検出結果 | アクティブなエビデンスポリシーをブロックする検出結果が少なくとも1つありますが、ライブ確認されたものはありません。 |
2 オペレーターエラー | 引数、設定、検出器コーパス、またはオペレーターが修正可能な入力を修正してください。 |
3 システムエラー | ランナーを修復するか、再試行してください。これには、低レベルのI/O、致命的なデーモンサービス、インクリメンタルキャッシュ、明示的に選択されたSIMDの失敗が含まれます。 |
4 ヘルス/セルフテストの失敗 | doctor または backend --self-test のヘルスチェックが異常でした。 |
10 ライブ認証情報 | 少なくとも1つの認証情報がライブ確認されました。 |
11 スキャナーパニック | スキャナーの状態が信頼できないため、スキャン結果を破棄してください。 |
12 必須GPUの失敗 | 明示的に選択または必須のGPUパスを実行できませんでした。 |
13 不完全なカバレッジ | 要求されたソースが失敗したか、入力カバレッジが不完全であり、検出結果が優先されませんでした。 |
130 中断 | SIGINTまたはCtrl-Cによってプロセスが中断されました。 |
フィルター、フォーマット、ゲート:
フィルターとして使用する前に、ベースラインを作成してください。```sh keyhog scan . --create-baseline .keyhog-baseline.json keyhog scan . --baseline .keyhog-baseline.json --format json-envelope --output keyhog.json
最初のコマンドは、レビュー済みの検出結果をスナップショットとして保存し、それらを出力せずに終了コード `0` で終了します。そのファイルをコミットした後、2番目のコマンドを使用して、新しい検出結果のIDのみを報告します。ベースラインのエントリは、検出器と認証情報の値で一致し、ファイルパスでは一致しないため、記録済みのシークレットを移動してもゲートは失敗しませんが、ローテーションすると失敗します。変更された認証情報と不完全なカバレッジは引き続き表示されます。モノレポのパーティションを含む完全なパスは、[新しいシークレットのみで失敗](https://santhreal.github.io/keyhog/workflows/ci.html#fail-only-on-new-secrets) にあります。
次のスキャンでは、[レシピクックブック](https://santhreal.github.io/keyhog/recipes.html) または [適切なワークフローの選択](#choose-the-right-workflow) にあるコピー可能なコマンドを使用してください。ツールを変更せずに、Git履歴、コンテナイメージ、クラウドバケット、リポジトリコレクション、URL、およびマシン全体をスキャンできます。
### 高速なpre-commitスキャンのためのリポジトリのガード
常駐型のKeyHogデーモンにリポジトリを登録して、高速なpre-commitシークレット検出を実現します(Unixが必要です。Windowsではプロセス内の `keyhog scan` を使用してください)。```sh
# 1. Start the daemon (accelerated by CUDA, Metal, WGPU, or SIMD)
keyhog guard up
# 2. Guard your repository (indexes baseline and installs pre-commit hook in one step)
keyhog guard add /path/to/repo
# 3. Every staged commit checks only changed blobs against in-memory attestations
keyhog scan --git-staged
# 4. View all active guarded repositories and their states
keyhog guard list
# 5. Turn the daemon on and off cleanly without losing registrations or durable index
keyhog guard down
perpetual guard guide およびpre-commit workflowを参照して、完全な設定、状態機械のライフサイクル、およびフックの自動化について確認してください。
GitHub Actionsに追加する
.github/workflows/keyhog.ymlを作成します:```yaml
name: keyhog
on:
push:
branches: [main]
pull_request:
permissions:
contents: read
security-events: write
jobs:
scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- uses: santhreal/keyhog@v0
with:
path: .
severity: high
このActionはチェックアウトされたツリーをスキャンし、`high`または`critical`の検出結果で失敗し、SARIFをCode Scanningにアップロードし、レポートをワークフローアーティファクトとして保持します。インストール、カバレッジ、バックエンド、レポート公開の失敗もジョブを失敗させます。