人が鍵を持っている

AIによるシークレット検知:開発者向けガイド

シークレット検知の定義

シークレット検知とは、ソフトウェア開発環境内のコードベースやその他の場所で、「シークレット」と呼ばれる機密データを見つけ、フラグを立てるプロセスです。この自動化された防御層により、機密情報がハードコーディングされたり、読みやすい形式や暗号化されていない形式でソースコードに導入されたりすることがないようにすることができます。

シークレット検知は、セキュリティーを開発プロセスの早い段階に引き上げる「シフト・レフト」アプローチの一部として機能します。シークレットはコードを超えて広がる可能性があり、セキュリティ-・インシデントにさらされるリスクが増大します。シークレット検知による自動保護は、開発者のワークフローを大規模に保護するのに役立ちます。

シークレットとは

アプリケーション・セキュリティー(AppSec)においてシークレットとは、アプリ、デバイス、またはワークロードのような人間のユーザーまたは人間以外のアイデンティティーにアクセスを許可し、それらのユーザーが通信またはアクションを実行することを可能にするデジタル情報です。機密性が高いため、シークレットは極秘に保つ必要があります。

以下は、一般的なシークレットの種類です。

  • 認証および認可トークンは、IDを検証し、リソースへのアクセスを認可します。

  • 生体認証データには、顔の特徴、指紋、声、さらには動作など、その人に固有の身体的および行動的特徴が含まれており、これらは本人確認に使用できます。

  • デジタル証明書とそれに関連する秘密キーは、エンドポイントを認証し、安全な通信チャネルを確立するために使用されます。

  • 接続文字列は、データソースに接続するための指示を含むテキストの文字列です。

  • データベース認証情報は、データベースへのアクセスを取得するためのユーザー名とパスワードの組み合わせです。

  • サービス・アカウントの認証情報を使用すると、アプリや自動化されたワークフローがオペレーティング・システムにアクセスして対話できます。

  • SSH(Secure Shell)キーは、サーバーやその他のインフラストラクチャーにアクセスするエンティティーを認証するために使用されます。

  • ユーザー名とパスワードの組み合わせは、システムへのユーザーのアクセスを認証する文字列で構成されます。

シークレット検知が重要な理由

シークレットは脅威アクターにとって主要な標的です。クラウドネイティブ環境では、チャットボットを利用して、公開されたトークン、漏洩した認証情報、または設定ミスを収集できます。攻撃者はこれらのシークレットを悪用して、アプリケーションやシステムに不正にアクセスします。アクセスは正当な認証情報を通じて得られるため、検知が難しくなり、長期間にわたって気付かれない可能性があります。

したがって、シークレットの検出は企業のサイバーセキュリティー・ストラテジーの重要なコンポーネントになります。シークレットの検出は、組織に次のようなメリットをもたらします。

  • アカウントの乗っ取りや権限昇格を回避する:ハッカーは漏洩した認証情報を利用して権限を昇格させることができます。より高い特権で武装すると、システム設定の変更、サーバーやインフラストラクチャーの混乱、コマンドの実行、マルウェアのインストール、資産の制御を実行できます。

  • データ侵害を防ぐ:悪意のあるアクターは、公開されたシークレットをエクスプロイトして、機密の個人情報や企業の機密データを盗む可能性があります。このようなデータ侵害は、金銭的損失、顧客からの信頼低下、風評被害などにつながり、高額な損失につながる可能性があります。

  • 脆弱性を削減する:漏洩した機密情報は、無防備な扉を開くことになります。これらの脆弱性を特定することで、企業はこれらの脆弱性を積極的に取り除き、サイバー攻撃の成功を防ぐことができます。

シークレット検知の仕組み

このプロセスはシークレット・スキャンから始まります。シークレット検知ツールは、コード・リポジトリー(リポジトリーとも呼ばれます)と関連リソースを精査して、シークレットの漏洩を検知します。これらのツールは、シークレットの種類やその場所など、特定されたシークレットに対するアラートまたはレポートを生成します。開発チームとセキュリティー・チームは、これらのアラートやレポートを活用して、シークレットをシークレット管理ソリューションに移動するなど、修復のための手順を検討できます。これらのソリューションは、シークレットの作成、使用、ローテーション、保護の自動化、一元化、合理化に役立ちます。


