cURL の深刻な脆弱性 CVE-2023-38545 が FIX:バージョン 8.4.0 への移行を急いでほしい

Critical SOCKS5 Vulnerability in cURL Puts Enterprise Systems at Risk

2023/10/11 SecurityWeek — 10月10日に、データ転送プロジェクト cURL のメンテナたちは、エンタープライズで使用される大量の OS/アプリ/デバイスを、ハッカーからの攻撃にさらす可能性のある、深刻なメモリ破壊の脆弱性に対するパッチを配布した。このハイリスクな脆弱性は、cURL の SOCKS5 プロキシ・ハンドシェイク・プロセスに直接的な影響をもたらし、一部の非標準的なコンフィグレーションでは、リモートからの悪用を許す可能性があるという。この脆弱性 CVE-2023-38545 は、デバイスとサーバの間でデータ交換を処理する、libcurl ライブラリに存在する。


cURL アドバイザリ ーーー curl が、ホスト名を SOCKS5 プロキシに渡すように要求され、curl 自身がアドレス解決を行う代わりに、SOCKS5 プロキシがアドレス解決を行う場合において、ホスト名の最大長は 255 Byte である。そして、255 Byte よりも長いホスト名が検出された場合には、curl はローカル名解決に切り替え、代わりに解決されたアドレスのみをプロキシに渡す。

しかしバグの存在により、”ホストに名前を解決させる” ことを意味するローカル変数が、低速な SOCKS5 ハンドシェイク中に間違った値を取得してしまう。その結果として、解決されたアドレスだけをターゲット・バッファにコピーする代わりに、規定よりも長いホスト名をターゲット・バッファにコピーするという可能性が生じる ーーー cURL アドバイザリ

スウェーデンのオープンソース開発者であり、cURL のメンテナである Daniel Stenberg は、2020年2月に cURL における SOCKS5 サポートをコーディングした際に、このバグが混入したと説明している。

Stenberg は、「SOCKS5 プロキシ (proxy-resolver-mode) 経由で、libcurl を用いてクライアントにアクセスする HTTPS サーバーを、攻撃者は制御できる。それにより、HTTP 30x レスポンスを介して、アプリケーションに細工されたリダイレクトを返すことができる。特定の状況では、ヒープバッファー・オーバーフローが引き起こされる」と警告している。

この問題は、これまでに libcurl で発見されたなかで、最悪のセキュリティ問題である。この脆弱性は、Jay Satiro から HackerOne プラットフォームを介して報告され、$4,600 のバグバウンティが支払われた。

影響を受けるバージョンは、libcurl バージョン 7.69.0〜8.3.0 とされている。 同プロジェクトによると、この問題は cURL 8.4.0 で修正されたという。

cURL は、URL 構文でデータを転送するためのライブラリ (libcurl) と、コマンドラインツール (curl) を提供するものであり、SSL/TLS/HTTP/FTP/SMTP などの、各種のネットワーク・プロトコルをサポートしている。

今週の初めに cURL は、プレパッチ・アドバイザリをリリースし、curl と libcurl を使用している全てのシステムにおいて、インベントリとスキャンを緊急に行い、cURL 8.4.0 パッチ適用の準備をするよう促していた。

curl のメンテナたちによると、この脆弱性は libcurl に依存している全てのプロジェクトに影響を与える可能性があるが、一部のソフトウェアにおいては、悪用を許さない方法で libcurl を使用している可能性があるという。彼らは、「共有 libcurl ライブラリを更新することで、すべての OS 上で、この問題は修正されるはずだ」と述べている。