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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
deepsecrets — 正規表現ルール、レキサーによるセマンティック分析、ハッシュ値マッチングを組み合わせ、コード内に露出した認証情報を検出するオフラインシークレットスキャナー。SARIF出力に対応。 | Kitploit
ツール/GitHubGitHub/ntoskernel/deepsecrets
防御ツール静的分析脆弱性スキャナー静的コード分析 (SAST)コード分析DevSecOpsシークレット検出サプライチェーンセキュリティ
GitHubntoskernel/deepsecrets

deepsecrets

正規表現ルール、レキサーによるセマンティック分析、ハッシュ値マッチングを組み合わせ、コード内に露出した認証情報を検出するオフラインシークレットスキャナー。SARIF出力に対応。

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

人気

すべて見る →

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

すべてのツールを探索

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

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

OWASP DeepSecrets — シークレットスキャンに適した優れたツール

Tests Status

これは何か? AI API へのトークンを無駄に消費する CLI プロキシの 또 하나인가?

絶対に違います!

LLM ブームの時代においても、DeepSecrets は完全にあなたのマシン上で動作します — オフラインで、安全に、そして無料で優れた結果を提供します。

では、なぜまた別のツールが必要なのか?

既存のスキャナーのほとんどは、実際にはコードを「理解」していません。代わりにテキストを解析するだけで、カバレッジも不十分です。

DeepSecrets は、従来の正規表現スキャナーと本格的な商用 SAST ツールの間のギャップを埋めます。セマンティックコード解析、危険な変数の検出、コンテキスト認識型のエントロピー解析に大きく依存することで、従来の正規表現ベースのスキャン戦略を拡張しています。 これにより、シークレット候補は常に意味的に正しくなります。字句解析と構文解析の技術を用いて、500 以上の言語とフォーマットにわたる真のコード理解を実現しています。

DeepSecrets はまた、知識ゼロで認証情報を見つける新しい方法である HashedSecret Engine を導入しています。既知の本番シークレットのハッシュ値さえ提供すれば、ツールがコード内で平文として露出しているそれらを発見します。

パフォーマンスとベンチマーク (SecretBench)

DeepSecrets v2.0 は (2026年6月に) SecretBench ベンチマークに対して評価され、従来のフラットテキストスキャナーを上回る性能を示しました:

  • 93% の再現率
  • SecretBench のスコープにおいて 8% の誤検知率
  • SecretBench のスコープ外で 約9K の追加検出

(内部の詳細なストーリーとベンチマークの内訳は、私の HackerNoon の記事 こちら で読むことができます)

クイックスタートガイド

インストール

Github から pip 経由で

$ pip install git+https://github.com/ntoskernel/deepsecrets.git

PyPi から

$ pip install deepsecrets

DeepSecrets には Python 3.11 以降が必要です。

スキャン

スキャンを実行する最も簡単な方法は次のとおりです:

$ deepsecrets --target-dir /path/to/your/code --outformat dojo-sarif --outfile report.json

これにより、デフォルト設定を使用して /path/to/your/code に対してスキャンが実行されます:

  • 組み込みルールセットを使用した正規表現
  • セマンティックチェック(変数検出、エントロピーチェック)

SARIF形式のレポート(DefectDojoおよびGitHub Securityと互換性あり)が report.json に保存されます。

ファインチューニング