シークレット検知には、リポジトリー全体でシークレットを正確に特定するためのさまざまな方法を組み合わせる必要があります。

  • パターンのマッチング

  • 辞書スキャン

  • エントロピー分析

パターンのマッチング

パターン・マッチング・アルゴリズムは、シークレットの標準形式に一致する文字列を探します。また、文字シーケンスで構成される検索パターンである正規表現も使用します。

この方法は、クラウド・サービスのアクセス・トークンやAPIキーなど、事前定義された形式に従うシークレットに対して効果的です。ただし、正規表現(regexとも呼ばれる)を使用したシークレットのスキャンは時間がかかる可能性があり、ランダムな構成を備えたシークレットは検知されない可能性があります。

辞書スキャン

シークレット検知では、辞書は既知のシークレットを含むデータソースです。これらの辞書は、シークレットを検索する際の参照として使用できます。

辞書スキャンは、シークレットが現在使用されているかどうかを判断するのに役立ちます。しかし、辞書に含まれていないシークレットを検出できない場合もあります。

エントロピー分析

エントロピーは、データのランダム性や予測不可能性を測定します。エントロピーが高いほど、データのランダム性が高まり、予測が困難になります。そのため、エントロピー分析では、文字シーケンスのランダム性を評価します。

このメソッドは、暗号化キーなど、既知のパターンに準拠していない潜在的なシークレットの発見に役立ちます。また、新しい秘密や高エントロピーの秘密を明らかにすることもあります。

シークレット検知のためのツール

シークレット検知システムには豊富な選択肢があります。適切なソリューションを選択する際、企業はソリューションの正確さ、検知能力の深さと広さ、大規模なコードベースやソフトウェア開発ライフサイクル(SDLC)全体に対する拡張性、そして技術スタックやソフトウェア開発ワークフローと互換性があり、シームレスに統合できるかどうかを考慮しなければなりません。

ここでは、シークレット検知のための一般的なツールをいくつか紹介します。

GitLabのシークレット検知

GitLabは、GitLab環境特有のシークレット検知用アナライザーを使用しています。これは以下の機能を提供します。

  • シークレット・プッシュ保護は、GitLabにプッシュされる前に変更を加え、シークレットが発見された場合にはプッシュをブロックします。

  • パイプラインのシークレット検知は、CI/CDパイプラインのコンポーネントとして動作し、マージ・リクエストやリポジトリのデフォルト・ブランチへのコミットを検査します。

  • クライアント側のシークレット検知は、問題とマージ・リクエストのコメントと説明を調べます。

GitLabは、特定の種類の漏洩シークレットを取り消すことで自動的に対応できます。特定のアカウント・レベルでは、GitLabの主要な機能である検知により、特定された機密情報を評価し、潜在的な偽陽性を判断します。

Gitleaks

Gitleaksは、Gitリポジトリ、ディレクトリ、ファイル、その他の標準インプットにおける秘密を検出するための オープンソース ツールです。その検知エンジンは、正規表現分析とエントロピー分析によるパターン・マッチングを組み合わせたものに基づいています。

組織は、独自のシークレットのカスタム・ルールセットを作成できます。また、Gitleaksをコミット前のフックとして実行し、リポジトリーに含める前にソースコードの機密を捕捉することもできます。

HashiCorp Vault Radar

Vault Radarは、HashiCorpの機密情報検知製品です。機密情報や個人情報(PII)の継続的なリアルタイム・スキャンを実施し、ダッシュボード上で分類してランク付けを行うことで、修復作業を支援します。

コードのコミット、プル要求、およびデータ・ソースの追加時にもスキャンが実行されます。サポートされているデータ・ソースには、Azure DevOps、Bitbucket、GitHub、GitLabなどのリポジトリとプラットフォーム、およびConfluence、Jira、Slackなどのコラボレーション・プラットフォームが含まれます。

Vault Radarは、特定のエンタープライズ・アカウントに対して組み込みの修復ガイダンスを提供します。公開されたシークレットは、修復プロセスの一環として、HashiCorpのシークレット管理プラットフォームであるVaultにコピーすることもできます。

 
シークレット検知のためのAI

人工知能により、シークレット検知ツールの精度と効率を向上させることができますが、そのほとんどは高い偽陽性率をもたらします。AIモデルは、より広範なシークレット・タイプに対応する特徴を認識するように訓練することができ、ルールベースのソリューションよりもダイナミックになります。

