本文へ移動
English version →
高 9.2 急ぎ度: 早めに

mem0のDatabricks連携にSQLインジェクション、1.0.8で修正

AIエージェント向けの記憶層ライブラリmem0に、Databricksをベクトルストアとして使う場合のSQLインジェクションの弱点が見つかりました。0.1.117以上1.0.8未満が対象で、1.0.8で修正されています。Databricks連携を使っている組織は、版を確認して1.0.8以降へ更新してください。

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

急ぎ度: 早めに

CVSS v3.1は8.1(高)、v4.0は9.2で、認証不要で外部から到達できる一方、悪用の難易度は高いとされ、KEVへの掲載やEPSSは確認されていないためです。

関係があるか

mem0のPythonパッケージを使い、ベクトルストアにDatabricks(Databricks SQL warehouse)を設定しているアプリケーションやAIエージェント基盤が対象です。ユーザーの発言などの外部入力が記憶として保存される構成では、特に注意が必要です。

製品影響を受ける版直った版
mem0(mem0ai パッケージ)のDatabricksベクトルストア(mem0/vector_stores/databricks.py) >= 0.1.117, < 1.0.8 1.0.8

確かめ方

  1. 1Pythonの環境ごとに、mem0aiのインストール版を確認します。0.1.117以上1.0.8未満であれば対象の版です。
  2. 2mem0の設定で、ベクトルストアのプロバイダにDatabricksを指定しているか確認します。他のベクトルストアのみを使っている場合、この弱点の該当箇所を通らない可能性がありますが、公表されている情報だけでは断定できないため、更新は行ってください。
  3. 3アプリケーションが、利用者のメッセージ、メタデータ、メッセージ名などの外部由来の文字列をmem0に保存しているか確認します。
  4. 4依存関係の固定ファイル(requirements.txt、poetry.lock、uv.lockなど)やコンテナイメージにも、古い版が残っていないか確認します。

何が起きたか

mem0は、AIエージェントやチャットボットに過去のやり取りを覚えさせるためのライブラリです。このうちDatabricksをデータの保存先に使う部分に、SQLインジェクションの弱点がありました。保存する文章などに細工された文字列が含まれていると、それがデータベースへの命令の一部として解釈され、本来想定されていないSQLが実行されるおそれがあります。

原因は、記憶の保存と更新を行う処理(insert()とupdate())で、受け取った文字列を適切にエスケープせずにSQL文へ組み込んでいたことです。影響を受ける入力として、記憶の本文、メタデータ、メッセージ名が挙げられています。弱点の種類はCWE-89(SQLインジェクション)です。

修正は1.0.8で提供されています。不正なSQLは、mem0に設定されたDatabricks SQL warehouse上で実行されます。そのため、被害の範囲は、そのwarehouseに接続する資格情報が持つ権限に左右されます。

攻撃の流れ

  1. 1

    入力の混入

    攻撃者が、記憶として保存される文章やメタデータ、メッセージ名に細工した文字列を含めます。

  2. 2

    記憶の保存・更新

    アプリケーションがその内容をmem0経由で保存または更新しようとします。

  3. 3

    SQL文への組み込み

    insert()やupdate()が文字列をエスケープせずにSQL文へ埋め込みます。

  4. 4

    不正なSQLの実行

    設定されたDatabricks SQL warehouse上で、意図しないSQLが実行されます。

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

どう悪用されるか

CVSSの評価では、ネットワーク経由で攻撃でき、事前の認証や利用者の操作は要らないとされています。ただし、攻撃の成立には特定の条件が必要とされ、悪用の難易度は高く評価されています。実際には、攻撃者の入力が記憶として保存される経路がアプリケーション側にあるかどうかが、大きな分かれ目になると考えられます。

悪用された場合は、情報の漏えい、データの改ざん、サービス停止のいずれもが高い影響と評価されています。実行されるSQLの範囲は、mem0が使うDatabricksの接続権限に依存します。なお、実際の攻撃での悪用や、攻撃コードの公開については公表されていません。

