重大なLangChainの脆弱性によりAPIキーと機密認証情報が露出

世界で最も広く導入されているAIフレームワークの一つであるLangChainにおける重大なセキュリティ欠陥により、攻撃者が機密の環境変数を抽出し、高度なシリアライゼーションインジェクション脆弱性を通じて悪意のあるコードを実行できる可能性があります。​

セキュリティ研究者のYarden Porat氏は、langchain-coreに存在するCVE-2025-68664を発見しました。この脆弱性は、フレームワークが内部のシリアライゼーションマーカーをどのように扱うかを悪用するもので、Cyata Aiにより報告されています。

この欠陥はCVSSスコア9.3を受け、重大(クリティカル)な深刻度であることを示しています。​

LangChainは、‘lc’マーカーを含む辞書がLangChainオブジェクトを表すという、特別な内部シリアライゼーション形式を使用しています。

根本的な問題は、予約された‘lc’キーを含むユーザー制御の辞書を、 dumps() および dumpd() 関数が適切にエスケープできていなかったことに起因します。​

攻撃者が‘lc’キーを持つ辞書を、 additional_kwargs や response_metadata などのユーザー制御フィールドに注入すると、これらの構造は単なるユーザーデータではなく、デシリアライズ時に正当なLangChainオブジェクトとして扱われます。

この誤認により、攻撃者は信頼された名前空間内で任意のオブジェクトをインスタンス化でき、危険な副作用を引き起こす可能性があります。​

この脆弱性は、イベントストリーミング、ロギング、メッセージ履歴管理、キャッシュなど、複数の一般的なLangChainワークフローに影響します。

研究者は、悪用が起こり得る12の異なる脆弱なフローを特定しました。​

最も深刻な結果としては、環境変数からのシークレットの抽出(特に secrets_from_env=True の場合。これはパッチ適用までデフォルト設定でした)や、ネットワーク呼び出し、ファイル操作、その他のコンストラクタ副作用を引き起こすオブジェクトのインスタンス化が挙げられます。

特定の条件下では、攻撃者が任意コード実行を達成できる可能性もあります。​

この脆弱性が特に危険であることが判明したのは、プロンプトインジェクション攻撃によって、後にシリアライズおよびデシリアライズされるフィールド内のLLM出力に影響を与え、間接的な悪用経路が生まれ得るためです。

攻撃者は、構築時に攻撃者が制御するエンドポイントへGETリクエストを行う langchain_aws の ChatBedrockConverse のようなクラスをインスタンス化することで、認証情報を流出させる可能性があります。​

LangChainは、エスケープの不具合を修正し、重要なセキュリティ強化策を導入するパッチを、バージョン1.2.5および0.3.81でリリースしました。

更新により、許可リストを強制するために allowed_objects=”core” を設定すること、 secrets_from_env をTrueからFalseへ変更すること、デフォルトでJinja2テンプレートをブロックすることなど、デフォルト動作が変更されました。​

LangChainチームはこの発見に対し4,000ドルの報奨金を授与しました。これはプロジェクト史上最高額です。本番環境でLangChainを運用している組織は、この重大な脆弱性を軽減するため、直ちに更新すべきです。​

翻訳元: https://cyberpress.org/critical-langchain-vulnerability-exposes-api-keys/

ソース: cyberpress.org