AIで秘密を検知するメリット

シークレット検知用AIを実装する開発チームは、次のメリットを得ることができます。

  • アウェアネス:AIモデルは、コード・コメント、ソースコード構造、変数名など、シークレットを取り巻くコンテキストを学習できます。このセマンティック分析とコンテキスト分析により、モデルは真のシークレットとサンプル・データまたはテスト値をより適切に区別できるようになります。したがって、アウェアネスは真陽性率を高め、偽陽性率を下げるのに役立ちます。

  • リアルタイムの検知:AI搭載のシークレット検知ツールの中には、IDEとシームレスに統合し、開発者がコードを書く際にハードコードされたシークレットにフラグを立てたり、公開されたシークレットがコミットされたりリポジトリにプッシュされたりする前に検知したりするものもあります。

  • 優先順位付けと修復の自動化:AI駆動型のシークレット検知では、悪用可能性、影響、場所、重大性などの要因に基づいてリスク・スコアを割り当てることで、フラグを立てたシークレットの優先順位付けを自動化できます。また、公開されたシークレットをシークレット管理プラットフォームへの呼び出しに置き換えるなどの修正を提案することもできます。

シークレット検知のためのAIベースの技術

AIを適用して秘密を検知するには、次のような多くの手法が必要です。

  • アンサンブル学習:アンサンブル学習は、複数の分類器をマージして予測精度を高めます。

  • 生成AI:大規模言語モデル(LLM)は、シークレット検知のもう一つの選択肢となります。事前にトレーニングされたLLMと微調整された小規模言語モデル(SLM)の両方を使用して、シークレットを予測し、さまざまなシークレットタイプに従って分類できます。LLMの予測と分類の精度を検証するには、人間参加型のアプローチが依然として不可欠です。

AI搭載のシークレット検知ツール

従来のストラテジーとAIベースのストラテジーを組み合わせることで、シークレット検知プロセスを強化できます。パターン・マッチングとエントロピー分析を使用してシークレットを検索し、AI駆動型の方法論で発見されたシークレットを検証し、偽陽性を排除します。

AIを使用したシークレット検知ソリューションの例をいくつかご紹介します。

GitGuardian

GitGuardianのコード・セキュリティー・プラットフォームは、Gitリポジトリ、CI/CDパイプライン、Dockerイメージ、Confluence、Jira、Slackなどのコラボレーション・システムをスキャンします。開発者はコミット前フックをセットアップしてスキャンをIDEに統合したり、GitGuardianのコマンドライン・インターフェース・アプリを使用したりできます。

GitGuardianのシークレット検知エンジンは、2種類のパターン・マッチング検知器で構成されています。1つは特定のシークレット・タイプを見つけることに特化した特定検知器で、高い再現率と精度を実現します。もう1つは特定の検知器が見逃す可能性のあるものを捕捉する汎用検知器です。さまざまな機械学習モデルには、偽陽性の可能性が高いシークレットのフィルタリングや、一般的シークレットのコンテキストを評価して適切なカテゴリーとプロバイダーを割り当てるなど、貴重な機能も追加されています。

その他の機械学習を活用した機能には、コンテキストの類似性を共有するシークレットをクラスター化する同様のインシデントのグループ化や、互いのエラーから学習するデシジョン・ツリーのアンサンブルであるXGBoost(eXtreme Gradient Boosting)を使用して、複数のリスク・シグナルに基づいてシークレットをランク付けするリスク・スコアリングなどがあります。

GitHub Secret Protection

GitHub Secret Protectionは、GitHub独自のシークレット・スキャン・システムです。リポジトリのすべてのブランチに関するGitの履歴、問題やプル・リクエストの説明、コメントを精査します。

システムのプッシュ保護機能は各プッシュをリアルタイムでスキャンし、シークレットを含むコミットをブロックします。検証を実行して、発見されたシークレットがアクティブで公開されているかどうかを検証できます。

GitHub Secret Protectionは、GitHub Copilotを使用して、リポジトリにコミットされた非構造化シークレットを検出します。

IBM Bob

Bobは、IBMのAIコーディング・アシスタントで、ソースコードの記述、デバッグリファクタリングコード・レビュードキュメンテーションをサポートするように設計されています。Bobはコード内のセキュリティー脆弱性を正確に特定でき、組み込みのシークレット検知機能と組み合わせることで、安全なコーディングを容易にし、促進します。

