mcpField
K
Klarion

Klarion

ローカル
github.com/0x1Adiセキュリティ114 週間前に更新

Klarion について

Klarionはコード内のシークレットを検出するツールです。ローカルルールで候補を絞り、AIモデルで実際のシークレットかを判定するため、開発者やCIワークフローに向いています。コマンドライン、コミット保護、Claude Codeフック、MCPサーバーを提供します。

主な機能

  1. 01キー形式、認証情報ファイル、エンコード値をローカル検出
  2. 02AIモデルでシークレット候補を判定
  3. 03スキャンとコミット保護のコマンド
  4. 04Claude Codeフックによる書き込みブロック
  5. 05CIスキャンとMCPサーバーを提供

活用シーン

  1. 01コミット前に新しいシークレットをブロック
  2. 02プルリクエストで追加コードをスキャン
  3. 03コーディングエージェントにコード書き込み前の確認をさせる

MCP 対応

MCPサーバーはscan_textとscan_fileを公開し、エージェントがコードの書き込みやコミット前に検査できます。モデル未設定時はKlarionのルールと候補をエージェントに渡して判定し、モデル設定時はKlarionが判定します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ
パッケージ
mcpbklarion-mcp-v0.4.3.mcpb0.4.3

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細


Klarion はコード内のシークレット、つまり API キー、パスワード、トークンを見つけます。

次の 2 段階で動作します。

  1. 検出。 高速なローカルチェックで、シークレットらしきものをすべて検出します。
  2. 確認。 AI モデルが周囲のコードとともに一つずつ読み取り、本物かどうかを判定します。

パターンスキャナーはステップ 1 までしか行わないため、テスト値、ID、ハッシュも検出します。Klarion は 本物の漏えいだけを表示します。

漏えいが発生する場所で実行します

ファイルが作成される前に書き込みをブロックする Claude Code フックです。エージェントはファイルツール経由でも Bash 経由でも回避できません。

コーディングエージェントが AWS キーペアをハードコードするよう指示されます。Klarion のツール実行前フックが 95% の確信度で書き込みをブロックし、エージェントは Bash やファイルツール経由で認証情報を書き込めないと報告します。

$ klarion scan .

services/billing/client.py
  [critical] stripe-secret-key  39:18  sk_l****4bQx
    verdict: secret (confidence 0.96)
    | stripe.api_key = "sk_l****4bQx"

Summary: 1 finding(s) across 1 file(s), 198 suppressed [1204 files scanned in 612ms]

インストール

macOS:

brew install 0x1Adi/tap/klarion

Go 1.25 以降を使う場合は、その他の環境でも次のようにインストールできます。

go install github.com/0x1Adi/Klarion/cmd/klarion@latest

または、リリースページからバイナリをダウンロードしてください。

Klarion の利用には AI モデルが必要です。次から選んでください。

モデルセットアップ
Anthropic(デフォルト)export ANTHROPIC_API_KEY=...
OpenAI または互換モデルexport OPENAI_API_KEY=... を実行し、provider = "openai" を設定
ローカルモデル。データはマシンの外に出ませんOllama を実行し、provider = "ollama" を設定
Claude Code のログインprovider = "claude-cli" を設定

設定は [ai] の下の .klarion.toml に記述します。すべてのオプションはリファレンスをご覧ください。

使い方

目的方法
フォルダーをスキャンするklarion scan .
シークレットを追加するコミットをブロックするklarion protect
pre-commit フレームワークでコミットをブロックする以下の .pre-commit-config.yaml
Claude Code によるシークレットの書き込みを止める/plugin marketplace add 0x1Adi/Klarion、/plugin install klarion@klarion を実行し、Claude Code を再起動
Cline、Cursor、その他の MCP エージェントによるシークレットの書き込みを止める以下の MCP サーバー
シークレットを追加するプルリクエストを失敗させる以下の GitHub Action
すでに検出結果があるリポジトリから開始するklarion baseline create を実行すると、新しいシークレットのみが失敗の対象になります
# .github/workflows/secrets.yml
name: secret-scan
on: [push, pull_request]

jobs:
  klarion:
    runs-on: ubuntu-latest
    permissions:
      contents: read
      security-events: write
    steps:
      - uses: actions/checkout@v6
        with:
          fetch-depth: 0
      - uses: 0x1Adi/[email protected]
        with:
          anthropic-api-key: ${{ secrets.ANTHROPIC_API_KEY }}

