curl は HTTP/2 アップロード中、サーバからの RST_STREAM(理由 HTTP_1_1_REQUIRED または REFUSED_STREAM)を誤処理し、struct Curl_easy の use-after-free に至る。CWE-416、深刻度 High。libcurl 組み込みと curl コマンドラインの双方が対象。悪意あるサーバがオブジェクト配置、アーキテクチャ、libc アロケータ、nghttp2 と TLS 1.3 の挙動、並行転送のタイミングなどを揃えた場合、リモートコード実行へ転化しうると実証済み。
- 影響: curl 8.12.0 から 8.22.0。8.12.0 未満と 8.23.0 以降は対象外。8.20.x は 8.20.2 以降、8.16.x は 8.16.2 以降、8.14.x は 8.14.3 以降も対象外。
- 対処: 8.23.0 へ上げる。ローカル版へパッチを当てるか、HTTP/2 を使わない回避もある。パッチは
multi_doneのクリーンアップ順を調整する。