--help コマンドはいつでもガイドとして利用できますが、スキャンを環境に合わせて調整するために使用できる主なフラグは以下のとおりです:

  • --regex-rules /path/to/rules.json: 独自のカスタム正規表現ルールセットを指定します。
  • --hashed-values /path/to/hashes.json: 既知の本番シークレットを事前にハッシュ化したリストを提供し、安全に検索します。
  • --excluded-paths /path/to/exclusions.json: スキャン中に無視されるデフォルトのパスを上書きまたは拡張します。
  • --deep-max-size BYTES: このサイズ(デフォルト 250,000 バイト)を超えるファイルは高速分析の対象となります。つまり、言語レキサーを使用せずに正規表現ルールと変数検索のみを実行します。大きなファイルはほとんどが生成物またはミニファイされたものであり、レキサーはそれらのスキャン時間の大部分を占めるにもかかわらず、それ以上を見つけることはほとんどありません。0 を指定すると、すべてのファイルに対して完全な分析が実行されます。
  • --skip-bundles: 他のパス除外に加えて、ミニファイされたJavaScript、ソースマップ、バンドル(*.min.js、*.map、*.bundle.js)を完全にスキップします。
  • --confidence-level {all,low,medium,high,very-high}: 報告する最低信頼度(デフォルトは low、すべての検出結果)。medium、high、very-high はそれぞれ信頼度 3、6、9 以上を保持します。all はスキャナーがシークレットではないと判断した正規表現の一致(プレースホルダー、例)も -INFO ルールID付きで報告します。
  • --report-diagnostics: ターゲット下で見つかったすべてのファイルを、そのステータス、スキャン時間、スキップ理由、分析の深さとともにSARIFレポートに追加します。
  • --regex-candidate-scoring-rules /path/to/rules.json: 正規表現の一致が報告される前にそれを判定するための独自のルールを指定します。フラグに値を指定しない場合、正規表現の一致は判定なしで報告されます。
  • --multiprocessing-context {forkserver,spawn,fork}: ワーカープロセスの起動方法。プラットフォームが対応している場合(Linux、macOS)のデフォルトは forkserver です。ワーカーはサーバープロセスにすでにロードされているスキャナーを共有します。Windowsでは spawn を使用します。3つすべてが同じ検出結果を返します。
  • --disable-masking: 出力レポートで潜在的なシークレットをマスクせずに保持します (以下の注意を参照)。
  • --ci / --no-ci: CIモードをオンまたはオフにします。CIモードでは、ライブ進捗表示の代わりに30秒ごとにプレーンな進捗行を出力します。CIサービス(GitHub Actions、GitLab CI、Jenkinsなど)内では自動的にオンになり、出力がターミナルでない場合にもオンになります。

Github Actions 統合

例 .github/workflows/deepsecrets.yml

name: DeepSecrets Scan
on: [push, pull_request]

jobs:
  scan:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      - name: Set up Python
        uses: actions/setup-python@v5
        with:
          python-version: '3.11'

      - name: Install DeepSecrets
        run: pip install deepsecrets

      - name: Run Scan
        run: deepsecrets --target-dir . --outformat dojo-sarif --outfile report.sarif
        continue-on-error: true

      - name: Upload SARIF report
        uses: github/codeql-action/upload-sarif@v3
        with:
          sarif_file: report.sarif

レポート内のシークレットのマスキング

v1.3.0 以降、パイプラインの成果物を保護するため、レポート内の潜在的なシークレットは自動的にマスキングされます。必要に応じて --disable-masking フラグでこれを無効にできます。

マスキングは、レポート内の partialFingerprints セクションが生データに基づいて正しく設定されるため、ダウンストリームのプラットフォーム(GitHub など)の重複排除ロジックを壊しません。

[!Caution]
マスキングを無効にして DeepSecrets を CI パイプラインに統合すると、CI ログや成果物の中でシークレットが再び漏洩する可能性が高くなります。

SARIF レポートと動的な信頼度

すべての検出結果には信頼度スコアが付与されます。ただし、セキュリティプラットフォームによって SARIF メトリクスの解析方法は異なります。最新の ASPM ダッシュボード間での互換性を確保するため、DeepSecrets は次の処理を行います:

  • 仮想サブルール (rules[]): 信頼度の階層ごとにルールを動的に生成します。S105-LOW から -MEDIUM、-HIGH を経て S105-VERY-HIGH まで(および --confidence-level all でレポートされる拒否されたマッチには -INFO)です。これにより、GitHub Security や DefectDojo はネイティブパーサーを壊すことなく、セマンティックな精度のばらつきを適切にマッピングできます。

  • 決定的な結果レベル: このツールは常に results[] モデルで level: error を明示的に設定します。これは CI/CD パイプラインや古い SAST パーサーに対する汎用的なフォールバックとして機能し、個々のルールの解釈に関係なく、露出したシークレットが確実にビルドを失敗させたり Pull Request をブロックしたりするようにします。

  • コンテキストメッセージ: 生の数値による信頼度スコアを result.message.text にネイティブに注入するため、セキュリティアナリストはダッシュボード上でそれをすぐに確認できます。

ルールセットの構築

Regex

regex チェック用の組み込みルールセットは /deepsecrets/rules/regexes.json にあります。この形式に従ってカスタムルールセットを自由に作成できます。

HashedSecret(ゼロ知識スキャン)

ハッシュ化チェック用のルールセットの例は /tests/fixtures/hashed_secrets.json にあります。この形式に従ってカスタムルールセットを自由に作成できます。

HashedSecret ルールセットの例

