【ITニュース解説】Generative and Predictive AI in Application Security: A Comprehensive Guide
2025年09月24日に「Dev.to」が公開したITニュース「Generative and Predictive AI in Application Security: A Comprehensive Guide」について初心者にもわかりやすく解説しています。
ITニュース概要
AIは、アプリのセキュリティを大きく進化させている。生成AIはテストや攻撃を、予測AIは脆弱性の特定や優先順位付けを助ける。SASTなど既存ツールもAIで強化され、自律型AIも登場。誤検知やゼロデイ対応の課題もあるが、人間の専門知識と組み合わせることで、より安全なシステム開発に貢献する。
ITニュース解説
アプリケーションセキュリティ(AppSec)の分野で、人工知能(AI)が劇的な変化をもたらしている。AIは、アプリケーションの弱点を見つけたり、テストを自動化したり、さらには自律的に脅威を探索したりと、セキュリティ対策をより高度にしている。これは、機械学習やAIを活用したソリューションが、過去、現在、そして未来にわたってどのようにAppSecで機能するかを包括的に説明するものである。
AppSecにおけるAIの歴史は、自動化された脆弱性発見の基礎から始まった。1980年代後半には、Barton Miller氏のファズテストという手法が、プログラムにランダムな入力を与えてクラッシュさせることで、自動的なバグ検出の有効性を示した。1990年代から2000年代初頭にかけては、開発者が自動化スクリプトやツールを使って一般的な欠陥を見つけていた。初期の静的解析ツールは、コード内の不安全な関数や固定されたログインデータを探す高度な「grep」のようなものだった。しかし、これらのパターンマッチング手法は、文脈を考慮しないため、誤った警告(誤検知)を多く出すという問題があった。
次の10年間で、セキュリティモデルは進化し、ハードコードされたルールから文脈を理解するデータ駆動型のアルゴリズムへと移行していった。初期には、システムトラフィックの異常検知やスパム対策にディープラーニングモデルが使われ始めた。静的解析ツールもデータフロー解析や制御フローグラフ(CFG)に基づくチェックで改善され、入力データがアプリケーション内でどのように流れるかを追跡できるようになった。特に「Code Property Graph(CPG)」という概念が登場し、プログラムの構造、実行順序、データフローを一つのグラフに統合することで、より意味のある脆弱性分析を可能にした。2016年には、DARPAのCyber Grand Challengeが、人間なしでセキュリティホールを見つけ、悪用し、修正する完全に自動化されたハッキングマシン「Mayhem」を披露し、自律的なサイバー防御における画期的な出来事となった。
その後、より優れた機械学習技術と豊富なデータセットの登場により、AppSecにおけるAIの活用は加速した。大手テクノロジー企業やスタートアップは、機械学習モデルがソフトウェアの脆弱性やエクスプロイト(攻撃コード)を予測できることを示した。例えば、「Exploit Prediction Scoring System(EPSS)」は、多くの要素を用いて、どの脆弱性が実際に攻撃される可能性が高いかを予測し、セキュリティチームが最もリスクの高い弱点に集中できるように支援している。コード分析の分野では、大量のコードベースで訓練されたディープラーニングネットワークが、不安全な構造を特定している。大規模言語モデル(LLM)は、コード監査を自動化することでセキュリティタスクを向上させ、GoogleのセキュリティチームはLLMを使って公開コードベースに対するランダムな入力セットを生成し、手作業を減らしつつ新たな脆弱性を発見している。
今日のソフトウェア防御では、AIが主に二つの形で活用されている。一つは「生成AI」で、新しい成果物(テスト、コード、エクスプロイトなど)を作り出す。もう一つは「予測AI」で、データを評価して脆弱性を特定したり、将来の脅威を予測したりする。これらの能力は、コード分析から動的テストまで、セキュリティライフサイクルのあらゆる側面に及ぶ。
生成AIは、より戦略的なファズテストを生成できる。従来のファズテストがランダムなデータに依存していたのに対し、生成モデルはターゲットを絞ったテストを作り出す。GoogleのOSS-Fuzzチームは、LLMを使ってオープンソースのリポジトリ向けに特殊なテストハーネスを開発し、脆弱性の発見を増やしている。同様に、生成AIは、脆弱性が理解された後に、その脆弱性を証明する攻撃コード(PoCペイロード)の構築を支援できる。これは防御側が自動でPoCを生成し、自社の防御策をテストし、修正を迅速に行うのにも役立つ。
予測AIは、コードベースを分析して潜在的なバグを見つける。固定されたルールやシグネチャとは異なり、このモデルは何千もの脆弱なコードと安全なコードの例から学習し、ルールベースのシステムでは見逃されがちなパターンを特定できる。これにより、疑わしいパターンを指摘し、新たに見つかった問題の深刻度を評価するのに役立つ。また、EPSSのように、機械学習モデルが実際に攻撃される可能性に基づいて脆弱性(CVE)の優先順位を付けることで、セキュリティプロフェッショナルは最もリスクの高い脆弱性に集中できる。最新のAppSecプラットフォームでは、コミットデータや過去のバグデータを機械学習モデルに投入し、アプリケーションのどの領域が新たな欠陥に対して特に脆弱かを予測している。
従来の静的アプリケーションセキュリティテスト(SAST)、動的アプリケーションセキュリティテスト(DAST)、そしてインタラクティブアプリケーションセキュリティテスト(IAST)といったツールも、AIによって速度と有効性が向上している。SASTはソースコードをスキャンしてセキュリティ欠陥を見つけるが、文脈が不足していると誤検知が多い。AIは、スマートなデータフロー解析を通じて、実際に悪用できない発見をフィルタリングし、誤検知を減らす。DASTは実行中のアプリケーションをスキャンし、攻撃ペイロードを送信して応答を分析するが、AIはDASTを強化し、自律的なクロールと適応的なテスト戦略を可能にする。IASTは実行時にアプリケーションを監視して関数呼び出しやデータフローを観測するが、AIモデルはこの大量のテレメトリデータを解釈し、ユーザー入力が重要な機能に unfiltered(フィルタリングなし)で影響を与える脆弱なフローを見つけることができる。
現代のコードスキャンシステムは、Grep(パターンマッチング)、シグネチャ(ルール/ヒューリスティック)、そしてCode Property Graph(CPG)といった複数の技術を組み合わせて使用している。Grepは高速だが誤検知・誤検知が多く、シグネチャは既知の欠陥には有効だが新しい弱点には限界がある。CPGは、構文木、制御フローグラフ、データフローグラフを統合したグラフモデルで、より文脈を意識したアプローチであり、機械学習と組み合わせることで、これまで見られなかったパターンを発見し、データパスの検証によってノイズを削減できる。
クラウドネイティブ環境や依存関係のセキュリティにおいてもAIは役立つ。コンテナセキュリティでは、AI駆動の分析ツールがコンテナビルド内の既知のセキュリティホールや設定ミス、秘密情報を検査する。また、実行時の適応型脅威検出は、予期せぬコンテナの動作を検知し、静的ツールでは見逃される可能性のある侵入を捕捉する。サプライチェーンリスクでは、何百万ものオープンソースパッケージを手動で精査することは不可能だが、AIが悪意のある兆候を分析したり、特定の依存関係が侵害される可能性を予測したりすることで、最も疑わしい要素を優先できる。
AIはAppSecに強力な機能を提供するが、万能の解決策ではない。誤分類、悪用可能性の分析、トレーニングデータの偏り、ゼロデイ脅威への対応など、限界も理解する必要がある。自動セキュリティテストには誤検知(無害なコードを危険と誤判定)と見逃し(危険な脆弱性を見落とす)がつきものだ。AIは文脈分析で誤検知を減らすことができるが、不適切な訓練は深刻なバグを見落とす可能性もあるため、人間の監督は依然として重要である。
AIが脆弱なコードパスを検出したとしても、それが実際に悪用可能であるとは限らない。現実世界での悪用可能性を判断するのは難しい課題である。また、AIモデルは過去のデータから学習するため、そのデータが特定の技術に偏っていたり、珍しい脅威の例が不足していたりすると、それらを予測できない可能性がある。頻繁なデータ更新とバイアス監視が重要である。機械学習は過去に見たパターンには優れているが、全く新しい種類の脆弱性(ゼロデイ脆弱性)は見逃す可能性がある。悪意のある者もAIを使って防御ツールを誤解させようとするため、AIベースのソリューションは常に更新される必要がある。
AIの世界で最近注目されているのが「Agentic AI(自律型AI)」である。これは単に出力を行うだけでなく、自律的にタスクを実行できる自己指示型システムを指す。セキュリティ分野では、複数の手順を制御し、リアルタイムの応答に適応し、最小限の人間の指示で行動できるAIを意味する。自律型AIプログラムは、「このアプリケーションのセキュリティ上の欠陥を見つける」といった包括的な目標を与えられると、データの収集、ツールの実行、発見に応じた戦略の調整といった方法を自ら決定する。これは、AIが単なるツールから自律的な存在へと移行することを意味する。
攻撃側(レッドチーム)では、Agentic AIが自律的にレッドチーム演習を実施し、脆弱性を列挙し、侵入経路を構築し、侵害を実証することができる。防御側(ブルーチーム)では、AIエージェントがネットワークを監視し、不審なイベントに積極的に対応する(例:侵害されたホストの隔離、ファイアウォールルールの更新、ログ分析など)。しかし、大きな自律性には責任が伴う。自律システムが稼働中のシステムに意図せず損害を与えたり、攻撃者がシステムを操作して破壊的な行動を実行したりする可能性があるため、注意深い安全策と人間による監視が不可欠である。
AppSecにおけるAIの役割は今後も拡大し続けるだろう。今後数年間で、開発者のIDEにはLLMによるリアルタイムの脆弱性スキャンが組み込まれ、機械学習ファザーが標準となり、自律的な継続的セキュリティテストが年次または四半期ごとのペネトレーションテストを補完するようになるだろう。同時に、サイバー犯罪者も生成AIをソーシャルエンジニアリングに利用するため、防御側のAIベースの検出も適応しなければならない。長期的には、AIがソフトウェア開発全体を根本的に変え、人間がAIと共同でコードの大部分を書き、最初からセキュリティを組み込むようになるかもしれない。脆弱性を見つけるだけでなく、自律的に修正し、その解決策の実現可能性を検証するツールも登場するだろう。
AIがAppSecに不可欠になるにつれて、コンプライアンスフレームワークも適応する。AIを活用したコンプライアンスチェックや、AIモデルのガバナンス(訓練データの追跡、モデルの公平性の実証、AI駆動のアクションの記録)が求められるようになるだろう。AIエージェントが防御行動を実行した場合、どの当事者が責任を負うのかといった、AI行動に対する責任の定義は、コンプライアンス機関が取り組むべき複雑な問題となる。
規制を超えて、倫理的な問題も存在する。AIを内部脅威検出に利用することは、プライバシー侵害につながる可能性がある。重要な意思決定をAIに完全に依存することは、AIが偏っている場合にリスクを伴う。また、攻撃者はAIを使って悪意のあるコードを隠蔽する。データ汚染やプロンプトインジェクションは、防御AIシステムを妨害する可能性がある。敵対的AIは、攻撃者が機械学習モデルを標的にしたり、LLMを使って検出を回避したりする、増大する脅威である。機械学習コードのセキュリティを確保することは、今後10年間のAppSecの重要な側面となるだろう。
AI駆動の手法はアプリケーションセキュリティを革新し始めている。その進化の道筋、現代のソリューション、課題、自律システムの利用、そして長期的なビジョンを理解することは重要である。AIはセキュリティチームにとって強力な味方として機能し、弱点を早期に発見し、最大の脅威をランク付けし、面倒な作業を処理するのに役立つ。しかし、これは万能薬ではない。誤検知、トレーニングデータの偏り、新しいタイプのエクスプロイトには専門家による精査が必要である。攻撃者と防御者の間の競争は続いており、AIはその最新の戦場にすぎない。AIを責任を持って導入し、専門家の分析、規制遵守、定期的なモデル更新と連携させる組織は、進化するアプリケーションセキュリティの世界で成功するだろう。AIの約束は、脆弱性が早期に捕捉され迅速に修正され、セキュリティプロフェッショナルがサイバー犯罪者の急速な革新に正面から対抗できる、より安全なデジタル環境である。継続的な研究、パートナーシップ、そしてAI技術の成長により、そのシナリオは私たちが思っているよりも近いかもしれない。