LangGraph Deserialization Flaw Enables Execution of Malicious Python Code
2025/11/10 gbhackers — LangGraph のチェックポイント・シリアライズ・ライブラリに、深刻なリモート・コード実行の脆弱性が発見された。この脆弱性は、すべてのチェックポイント操作で使用されるデフォルトのシリアライズ・プロトコルである JsonPlusSerializer コンポーネントに存在し、バージョン 3.0 未満に影響を及ぼすという。この脆弱性 CVE-2025-64439 を悪用する攻撃者は、悪意のあるペイロードのデシリアライズ中に任意の Python コードを実行できる。

脆弱性の仕組み
この脆弱性は、JsonPlusSerializer の安全でないフォールバック・メカニズムに起因する。このライブラリはシリアライズに msgpack を使用するが、不正な Unicode サロゲート値によりシリアライズが失敗すると、自動的に “json” モードにフォールバックする。
このモードでのデシリアライズ中にシステムがサポートするのは、ロード時にカスタム・オブジェクトを再構築するためのコンストラクタのフォーマットである。したがって攻撃者は、デシリアライズ中にシステム・コマンドまたは任意の関数を実行する悪意のペイロードを作成することで、この機能を悪用し得る。
この問題により、信頼できないデータやユーザー提供データのチェックポイントへの保存が許可されている、バージョン 3.0 未満の langgraph-checkpoint ユーザーに影響が生じる。
アプリケーションが信頼できるデータのみを処理する場合や、チェックポイントへの書き込みを制限している場合には、実質的なリスクは大幅に軽減される。ただし、外部入力を受け入れるシステムでは、早急な対応とパッチ適用が必要となる。
すでに LangGraph は、チェックポイント・ライブラリのバージョン 3.0.0 をリリースし、この問題に対処している。
| Attribute | Details |
|---|---|
| CVE ID | CVE-2025-64439 |
| Vulnerability Type | Remote Code Execution (RCE) |
| Component | LangGraph JsonPlusSerializer |
| Affected Versions | langgraph-checkpoint < 3.0 |
| Patched Versions | langgraph-checkpoint >= 3.0 |
| Severity | High (7.5 CVSS v4) |
| Attack Vector | Network |
| Privileges Required | Low |
この修正により、コンストラクタのデシリアライズに許可リストが実装され、許可されるコード・パスが明示的に承認されたモジュールとクラスの組み合わせに制限された。
さらに、ペイロードを “json” 形式で保存することは非推奨となり、安全でないフォールバックは完全に削除された。このアップデートは LangGraph 0.3 と完全に互換性があり、実装におけるコード変更は不要である。
ユーザー組織にとって必要なことは、langgraph-checkpoint バージョン 3.0.0 への速やかなアップグレードである。また、LangGraph API を導入しているユーザーは、バージョン 0.5 以降にアップデートすべきである。それにより、パッチ適用済みのチェックポイント・ライブラリが自動的に取り込まれる。
アップデート・プロセスは簡単であり、インポートの変更やアプリケーション・コードの変更は不要である。
深刻度が高く、悪用されやすいことを踏まえると、セキュリティ・アップデート・スケジュールにおいて、このパッチを最優先すべきだ。
この問題の原因は、LangGraph のチェックポイント・ライブラリに含まれる JsonPlusSerializer のフォールバック処理にあります。本来は msgpack で安全にデータを扱う設計でしたが、特殊な Unicode データなどで失敗すると、危険な “json” モードに切り替わってしまい、任意コードが実行される状態になっていました。信頼できないデータを扱う場合、このようなフォールバック経路が想定外の脆弱性になります。開発上の想定と実際の動作に差が出たことで、リモートからのコード実行が可能になったと、この記事は指摘しています。ご利用のチームは、ご注意ください。よろしければ、Wikipedia の LangChain を、ご参照ください。
You must be logged in to post a comment.