本文へ移動
English version →
重大 9.1 急ぎ度: 早めに

Google ADK TypeScriptに任意ファイル読み書きの欠陥、0.6.0で修正

Google ADK TypeScript(@google/adk)の0.4.0以上0.6.0未満で、FileArtifactServiceを有効にしてADK APIサーバーを公開していると、認証なしで保存領域の外のファイルを読み書きされるおそれがあります。既定のInMemoryArtifactServiceを使っている環境は影響を受けません。該当する場合は0.6.0以降へ更新し、APIサーバーの公開範囲も見直してください。

CVE-2026-105772 公開 生成 AI で作成
画像は生成 AI で作成したイメージです

急ぎ度: 早めに

CVSS v4は9.1で認証も不要ですが、影響を受けるのは既定ではないFileArtifactServiceを有効にして外部公開している構成に限られ、実際の悪用の確認(KEV)は公表されていません。

関係があるか

Node.js系のAIエージェント開発に@google/adkを使い、アーティファクトの保存にFileArtifactServiceを選び、そのADK APIサーバーをネットワークに公開している組織が対象です。既定のInMemoryArtifactServiceだけを使っている場合は影響を受けません。

製品影響を受ける版直った版
ADK TypeScript(@google/adk) 0.4.0以上0.6.0未満(FileArtifactServiceを有効にし、ADK APIサーバーを公開している場合) 0.6.0

確かめ方

  1. 1プロジェクトの package.json と、ロックファイル(package-lock.json、yarn.lock、pnpm-lock.yaml)で、@google/adkの版が0.4.0以上0.6.0未満か確認します。
  2. 2ソースコードや設定で、アーティファクトのサービスにFileArtifactServiceを指定していないか確認します。指定がなければ既定のInMemoryArtifactServiceが使われます。
  3. 3ADK APIサーバーがインターネットや社外のネットワークから到達できる状態になっていないか、ファイアウォールやリバースプロキシの設定で確認します。
  4. 4エージェントのツールがsaveArtifactを呼び出していないか確認します。呼び出している場合は書き込みの影響も考える必要があります。

何が起きたか

Google ADK TypeScriptは、AIエージェントをTypeScriptで作るためのライブラリです。エージェントが作る成果物(アーティファクト)をファイルとして保存する機能FileArtifactServiceに、保存先として決められたフォルダの外へ出られてしまう欠陥(パストラバーサル、CWE-22)が見つかりました。

保存先のフォルダは、利用者を表すuserIdと会話を表すsessionIdをもとに決まります。この2つの値に、フォルダを一つ上へさかのぼる指定(../ や、それをパーセントエンコードした形)を含められると、本来の保存領域の外を指せてしまいます。その結果、認証なしの外部の者が、保存領域の構成に合致するファイルを読んだり、エージェントのツールがsaveArtifactを呼ぶ場合には保存領域の外へファイルを書いたりできる可能性があります。

影響するのは、ADK APIサーバーを公開し、かつ既定ではないFileArtifactServiceを有効にした場合です。既定のInMemoryArtifactServiceを使うアプリケーションは影響を受けません。0.6.0で修正されています。

攻撃の流れ

  1. 1

    公開サーバー到達

    外部の者が、公開されているADK APIサーバーにアクセスします。

  2. 2

    不正な識別子

    userIdまたはsessionIdに、上の階層へさかのぼる指定を含めて送ります。

  3. 3

    保存先の逸脱

    FileArtifactServiceが値を十分に検査せず、保存領域の外のパスを組み立てます。

  4. 4

    読み書きの発生

    保存領域の構成に合うファイルが読まれ、saveArtifactが使われる場合は書き込みも起こり得ます。

公開されている情報をもとにした流れの例です。

どう悪用されるか

悪用に認証は要らず、利用者の操作も不要で、ネットワーク越しに実行できます。前提は、FileArtifactServiceが有効で、ADK APIサーバーに外部から到達できることです。CVSSのベクトルでは攻撃の前提条件(AT:P)が付いており、この特定の構成が必要なことを反映しています。

被害として、機密性と完全性への影響が大きいと評価されています。読み取りは保存領域の構成に合致するファイルが対象で、書き込みはエージェントのツールがsaveArtifactを呼ぶ場合に限られます。可用性への影響は評価されていません。実際の攻撃での悪用が確認されたかどうかは公表されていません。

