LangChain Community SSRF Bypass Vulnerability Exposes Internal Services to Unauthorized Access
2026/02/17 gbhackers — LangChain 開発チームが公開したのは、@langchain/community パッケージに存在する Server-Side Request Forgery (SSRF) の脆弱性に対処する、重大なセキュリティ・アップデートである。この脆弱性 CVE-2026-26019 は、Web クローリング用のユーティリティである RecursiveUrlLoader クラス内に存在する。この脆弱性を悪用する攻撃者は、ドメイン制限を回避し、アプリケーション内部のネットワーク・リソースや機密クラウド・メタデータへのアクセスを可能にする。

SSRF の脆弱性
この問題の核心は、クローリング中の RecursiveUrlLoader が URL を検証する方法にある。
このユーティリティには、preventOutside オプション (デフォルトで有効) があり、開始 URL と同一の Web サイトだけにクローリングを制限する設計となっている。
しかし、その実装では URL の厳密なオリジン検証ではなく、String.startsWith() による単純な文字列の比較に依存するものだった。この方式による深刻な抜け穴を悪用する攻撃者は、ターゲット・ドメインと接頭辞が一致する悪意のドメインを構築できる。
たとえば、クローラーが “https://example.com” に設定されている場合に、攻撃者による “https://example.com.attacker.com” への誘導が可能になる。文字列の比較において、接頭辞が一致するため、検証を回避できる。さらに、旧バージョンではプライベート IP や予約 IP に対する検証が存在しなかった。
したがって、攻撃者がクロール対象ページの内容を制御できる場合には、内部ネットワークやクラウド・メタデータ・サービスへのリンクを注入できる状態にあった。つまり、このクローラーは、AWS/Google Cloud/Azure などのクラウド・メタデータ・サービスを含む、内部リソースを無条件に取得してしまう。
メタデータ・エンドポイントへのアクセスは、IAM 認証情報やセッション・トークン窃取の常套手段であり、クラウド基盤の完全侵害に繋がる可能性がある。また、このクローラーは、内部ネットワーク・スキャンやローカル・ホスト上のサービスへのアクセスにも利用可能であった。
| CVE ID | CVSS Score | Description |
|---|---|---|
| CVE-2026-26019 | 6.1 (Moderate) | An SSRF bypass vulnerability in @langchain/community allows attackers to access internal services and cloud metadata via insufficient URL origin validation in the RecursiveUrlLoader class. |
影響が及ぶパッケージ
| Package | Affected Versions | Patched Version |
|---|---|---|
| @langchain/community | <= 1.1.13 | 1.1.14 |
すでに LangChain は、バージョン 1.1.14 をリリースし、2 つの重要な問題を改善している。
- 第一に、文字列比較を廃止し、URL API を用いる厳格なオリジン検証へ変更した。それにより、scheme/hostname/port の完全一致が確認される。
- 第二に、すべてのアウトバウンド・リクエスト前に実行される、SSRF 検証モジュールを導入した。
このモジュールは、プライベート IP 範囲/ループバック・アドレス/169.254.169.254 などの既知クラウド・メタデータ・エンドポイントへの接続を明示的に遮断する。@langchain/community を使用する開発者が行うべきは、バージョン 1.1.14 への速やかな更新である。
迅速な更新が困難な場合には、信頼できないユーザー生成接続に対して、RecursiveUrlLoader を実行しないようにすべきだ。また、内部サービスやクラウド・メタデータ API へのアクセスが制限された、隔離ネットワーク環境でアプリケーションを運用することが推奨される。
脆弱性 CVE-2026-26019 (CVSS 6.1) は、@langchain/community の RecursiveUrlLoader における URL 検証の不備に起因します。原因は、オリジン確認において、厳密な URL 解析ではなく String.startsWith() による文字列比較へ依存していた点にあります。そのため、接頭辞が一致するドメインで制限を回避し、さらに旧バージョンではプライベート IP やクラウド・メタデータ検証も不足していました。結果として、内部ネットワークや AWS/Google Cloud/Azure のメタデータ取得が可能となる状態でした。バージョン 1.1.14 では厳格なオリジン検証と SSRF 防御が追加されています。よろしければ、LangChain での検索結果も、ご参照ください。
You must be logged in to post a comment.