Cato による cURL SOCKS5 ヒープ・バッファ・オーバーフロー (CVE-2023-38545) の分析と対策

SCato’s Analysis and Protection for cURL
SCato’s Analysis and Protection for cURL

要約すると、この脆弱性は当初予想されていたよりも深刻ではないようです。Catoの顧客とインフラは安全です。

先週、cURLのオリジナル作者であり、長年にわたり開発を手動するDaniel Stenbergが、ユビキタスなlibcurl開発ライブラリと、curlコマンドラインユーティリティに存在する重大度の高い脆弱性の「ティーザー」を発表しました。

一週間も待たされた挙句、人道に対する複数の凶悪犯罪、そして宣戦布告がなされ、脆弱性が公表されました

今になって思うと、この最初の発表は、セキュリティとシステム管理者たちに、やや過度ともいえるパニックを引き起こしました。しかし、libcurl とcurl の使用法が世界中でいかに広く普及しているかを考え、(Catoでは同じ様に広く使用されています。詳しくは後述します)、libcurlのウェブサイトから引用します – インターネットに接続されている地球上のすべての人間は、意識的かどうかにかかわらず、毎日 (lib)curl を使用していると推定されています – ですから、当初の懸念は当然でした。

libcurl ライブラリとcurl ユーティリティは、URLとの対話やさまざまなマルチプロトコル ファイル転送に使用され、すべての主要な Linux/UNIX ディストリビューションにバンドルされています。おそらくそうした理由から、プロジェクトの管理者は脆弱性を非公開にすることを決め、攻撃者を阻止するために詳細をほとんど共有せず、パッチ適用済バージョンが公開されたときに備えてそれぞれのパッケージ管理システムで準備を整えている間、OS ディストリビューションの管理者に事前に通知するだけでした。

Rapid CVE Mitigation by Cato Security Research

脆弱性の詳細

バッファ・オーバーフローの脆弱性を含むコードは、SOCKS5プロキシプロトコルをサポートするcurlの一部です。
SOCKS5は、組織のプロキシを設定したり、Torネットワークで使われているようにトラフィックを匿名化したりするための、よく知られたシンプルなプロトコルです(最近ではあまり使われていませんが)。

脆弱性はlibcurlのホスト名解決にあり、このホスト名解決はターゲットのプロキシサーバーに委譲されるか、libcurl自身によって行われます。255バイト以上のホスト名が与えられた場合、ローカル解決に切り替わり、解決されたアドレスのみが渡されます。このバグのせいで、ハンドシェイクが十分に遅い場合(投稿によると、「十分に遅い」とは典型的なサーバーのレイテンシーを指します)、バッファ・オーバーフローが引き起こされ、解決された結果の代わりに「長すぎるホスト名」全体がバッファにコピーされる可能性があります。

脆弱性が悪用されるのに満たされる必要がある条件は、具体的に次のとおりです。

  • CURLOPT_BUFFERSIZE」を設定していないアプリケーション、または 65541 未満に設定しているアプリケーション。curl ユーティリティ自体はこの値を100kBに設定するため、特別にコマンドラインで変更しない限りは脆弱ではないことに注意してください。
  • CURLOPT_PROXYTYPEを CURLPROXY_SOCKS5_HOSTNAME 型に設定します。
  • CURLOPT_PROXYまたはCURLOPT_PRE_PROXYは、スキームsocks5h://を使用するように設定します。

バッファ・オーバーフローを悪用する可能性のある方法として、攻撃者がSOCKS5経由でlibcurlクライアントからアクセスされるウェブサーバを制御し、バッファ・オーバーフローを引き起こすのに十分な長さのホスト名を持つLocationヘッダを含む細工されたリダイレクト(HTTP 30xレスポンス)を返させることです。

Catoの(lib)curlの使い方

Catoは、もちろんlibcurlとcurlそのものを複数の目的で利用しています:

  • curlとlibcurlベースのアプリケーションは、スクリプトや社内アプリケーションのグローバルなインフラストラクチャで広範囲に使用されています。
  • CatoのSDPクライアントもlibcurlを実装し、複数の機能に使用しています。

当社はSOCKS5を使用しておらず、Catoのコードとインフラは、このCVEのいかなる形に対しても脆弱ではありません。

CatoによるCVEに対する分析回答

CVEの詳細と公開されたPOCに基づき、Catoリサーチラボの研究者は、これが悪用される可能性は中程度~低いと考えています。

とはいえ、当社はもちろんこのCVEにIPSシグネチャを追加し、仮想パッチを適用することで、世界中のCatoに接続されたサイトに保護を提供し、世界中のCatoに接続されたすべてのユーザーとサイトに対して、検出から保護までの時間を1日と3時間と定めてエクスプロイトの試みをブロックし、14時間後にはすでにオプトイン保護を利用できるようにしています。
Catoは、影響を受けるバージョンはlibcurl 7.69.0から8.3.0までで、該当するサーバーとアプリケーションにパッチを当てることを推奨しています。さらに、前述のように、脆弱性を誘発する可能性のあるCURLOPT_PROXYTYPE、CURLOPT_PROXY、およびCURLOPT_PRE_PROXYパラメータの使用法を特定することで、緩和することが可能です。

CVE-2023-38545に関する詳細なインサイトや、その他多くの興味深くオタク的なサイバーセキュリティの話については、次のCato ポッドキャストをお聞きください(そして購読してください!)The Ring of Defense:サイバーセキュリティのポッドキャスト音声版もあり)。

Related Topics