今すぐやること

  1. 1

    使用中の版を確認する

    開発環境、本番環境、コンテナイメージのそれぞれで、mem0aiの版を確認します。0.1.117以上1.0.8未満なら対象です。

    pip show mem0ai
  2. 2

    1.0.8以降へ更新する

    Databricks連携を使っているシステムから優先して、mem0aiを1.0.8以降に更新します。更新後は、記憶の保存・更新・検索が正常に動くかをテスト環境で確認してから本番へ反映します。

  3. 3

    Databricksの接続権限を見直す

    mem0が使うアカウントやトークンに、記憶用テーブル以外へのアクセスや、不要な書き込み・削除・管理の権限がないか確認し、必要最小限に絞ります。更新前後を問わず、被害の範囲を狭める効果があります。

  4. 4

    不審なデータや操作の痕跡を確認する

    保存された記憶に、SQLの構文を思わせる不自然な文字列が含まれていないか確認します。Databricks側のクエリ履歴や監査ログに、想定外のSQLが残っていないかも見ます。痕跡の有無を調べる具体的な方法は公表されていません。

すぐ更新できないとき

すぐに更新できない場合は、外部の利用者が入力した文字列が、そのままmem0の記憶、メタデータ、メッセージ名に渡らないよう、アプリケーション側で入力を制限することが考えられます。あわせて、Databricksの接続権限を最小限に絞ってください。ただし、これらは一時的な緩和にすぎず、公式に示された回避策ではありません。根本的な対処は1.0.8以降への更新です。

背景

mem0のような記憶層は、AIエージェントが会話の履歴や利用者の好みを保存し、次回以降の応答に使うための仕組みです。保存先にはベクトルストアと呼ばれるデータベースが使われ、社内の問い合わせ対応や業務支援のAIでも、利用者の発言がそのまま蓄積されることがあります。そのため、記憶の内容が外部から影響を受けうる点が、設計上の注意点になります。

SQLインジェクションは、入力された文字列がSQL文の一部として扱われてしまう古くから知られた弱点です。対策の基本は、文字列を直接SQL文へ連結せず、パラメータとして渡すことです。AI関連のライブラリでも、利用者や外部サービスから得た文章をデータベース処理に流す場面が増えており、従来のWebアプリケーションと同じ種類の弱点が、新しい部品の中で再び問題になる例が見られます。

よくある質問

Q.Databricksを使っていなければ影響はありませんか。
A.弱点があるのはDatabricks用のベクトルストアの実装(mem0/vector_stores/databricks.py)です。他のベクトルストアのみを使っている場合、この箇所は通らない可能性があります。ただし、公表されている情報だけでは他の構成への影響の有無を断定できません。念のため更新を計画してください。
Q.すでに悪用されていますか。
A.実際の攻撃での悪用は、現時点で確認されていません。KEV(悪用が確認された脆弱性の一覧)にも掲載されていません。ただし、悪用の確認がないことは、安全であることを意味しません。
Q.CVSSのv3.1とv4.0で点数が違うのはなぜですか。
A.評価方式が異なるためです。v3.1は8.1(高)、v4.0は9.2です。どちらも、ネットワークから攻撃でき、認証や利用者の操作は不要で、機密性・完全性・可用性への影響が高いと評価しています。一方で、攻撃の難易度は高いとされています。
Q.更新後に、過去の被害を調べる必要はありますか。
A.外部入力が記憶として保存される構成で、Databricksの権限が広い場合は、確認することをおすすめします。保存されたデータの内容と、Databricks側のクエリ履歴や監査ログを見てください。

まだ分かっていないこと

  • 実際の攻撃で悪用された事例や、攻撃コードの公開の有無は公表されていません。
  • 脆弱性が混入した経緯や、0.1.117より前の版に問題がなかった理由の詳細は、現時点で明らかになっていません。詳しくはmem0のリリースノートと、GitHubのIssueおよびPull Requestで確認してください。

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

影響パッケージ

種類パッケージ影響を受ける版直った版
mem0ai mem0
0.1.117 以上 1.0.8 未満
1.0.8
原文の説明 取得元が公開している説明をそのまま載せています (多くは英語)。

mem0 0.1.117 before 1.0.8 contains an sql injection vulnerability in mem0/vector_stores/databricks.py that allows attackers to inject SQL by influencing stored memory content. Attackers can supply crafted memory text, metadata, or message names that reach unescaped insert() and update() string interpolation to execute injected SQL on the configured Databricks SQL warehouse.

出典: CVE.org (CVE Program・cvelistV5) NVD GitHub Advisory

参照URL

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