curl 8.23.0、HTTP/2アップロード時のRCE 脆弱性を修正―CVE-2026-92392、特定条件でクライアント側の任意コード実行も

セキュリティニュース

投稿日時: 更新日時:

curl 8.23.0、HTTP/2アップロード時のRCE 脆弱性を修正―CVE-2026-92392、特定条件でクライアント側の任意コード実行も

curlプロジェクトは2026年10月14日、HTTP/2によるファイルアップロード時に発生するUse-After-Free(解放済みメモリーの再利用)の脆弱性「CVE-2026-92392」を修正したcurl 8.23.0を公開しました。悪意あるサーバーからの応答によってcurlやlibcurlを使用するクライアント側でメモリー破損が起こり、条件がそろえば任意コード実行(RCE)につながります。開発元はRCEの実証を認める一方、成立条件が厳しく、実際にはプログラムの異常終了となる可能性が高いと説明しています。

curlの脆弱性「CVE-2026-92392」のサマリー

  • 公表・修正日:2026年10月14日。curl 8.23.0をリリース
  • 脆弱性:CVE-2026-92392/CWE-416(Use After Free)
  • 影響範囲:原則としてcurl/libcurl 8.12.0~8.22.0。特定の保守ブランチには修正済み例外あり
  • 発生条件:HTTP/2接続で悪意あるサーバーに対してアップロードを実施し、特定のストリームリセット応答を受け取ること
  • 想定される影響:クライアントプロセスのクラッシュ、厳密な条件下での任意コード実行
  • 修正方法:8.23.0への更新、開発元の修正パッチ適用。更新できない場合はHTTP/2の利用停止
  • 深刻度:curlプロジェクトは「High」と評価。Red HatのCVSS v3.1評価は8.1
  • 発見者:AnthropicのLuna Tong氏。curl開発元はClaudeを使用した報告として謝辞を掲載
項目 内容
対象ソフトウェア curlコマンドラインツール、libcurlを使用するアプリケーション
脆弱性識別子 CVE-2026-92392
影響バージョン 原則8.12.0~8.22.0
修正版 8.23.0(保守ブランチは別途修正版あり)
攻撃に必要な状況 対象クライアントがHTTP/2で攻撃者側のサーバーへアップロードすること
開発元の評価 High。RCEは実証済みだが、攻撃成功には多数の環境条件が必要

悪意あるHTTP/2サーバーの応答で、クライアント側のメモリーが破損

問題は、curlがアップロード中にHTTP/2のRST_STREAMフレームを受信した際の転送管理にあります。特に、サーバーからHTTP_1_1_REQUIREDまたはREFUSED_STREAMを理由とするリセットを受けた場合、転送に使っていた内部オブジェクトへの参照が残ることがあります。

その後、処理済みの転送オブジェクトを解放しても参照だけが残存し、後続の処理で解放済みメモリーを使用してしまいます。これはUse-After-Freeに該当します。curlの開発者Daniel Stenberg氏は、既に解放した転送オブジェクトの領域にサーバー側から届いたデータが配置され、プログラムの実行先に関わる情報が書き換えられる状況を説明しています。

攻撃を受ける側はHTTP/2で接続してファイルを送信するcurl/libcurlの利用者です。一般的な「Webサーバーが外部からリクエストを受けるだけで侵害される」という種類の脆弱性ではありません。開発元は、curlのコマンドラインツールにも、libcurlを組み込んだソフトウェアにも影響するとしています。

RCEは実証済み。ただし、多数の条件が必要

curlの公式アドバイザリは、このメモリー破損を任意コード実行に発展させられることが実証されたと明記しています。ただし、実証した手法は、curlの正確なバージョンやCPUアーキテクチャ、メモリーアロケーターとヒープ配置、TLS・HTTP/2ライブラリの動作、並列転送のタイミングなどに強く依存します。