プルリクエストでは、PR で追加された部分のみをスキャンします。AI の回答をキャッシュするため、変更されていないコードにはコストがかかりません。検出結果はジョブログに表示されます。GitHub Code Security のないプライベートリポジトリでは、Security タブへのアップロードをスキップするために upload-sarif: "false" を追加してください。GitLab CI とすべてのオプションについてはリファレンスをご覧ください。

# .pre-commit-config.yaml
repos:
  - repo: https://github.com/0x1Adi/Klarion
    rev: v0.4.3
    hooks:
      - id: klarion
        stages: [pre-commit]

stages の行がない場合、フックは無効になり、pre-commit run --hook-stage manual klarion を実行したときだけ動作します。klarion フックは初回実行時に Go で Klarion をビルドします。すでに klarion がインストールされている場合は id: klarion-system を使ってください。コミットする人は全員、モデルをセットアップする必要があります。

// ~/.cline/mcp.json, or the MCP settings of any other client
{
  "mcpServers": {
    "klarion": {
      "command": "klarion",
      "args": ["mcp"]
    }
  }
}

エージェントはコードを書き込む前に scan_text を呼び出し、コミットする前に scan_file を呼び出します。サーバーを自動承認するのではなく、呼び出しごとに承認してください。scan_file は指定された任意のパスを読み取るためです。モデルが設定されていない場合、サーバーは各候補と判定ルールをエージェントに渡して判定させるため、API キーは不要です。モデルを設定すると、Klarion が判定します。ツールやインストールの確認方法を含む詳しい手順は、llms-install.mdをご覧ください。

結果

Klarion は gitleaks より実際のシークレットを約 1.7 倍多く検出し、アラートの 89%が実際のシークレットでした (gitleaks:91%)。

Klarion v0.3.0 を CredData でテストしました。CredData は、Samsung がシークレットを含む行にラベルを付けた、オープンソースの実在するリポジトリ 337 件です。以下の数値は、テスト用フォルダー以外のコードを対象としています。

Klariongitleaksdetect-secrets
検出した実際のシークレット35%21%35%
実際のシークレットだったアラート89%91%34%
flask と rails での誤検知933247

知っておくとよいこと:

  • Klarion は意図的にテスト用フィクスチャとドキュメントのサンプルを除外します。 CredData では、これらも実際のシークレットとして数えています。 その方法で数えると、Klarion は 9%、gitleaks は 46%を検出しました。
  • Klarion の数値は、1 つのモデル(Claude Haiku)で 612 件を AI チェックしたサンプルに基づいています。 推定範囲は、検出率が 30~40%、実際のシークレットである割合が 82~97%です。
  • CredData のラベルは、他のスキャナーが検出した結果に基づいているため、それらのスキャナーに有利に働きます。

手法とデータの詳細:benchmark/REPORT.md。

動作の仕組み

ステップ 1 ではローカルチェックを実行して候補を検出します。ステップ 2 では AI モデルが候補を 1 つずつチェックし、実際のシークレットが見つかるとスキャンを失敗させ、それ以外は非表示にします。
  • ステップ 1 はお使いのマシンで実行されます。 既知のキー形式、password = value のような行、.pgpass などの認証情報ファイル、Base64 や 16 進数に隠されたシークレットを探します。また、文字列がどれくらいランダムに見えるかもチェックします。
  • ステップ 2 ではモデルに判定を求めます。 各候補は、前後数行のコードとともに送信されます。モデルは、シークレット、誤検知、不確実のいずれかを回答します。不確実な場合はシークレットとして扱います。
  • 非表示にされた内容を確認できます。 klarion scan . --show-suppressed を実行してください。
  • コードが送信されるのは、選択したモデルだけです。 send_secret = false に設定すると、代わりにマスクした値が送信されます。その場合、精度は下がります。

制限事項

  • モデルが必要です。 モデルがない場合、klarion scan とコミットフックはエラーで停止します。Claude Code フックは AWS、GitHub、Stripe などのプロバイダーキーを引き続きブロックします。また、MCP サーバーは候補とそのルールをエージェントに渡して判定させます。
  • API キーをお持ちでない場合は? 設定不要のホスト型判定サービスを準備中です。こちらから登録してください。
  • モデルが誤判定することがあります。 --show-suppressed で非表示にされた内容を確認してください。
  • シークレットを検出しますが、修正はしません。 検出されたシークレットはローテーションしてください。
  • ローカルフックは git commit --no-verify でスキップできます。 Action を使って CI でも Klarion を実行してください。pre-commit フックはステージ済みの変更のみをチェックするため、CI ではチェック対象がありません。

詳細

リファレンス · ベンチマーク · 設計 · 変更履歴 · コントリビューション · セキュリティ

MIT © Klarion Authors

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。