Bobは、ハードコードされたシークレットを検索し、セキュリティ・リスクを説明し、シークレットを保護するための対策を推奨する、カスタム・エージェント・モードを実行するようにプログラムすることができます。シークレットをHashiCorp Vaultのようなシークレット管理プラットフォームへの参照に置き換え、モデル・コンテキスト・プロトコル(MCP)を使用してハードコードされたシークレットをVaultにプッシュできます。

シークレット検知のベスト・プラクティス

シークレット検知は企業のセキュリティー体制を強化します。SDLCの開発、デプロイメント、保守の各段階に組み込むと、最も効果的です。

以下は、開発チームがシークレットの検知を実装する際に留意できるベスト・プラクティスです。

  • 最も重要なシークレットを定義する

  • コード関連のソースを超える

  • CI/CDパイプラインへのシークレット検知を埋め込む

  • トリアージと修正をする

  • 開発チームとDevOpsチームを教育する

最も重要なシークレットを定義する

企業は、自社にとって何がシークレットとなるかを定義し、これらのシークレットを重要度別に分類して、修復プロセスに通知することから始めることができます。また、ソフトウェア・サプライチェーン全体を監査して、機密の漏洩の範囲を計画する必要もあります。

コード関連のソースを超える

シークレットはコード関連のソースを超えて拡散する可能性があります。つまり、検知では、シークレット漏洩の可能性がある次のようなソースも考慮する必要があります。

  • 構成ファイル

  • コンテナKubernetesのようなコンテナ・オーケストレーション・プラットフォーム

  • データベース

  • ドキュメント

  • ログ

CI/CDパイプラインへのシークレット検知を埋め込む

DevOpsチームは、開発者がコードをコミットしたり、プル要求を開始したり、ハードコードされたシークレットを含む変更をブロックしたりする前に、シークレット・スキャンを必須のステップにするコミット前フックを実装できます。また、ランタイム環境や本番環境に到達する前に、アーティファクト、ビルドログ、環境変数を継続的にスキャンして、シークレットがないか確認する必要があります。

トリアージして是正する

企業は、機密情報の漏洩を優先し、修正する方法に関するポリシーを確立する必要があります。トリアージ・ポリシーには、さまざまな種類のシークレットによってもたらされるセキュリティー・リスクと、トリアージを担当するチームのアセスメントを含めることができます。

修復ポリシーでは、シークレットの取り消しやローテーション、シークレット管理プラットフォームへの呼び出しに置き換えるなど、実行するアクションを明確に説明する必要があります。これらの修正を自動化すると、時間を節約し、迅速な対応が可能になりますが、修正は、シークレットが検知できなくなったことを確認するためにテストする必要があります。

 
開発チームとDevOpsチームを教育する

組織は、安全なコーディングに関する開発チームまたはDevOpsチームのトレーニングの一環として、シークレットの検知を含める必要があります。チームは、ハードコードされたシークレットやシークレット(公開されたシークレット)の危険性、それらの危険を制限するためにできること、シークレット検知に必要なツールを使用する方法を理解する必要があります。

共同執筆者

Rina Diane Caballar

Staff Writer

IBM Think

Cole Stryker

Staff Editor, AI Models

IBM Think

関連ソリューション
IBM Verify

IDおよびアクセス管理(IAM)をモダナイズし、既存のツールと統合し、複雑さを増すことなくシームレスなハイブリッド・アクセスを可能にする、安全でベンダーに依存しないIDフレームワークを構築します。

IBM Verifyはこちら
IDおよびアクセス管理 (IAM) ソリューション
ハイブリッド環境全体でIDを保護および統合することで、アクセスを簡素化しながらリスクを軽減します。
IAMソリューションを探索する
IDおよびアクセス管理(IAM)サービス

ハイブリッドクラウド環境全体にわたる自動ID制御とリスクベースのガバナンスにより、ユーザー・アクセスを保護および管理します。

    IAMサービスはこちら
    次のステップ

    IBM Verifyを使用してIDおよびアクセス管理(IAM)を強化し、隠れたIDベースのリスクをAIで明らかにすることで、シームレスなハイブリッド・アクセスを実現し、ID保護を強化します。

    1. IBM Verifyの詳細はこちら
    2. ID管理とアクセス管理ソリューションの詳細はこちら