ソースコード内の見落とされたパスワードは、セキュリティ警告が出ないまま企業のシステムを危険にさらす恐れがあります。
GitHubは10月7日、AIによるパスワード検出アラートを新モデルで強化したと発表しました。パターンベースのスキャナーでは見逃しかねない認証情報を識別できるといいます。AIによるプッシュ保護は非公開プレビューで提供されており、Copilotによる追加チェックも近く非公開プレビューで始まる予定です。
セキュリティチームにとって、認証情報をプッシュ前に捕捉できれば、漏えいそのものを防げます。プッシュ後に見つかった場合は、認証情報の失効、影響を受けるアプリケーションの更新、不正使用の可能性の調査が必要になることがあります。
従来のスキャナーは、多くのAPIキーやアクセストークンを、識別可能なパターンによって見分けています。一方、社内で使うパスワードにはそうした目印がないことが多く、アプリケーションファイル内の通常のテキストと区別するのは困難です。
GitHubは、Microsoft Applied Sciencesと共同で新しい分類器を開発しました。ModernBERTを用い、周辺のコードを調べて、ある文字列が認証情報である可能性が高いかを判定します。対象には、データベースURL、Kubernetes Secretファイル、Dockerfile内のパスワードなどが含まれます。changemeのようなプレースホルダーと、実際の認証情報らしきものを区別することも可能です。
この分類器は、コードや文章を生成する生成AIツールとは異なり、候補となる文字列が秘密情報である可能性が高いかどうかを評価します。GitHubによると、分類器は候補となる秘密情報をまとめて2ミリ秒未満で評価します。ただし、この数値はモデルの処理時間であり、セキュリティチェック全体の所要時間ではありません。誤検知や検出漏れが起こる可能性も残っています。
GitHub、パスワード漏えいをより早い段階で検知する仕組みを試験
GitHubの分析によると、追加のシークレットタイプを含めた場合、既存のプッシュ保護は新たに検出された秘密情報の約30%を、リポジトリ履歴に入る前に阻止しています。約70%はコミットされた後に見つかっています。過去に公開状態のGitリポジトリを調べた調査でも、アクセス可能なリポジトリデータの中に、有効なクラウドや決済の認証情報が保存されていたことが確認されています。
GitHubは、この分類器の用途を次の3つに整理しています。
- シークレットスキャンのアラート。AI検出のパスワードアラートを利用している既存顧客には、アップグレード後のモデルが自動的に適用されました。この機能の対象となるリポジトリで、認証情報の可能性があるものを識別します。
- プッシュ保護。非公開プレビューで利用できます。開発者がコードをプッシュする際に、AIチェックが構造化されていない認証情報を識別し、リポジトリ履歴に入る前にブロックできる可能性があります。
- Copilotによるセキュリティレビュー。近く始まる非公開プレビューで、Copilot CLIとCopilotアプリの/security-reviewコマンドにこの分類器が追加されます。開発者やAIコーディングエージェントは、コードのコミットやプッシュの前に、変更内容に秘密情報が含まれていないかを確認できるようになります。
既存のAI検出アラートは、GitHub Secret ProtectionおよびGitHub Advanced Securityに追加料金なしで引き続き含まれます。一方、オプトイン方式の新しいプッシュ保護とCopilotチェックについては、GitHubが今後数週間のうちにAIクレジットによる課金を導入する予定です。既存の非公開プレビュー利用者も、課金開始後にAIプッシュ保護を使い続ける場合はクレジットを消費します。プッシュのチェックは、ブロックが一度も発生しなくてもクレジットを消費することがあります。
AIプッシュ保護の対象は、有料のセキュリティ保護を契約し、管理者の承認を得た、対象のGitHub TeamおよびEnterprise Cloudの顧客です。Copilotの新しい分類器チェックでは、これらのセキュリティライセンスは不要ですが、対象となるCopilotへのアクセス権は必要です。GitHub Enterprise Server 3.23でも、AI検出アラートがパブリックプレビューで提供される見通しです。ただし、新しいプッシュ保護とCopilotチェックは含まれません。
セキュリティチームに求められる、認証情報漏えいへの備え
GitHubでソフトウェアを開発している組織では、パスワードが漏えいすると、その権限によっては連携するサービスにアクセスされる恐れがあります。CISAの契約業者に関連する公開GitHubリポジトリでは、政府のクラウド認証情報や内部のデプロイ情報が含まれていたと報じられています。
アプリケーションセキュリティチームとリポジトリ管理者は、次の対策を講じるべきです。
- 保護対象のリポジトリを確認する。シークレットスキャンとプッシュ保護が、必要な範囲で有効になっていることを確かめます。委託先が管理するリポジトリ、社内コードを含む個人プロジェクト、自動化された開発ワークフローも対象に含めます。警告を無視できる権限を持つのは誰か、そうした例外がどう記録されるかも把握しておきます。
- 漏えいした認証情報を失効させ、不正使用の可能性を調査する。最新のコードからパスワードを削除しても、過去のコミットからは消えているとは限りません。チームは、漏えいした認証情報を失効させて新しいものを発行し、関連するアカウントやサービスのログに不正なアクティビティがないかを調べる必要があります。インシデントを終結させる前に、その認証情報をどのアプリケーションが使っているかも確認します。
- 開発全体で認証情報の保護を広げる。研究者らは以前、1万件を超えるDocker Hubイメージが機密情報を露出していたことを確認しており、認証情報が他の開発成果物からも流出し得ることを示しました。有効な認証情報は専用のシークレット管理サービスに保管し、権限を制限します。人が書いたコードにも、AIが生成したコードにも、セキュリティチェックを適用してください。
セキュリティチームは、漏えいした認証情報で得られるアクセス範囲に応じて、アラートの優先順位を付けるべきです。使われていないテスト用の値と、稼働中の本番環境のパスワードとでは、脅威の大きさが異なります。対応もその違いを踏まえる必要があります。
サイバーセキュリティニュースをもう一つ:新しい認証レポートによると、アカウントやシステムを守る立場の専門家の間でさえ、パスワードの利用は依然として広く残っています。
翻訳元: https://www.esecurityplanet.com/artificial-intelligence/news-github-ai-password-detection/