Header background

CVE-2025-3248の修正:Dynatraceアプリケーションセキュリティがエージェント型AIアプリケーションを保護する方法

エージェント型AIは、様々な産業分野において生産性と効率性を加速させておりますが、その役割の拡大に伴い、早急な検討が必要な深刻なセキュリティ上の懸念も生じております。 例えば、エージェント作成用のビジュアルプログラミングツール「Langflow」で最近発見された脆弱性は、優れた設計のツールであっても、実際のワークフローに組み込まれた際に予期せぬリスクを露呈する可能性があることを示しています。CVE-2025-3248として指定されたこの脆弱性により、システムは認証されていない攻撃者がHTTPリクエストを送信して任意のコードを実行する攻撃に対して脆弱となります。

本ブログでは、攻撃者がCVE-2025-3248を悪用し、従来の攻撃手法を用いてAIエージェントの動作を操作し、AIが生成したソースコードに悪意のあるバックドアを仕込む方法を実証いたします。

エージェント型AIフレームワークの脆弱性がもたらすリスクを軽減するため、Dynatrace Cloud Application Detection and Response(CADR)が悪意のある活動を検知し、エージェントとそれが動作する環境の両方を保護する方法を紹介します。

攻撃者の視点:CVE-2025-3248とは何か、そしてそれを悪用する方法とは?

Langflow フレームワークにおける重大な脆弱性 CVE-2025-3248 は、認証されていないユーザー(CWE-306)によるコードインジェクション(CWE-94)の実行が可能であるため、リモートコード実行(RCE)につながります。Dynatraceのセキュリティ研究者により、Pythonパッケージlangflow v1.3.0以下に加え、langflow-base v0.3.0以下のパッケージも脆弱であることが判明しました

Attacker scenario Langflow Framework

本シナリオでは、攻撃者がこの脆弱性を悪用し、Langflowを実行しているコンテナへのリモートアクセスを取得します。攻撃者は、AIエージェント内のLLMへの指示を操作し、上図に示すように生成されたコード関数にバックドアを注入します。

ここで、プロセスを最初から振り返ってみましょう。下図はLangflowのユーザーインターフェースを示しています。エージェントの設定には、「あなたはプログラミングアシスタントです。技術的な質問には明確に、正確に、効率的に回答してください」という無害なシステムプロンプトが使用されます。ユーザーはチャット入力でエージェントと対話し、チャット出力ウィンドウを通じて回答を受け取ります。また、APIを使用してエージェントを外部アプリケーションに公開・統合することも可能です。

Agent prompt to expose and integrate agent into an external application using an API

本設定では、LangflowフレームワークはKubernetesクラスター上にデプロイされ、ユーザーが特定のタスク(エージェントを用いたソースコード生成など)を実行するためにアクセス可能です。本シナリオの攻撃者は、CVE-2025-3248の公開されているエクスプロイトの一つを利用し、攻撃者が制御するコードをコンテナ内に注入・実行します。例えば、以下に示すように/etc/passwdファイルを読み取るような操作です。

Exploit example

その後、攻撃者はリバースシェルを開き、アプリケーションホスト上でさらなるコマンドを実行してシステムを侵害します。具体的には、攻撃者はポート7777を使用して接続を確立し、コンテナ上でのコマンド実行を可能にします。リバースシェルの開設により、攻撃者は特定のコマンドを実行する際の痕跡を大幅に低減できます。これは、初期のエクスプロイトスクリプトが例外を引き起こし、それがログファイルに記録されるためです。

Reverse Shell

Reverse Shell

システムへのさらなる侵入のため、攻撃者はLangflowが使用するSQLiteデータベースを検索し、ユーザーアカウント、認証情報、フローの列挙を進めます。攻撃者はデータを外部に流出させたり、データベース内で改ざんしたりすることが可能であり、システムの完全性とセキュリティをさらに損なう恐れがあります。

Langflowのデフォルトデプロイ構成ではローカルSQLiteデータベースを使用するため、攻撃者は認証情報なしでこのデータにアクセス可能です。異なるデータベースバックエンド(例:PostgreSQL)を使用するように設定されている場合でも、環境変数を調査することで必要な認証情報を取得できる可能性があります。

Reverse Shell

攻撃者はその後、データベース内のAIエージェントのシステムプロンプトを悪意のあるものに改変し、生成されるコードにバックドアを注入させ、それを難読化させます。

Reverse Shell

これにより、ユーザーがエージェントにコードスニペットの生成を要求すると、以下に示すように、後方互換性を確保するためであり削除しないようユーザーに伝えるコードコメント付きの難読化された悪意のある部分がコードに含まれるようになります。

LLM Output

一見すると明らかに不審なコードに見えますが、エージェントがより大規模または複雑なコードベースを生成する任務を負う場合、リスクは大幅に高まります。そのような場合、ユーザーはコードの内容を十分に確認・検証せずに実行してしまう可能性があります。さらに深刻な影響が生じるのは、Agentic AIが開発環境に統合され、開発者のマシン上で直接コードをテスト・実行できる場合です。

防御側の視点:Dynatrace CADRアプローチの有効性

Dynatrace CADR approach diagram

Dynatraceは、上記のような攻撃を複数の層で検知・防止します。具体的には、攻撃者の侵入経路となる脆弱性の検知、攻撃がシステムに侵入することを可能にする設定ミスの特定、そしてエクスプロイトによって引き起こされた不審なトレースの調査を行います