今すぐやること

  1. 1

    利用状況の棚卸し

    @google/adkを使うプロジェクトを洗い出し、版とFileArtifactServiceの利用有無を確認します。InMemoryArtifactServiceだけなら影響はありません。

    npm ls @google/adk
  2. 2

    0.6.0以降へ更新

    該当するプロジェクトは@google/adkを0.6.0以降に上げ、ロックファイルを更新して再ビルド、再デプロイします。更新後に動作確認も行ってください。

  3. 3

    APIサーバーの公開範囲を見直す

    ADK APIサーバーが社外から到達できる必要があるかを確認し、不要なら社内ネットワークやVPNに限定します。公開が必要な場合は前段で認証を挟むことも検討します。

  4. 4

    保存領域とログの確認

    更新までの間に不審なアクセスがなかったか、userIdやsessionIdに不自然な文字列を含むリクエストの有無をアクセスログで確認します。保存領域の外に見覚えのないファイルがないかも点検します。

すぐ更新できないとき

すぐに更新できない場合は、FileArtifactServiceの使用をやめて既定のInMemoryArtifactServiceに切り替えると、この欠陥の影響を受けなくなります。ただし保存方式が変わるため、成果物を永続化したい用途では動作への影響を事前に確認してください。あわせて、ADK APIサーバーへの外部からのアクセスを遮断または制限することも有効です。公式の回避策の詳細は、ベンダーの告知で確認してください。

背景

AIエージェントのフレームワークは、モデルへの指示、ツールの呼び出し、会話の状態や生成物の保存を一手に担います。生成物をファイルとして保存する機能は便利ですが、利用者や会話を表すIDをそのままフォルダ名やファイル名に使うと、外部から来た値がファイルシステム上の位置を左右することになります。また、AIエージェント向けのAPIサーバーは、開発中の試験用のまま外部に公開されてしまうことも少なくありません。

パストラバーサルは、ファイル名やフォルダ名に外部の入力を使うソフトウェアで古くから繰り返し問題になってきた種類の弱点です。../ のような指定だけでなく、パーセントエンコードした形なども使われるため、入力の検査と、組み立てたパスが保存領域の内側に収まっているかの確認が、対策の基本になります。

よくある質問

Q.既定の設定のまま使っていれば安全ですか。
A.既定のInMemoryArtifactServiceを使っているアプリケーションは、この欠陥の影響を受けないと公表されています。ただし、コードや設定でFileArtifactServiceを指定していないか、念のため確認してください。
Q.ADK APIサーバーを社内だけで使っている場合も更新は必要ですか。
A.外部から直接到達できなければ、リスクは下がります。ただし、社内の別の端末や侵入された環境から到達できる可能性は残ります。FileArtifactServiceを使っているなら、計画的に0.6.0以降へ更新するのが確実です。
Q.すでに悪用されていますか。
A.実際の攻撃での悪用が確認されたという情報は、現時点で公表されていません。悪用の見込みを示す指標(EPSS)も、ここでは示されていません。最新の状況はベンダーの告知で確認してください。

まだ分かっていないこと

  • 実際の攻撃で悪用されたかどうかは公表されていません。
  • 読み取れるファイルの範囲の詳細(保存領域の構成に合致するファイルとは具体的にどの範囲か)は公表されていません。

この記事は、取得元の公開情報をもとに生成 AI で作成しています。誤りを含むことがあります。対応を決める前に、下の原文と参照先を確認してください。

影響パッケージ

種類パッケージ影響を受ける版直った版
Google ADK TypeScript (@google/adk)
0.4.0 以上 0.6.0 未満
0.6.0
原文の説明 取得元が公開している説明をそのまま載せています (多くは英語)。

Path Traversal (CWE-22) in FileArtifactService in Google ADK TypeScript (@google/adk) versions 0.4.0 before 0.6.0 allows a remote unauthenticated attacker to read files matching the artifact directory layout or write files (when an agent tool invokes saveArtifact) outside the intended artifact storage root via crafted relative or percent-encoded path traversal sequences (such as ../ or ..%2F) in the userId or sessionId parameters when the ADK API server is exposed with the non-default FileArtifactService enabled. Applications using the default InMemoryArtifactService are unaffected. Upgrade to @google/adk version 0.6.0 or later.

出典: GitHub Security Advisories (Global) NVD GitHub Advisory

参照URL

当サイトでは、アクセス解析と広告の効果測定のために Cookie を使います。株式会社Game のサイト共通の設定です。 詳しく