概要
LangChain の古いランタイムコードパスが、実行時の入力、出力、その他のアプリケーション制御ペイロードを広範なオブジェクト許可リストを使って load() でデシリアライズする場合があります。これらのパスが allowed_objects="all" として load() を呼び出す可能性があり、任意の Python オブジェクトをデシリアライズするわけではないものの、LangChain シリアライズ対象のすべてのクラスが再構築できてしまいます。
攻撃者が細工した LangChain シリアライズ形式のコンストラクタ辞書を供給することで、信頼されたランタイムパスが信頼できないコンストラクタ引数でクラスをインスタンス化させられる可能性があります。
LangChain は AI / LLM アプリケーション構築のためのフレームワークとして非常に広く使われており、本脆弱性の影響を受ける環境が多いことが懸念されます。
CVSSベクトル
| 要素 | 値 |
|---|---|
| スコア | 8.2(HIGH) |
| CWE | CWE-502(信頼できないデータのデシリアライゼーション) |
| 攻撃元区分(AV) | ネットワーク(N) |
| 攻撃条件の複雑さ(AC) | 低(L) |
影響を受けるソフトウェア
| パッケージ | バージョン |
|---|---|
| langchain | < 0.3.85 |
| langchain-core | < 1.3.3 |
修正バージョンと回避策
修正バージョン:
- langchain: 0.3.85 以降
- langchain-core: 1.3.3 以降
推奨対応手順:
- 現在のバージョンを確認する(
pip show langchain langchain-core) - 修正バージョンへアップデートする(
pip install langchain>=0.3.85 langchain-core>=1.3.3) - アプリケーションが外部からの入力を LangChain のシリアライズ形式で受け取るフローがある場合は特に優先的に対応する
関連リンク
データソース: NVD (NIST), GitHub Advisory Database
AI解説は Claude API により自動生成されています。正確性については原文をご確認ください。