既知の本番シークレットをリポジトリ内で平文として露出させることなく検索するには、それらのハッシュを含む JSON を提供します:

[
  {
    "name": "KNOWN-PROD-DATABASE-PASSWORD",
    "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
    "length": 12,
    "algorithm": "sha1"
  }
]

--hashed-values /path/to/hashes.json を付けて実行します。DeepSecrets は字句解析ステージ中に文字列候補をオンザフライで自動的にハッシュ化し、それらと照合します。

連絡先

  • Nikolai Khechumov (@ntoskernel) — 作成者兼メンテナー

FAQ

ふん、まだ正規表現ベースなの?

はい、そして違います。もちろん、他のツールと同様に型付きシークレットを見つけるために正規表現を使用します。しかし、言語理解(字句解析ステージ)と変数検出も内部的には正規表現を使用しています。正規表現は道具であり、問題ではありません。問題は、意味的な文脈なしに正規表現を盲目的に適用することです。

でも Semgrep Secrets はどうなの? 彼らのものをクローンしているように見えるけど。

DeepSecrets はもともと 2023 年 4 月にリリースされました — Semgrep Secrets のローンチの 6 か月前です。私たちは類似した原則を共有していますが、DeepSecrets は 100% 無料/オープンソースであり、大幅に広範な多言語トラッキングサーフェスを活用しています。

DeepSecrets と他のスキャナーとの比較

他のツールが知っているものだけをスキャンするのに対し、DeepSecrets はレキサーを活用します。これにより、ベンチマークがデータセットを持たない可能性のある稀な設定フォーマットやカスタムコードブロック内に隠された危険な認証情報を浮き彫りにすることができます。

SecretBench の結果に基づくツール比較

機能 / 能力DeepSecrets 2.2GitleaksTruffleHogSemgrep Secrets
SecretBench 精度93% 再現率
79% 適合率
88% 再現率
46% 適合率
52% 再現率
6% 適合率
未評価
価格とライセンス無料 / オープンソース無料 / オープンソース無料 / オープンソース商用 / 有料
分析タイプセマンティック / 正規表現フラットテキスト正規表現 / エントロピーフラットテキスト正規表現 / エントロピーセマンティック
言語サポート500+文脈非依存(テキスト)文脈非依存(テキスト)限定的なサブセット
事前ハッシュ化検証はい(ハッシュエンジン経由)いいえいいえいいえ
文脈認識エントロピーはい(代入値)いいえ(ファイルテキスト全体)いいえ(ファイルテキスト全体)はい
高度な SARIF 出力はい(動的信頼度)基本基本はい

なぜ真の抽象構文木を構築しないの? 学術的にはそちらの方が正しいはずでしょ!

DeepSecrets は複雑さと効果のバランスを保とうとしています。500 以上の言語にわたって真の AST を構築することは信じられないほど複雑で、シークレット検出には単純に過剰です。このツールはコード分析に汎用的な SAST アプローチに従いますが、AST ステージを最大速度と広さのために最適化しています。

独自のセマンティックルールを作りたい。どうすればいい?

セマンティックルールは現在、実質的に「変数評価ルール」です。こちらで確認できます。

まだ質問があります

pyproject.toml に記載されているメールアドレスを使用して、開発者に直接お気軽にご連絡ください。

コントリビューションと中核概念

内部の仕組み

いくつかの主要な概念があります:

  • File
  • Tokenizer
  • Token
  • Engine
  • Finding
  • ScanMode

File

管理に必要なすべてのメソッドを備えた、ファイルの Python 的な表現です。

Tokenizer

ファイルの内容をそのロジックに従って断片 — トークン — に分割します。利用可能なトークナイザーは 4 種類あります:

  • FullContentTokenizer: すべての内容を単一のトークンとして扱います。正規表現ベースの検索に便利です。
  • PerWordTokenizer: 与えられた内容を単語と改行で分割します。
  • LexerTokenizer: 言語固有のスマートさを用いてコードを意味的に正しい断片に分割し、各トークンに追加の文脈を付与します。
  • CheapVarDetectorTokenizer: セマンティック変数検出の限界をカバーするために、厳密な正規表現を使用します。

Token

その意味的役割、対応するファイル、およびファイル内の位置に関する追加情報を持つ文字列です。

Engine

独自のロジックによって単一のトークンに対するシークレット検索を実行するコンポーネントです。Finding のセットを返します。利用可能なエンジンは 3 種類あります:

ツールをダウンロード