これら3つの層すべてを探るシナリオ例を具体的に見ていきましょう。このプロセスは、DynatraceワークフローがSlack上でサイトリライアビリティエンジニアリング(SRE)にPython例外を通知するところから始まります。

Dynatrace SRE Slack Bot Message

これにより、SREは影響を受けたコンテナを詳細に調査するよう促されます。このコンテナには重大な脆弱性が存在し、脆弱性アプリで検出・可視化されています。影響を受けたコンテナの調査により、セキュリティポスチャ管理アプリで複数の設定ミスも判明し、SREは内部セキュリティアナリストと連携し、セキュリティ調査アプリを用いた詳細な調査を開始します。

Site Reliability Engineer Defender scenario diagram

防御の第一層:ランタイム脆弱性分析によるCVE-2025-3248の検出

当社が導入したLangflowフレームワークのバージョンには、重大な脆弱性CVE-2025-3248が含まれており、Dynatraceのランタイム脆弱性分析により下記のように即時検出されました。

Third Party Vulnerabilities dashboard in Dynatrace screenshot

エージェント型AIフレームワークはPythonを基盤とする場合が多く、Dynatraceが新たに導入したPythonランタイム脆弱性の検出機能により、攻撃者にとっての潜在的な侵入経路に関する情報が即座に提供されます。脆弱性アプリで推奨される修正を適用することで、攻撃者によるシステムの悪用を防ぐことが可能です。

防御の第二層:セキュリティポスチャ管理(SPM)による設定ミスの特定

複雑なシステムにおける特定の構成は、攻撃者がシステムに侵入し目的を達成するための行動を可能にします。

本シナリオでは、攻撃者はリモートコマンド実行を可能にする一般的な戦術であるリバースシェルを利用しています。当社のKubernetesクラスターの現行構成では、SPMアプリに表示されているネットワークポリシーが欠落しています。

SPM Network policy failed notification

リバースシェルの展開という戦術に対処するには、HTTP/S ポートを除くすべてのアウトバウンド接続を制限するネットワークポリシーを実装することが効果的な対策となります。これにより、AI エージェントに必要な Web アクセスは許可されたままになります。

Kubernetesクラスター全体にネットワークポリシーを適用することは、Center for Internet Security(CIS)などのベンチマークで示されているセキュリティ上のベストプラクティスです。Dynatrace Security Posture Managementアプリケーションは、このような設定ミスを特定し防止できます。本シナリオでは、下記に示すようにlangflowネームスペースにネットワークポリシーを適用し、攻撃者がリバースシェル用にランダムポートを使用するのを防止します。

all Namespaces have Network Policies defined check

本シナリオのネットワークポリシーは、攻撃者が制限を回避する可能性があるため高度な攻撃手法を完全に防ぐものではありませんが、攻撃成功の複雑さと難易度を高めます。これらのSPMルールを採用することで、ベストプラクティスを適用し攻撃対象領域を効果的に縮小できます。デプロイ構成を調整しコンプライアンス基準に整合させることで、組織は侵害成功リスクを大幅に低減できます。 適切なコンプライアンス対策は、攻撃が成功した場合の被害範囲をさらに縮小します。例えば、侵害されたコンテナからの攻撃者の脱出を防止します。

下記のスクリーンショットでご覧いただけるように、ネットワークポリシーが設定されている場合、攻撃者はリバースシェル接続を確立できません。「Exploit failed with status 200」というメッセージが表示された図をご参照ください。これにより、攻撃のトレースはログファイル内でより目立ち、ノイズが多くなり、アナリストが結論を導きやすくなります。

Failed Reverse Shell

防御の第三層:Security Investigator によるエクスプロイトのトレース

ワークフロー自動化による通知を受けたアナリストは、Security Investigator でクエリを実行し、監視対象の Kubernetes クラスターにおける例外を確認します。その結果、以下に示すような複数の出力が得られます。

Security Investigator Exception

ログエントリ内の例外原因をトレースした結果、アナリストは攻撃者が実行したコマンドとその出力を示す以下の不審なログ行を発見しました。

Log content

これに基づき、アナリストはこの活動をさらに調査することを決定し、以下に示すように複数の攻撃者の活動を発見しました。

Security Investigator Suspicious Activity

影響を受けたコンテナのログエントリから関連する内容を抽出すると、攻撃者が実行したさまざまな手順(シェルコマンドの実行やリバースシェルのデプロイなど)が明らかになり、システムへのさらなる侵入や AI エージェントの操作が確認されました。

結論

CVE-2025-3248の悪用事例は、リモートコード実行やリバースシェルといった従来の攻撃手法が、エージェント型AIシステムの侵害に再利用される可能性を示しています。こうしたフレームワークが企業ワークフローに深く組み込まれるにつれ、攻撃対象領域は拡大し続け、リスクも高まるでしょう。

エージェント型AIのセキュリティ確保は、単に脆弱性を修正するだけでは不十分です。攻撃者がどのように適応し進化するかを予測することが重要です。Dynatraceの多層的アプローチは、ランタイム脆弱性分析、セキュリティ態勢管理、詳細なログ調査を組み合わせることで、こうした動的な環境を防御するための強固な基盤を提供します。