さらに、開発者の解説では、攻撃対象が悪意あるサーバーへアップロードすることや有効なサーバー証明書が必要で、アップロードサイズにも一定の条件があると説明しています。こうした前提が合わなければ任意コード実行の成功率は低く、異常終了を引き起こす結果になりやすいという評価です。

したがって、RCEが技術的に実証された事実と、実環境で広く悪用されている事実は区別する必要があります。10月18日時点で参照したcurl公式アドバイザリと開発者の解説には、実際の侵害被害を確定する発表は記載されていません。

影響する8.12.0~8.22.0と、修正済みの保守ブランチ

curl公式アドバイザリは、8.12.0から8.22.0までを影響範囲としています。ただし、同じアドバイザリでは保守ブランチの一部について、次のバージョン以降を影響対象外と明記しています。

バージョン系列 公式アドバイザリでの扱い
8.12.0~8.22.0 原則として影響あり
8.14.x 8.14.3以降は修正済み
8.16.x 8.16.2以降は修正済み
8.20.x 8.20.2以降は修正済み
8.23.0以降 修正済み
8.12.0より前 本脆弱性の影響対象外

OSディストリビューションのcurlパッケージや商用製品に組み込まれたlibcurlでは、バージョン文字列を変えずに修正だけを取り込む「バックポート」が行われる場合があります。運用担当者はバージョン番号に加え、提供元のセキュリティ告知・パッケージ更新履歴を確認してください。

更新できない場合はHTTP/2を停止。アプリケーション内のlibcurlも点検

最優先の対策は、curl 8.23.0または修正を取り込んだ提供元パッケージへの更新です。業務上すぐに更新できない場合、curlプロジェクトはHTTP/2を使用しないことを暫定策として挙げています。

コマンドラインのcurlでは--http1.1オプションによるHTTP/1.1への切り替えが可能です。libcurlを利用するアプリケーションについて、Red HatはCURLOPT_HTTP_VERSIONにCURL_HTTP_VERSION_1_1を指定する方法を案内しています。ただし、gRPCなどHTTP/2に依存する処理では、この回避策が利用できない場合があります。

企業の開発・運用部門では、特に以下の点を確認できます。

  1. CI/CD、ファイル連携、外部API、データ送信バッチなどでHTTP/2アップロードを行うジョブを特定する。
  2. サーバー・コンテナー・開発端末のcurlと、製品やアプリケーションに組み込まれたlibcurlをそれぞれ棚卸しする。curl -Vで確認できるのは実行したcurlの情報であり、別プロセスに組み込まれたlibcurlのバージョンを網羅できるわけではない。
  3. 利用製品の保守元が提供する更新パッケージを確認し、影響の有無と適用後の動作を検証する。
  4. 一時的にHTTP/2を停止する場合、対象システムの通信仕様とアップロード機能への影響を確認する。

こうした依存ライブラリの更新判断は、セキュリティ対策Labの脆弱性管理の運用プロセスでも整理しています。

curl 8.23.0では24件を修正、6月の18件を上回る

curl開発元によると、8.23.0では今回のCVEを含む24件のセキュリティ上の問題を修正しました。このうちCVE-2026-92392がHighで、残り23件はLowと評価されています。6月に公開された8.21.0では18件が修正されており、今回の修正件数はその記録を上回りました。

セキュリティ対策Labでは、以前の「curl 8.21.0で18件を修正、25年前から存在した脆弱性も」でも更新状況を報じています。

また、8.23.0ではSMBおよびSMBSプロトコルへの対応が削除されています。古いファイル連携でこれらのプロトコルを利用している場合は、セキュリティ修正の適用だけでなく、アップグレード前に通信方式の互換性を確認する必要があります。

今回のCVEはAnthropicのLuna Tong氏が報告したもので、curl公式アドバイザリは「Luna with Claude, Anthropic」と記載しています。開発者はAnthropicのOSS Scannerを利用した発見と説明しており、AIを使った脆弱性発見と人手による修正の事例でもあります。

出典