Apache bRPC の脆弱性 CVE-2024-23452 が FIX:HTTP スマグリングの可能性

CVE-2024-23452: Apache bRPC HTTP Request Smuggling Vulnerability

2024/02/08 SecurityOnline — Apache bRPC は、C++言語を用いる産業グレードの RPC フレームワークであり、検索/広告/機械学習/ストレージ/レコメンデーションなどのシステムで多用されている。しかし、最近になって、この重要なインフラストラクチャで、脆弱性 CVE-2024-23452 が発見された。

この脆弱性の根本的な原因は、Apache bRPC バージョン 0.9.5〜1.7.0 の HTTP サーバ・コンポーネントにある。残念なことに、この脆弱性の悪用に成功した攻撃者は、HTTP リクエスト処理メカニズムを操作が可能となり、検知を回避しながら悪意のリクエストをシステムに対してスマグリングできる。

この問題の核心は、”http_parser” が RFC-7320 HTTP 1.1 仕様に準拠していないことにある。具体的に言うと、Transfer-Encoding ヘッダ に加えて Content-Length ヘッダも含むメッセージを受信すると、このサーバは標準プロトコルに従わないため、リクエスト解析ロジックを操作する機会を攻撃者に与えてしまう。

フロントエンド・サーバは、バックエンドの bRPC ベースの HTTP サーバと持続的接続で通信する。このフロントエンド・サーバは、リクエストを解析するために Transfer-Encoding (TE) を使用し、TEフィールド内に “chunk” が存在すれば、チャンクされたエンコーディングの使用を意味すると捉える。この信用を悪用して、攻撃者は悪意のリクエストを作成し、正当なトラフィックを装い、サーバ間の接続に対してスマグリングを達成する。

要するに、期待されるリクエスト形式と、実際のリクエスト形式の間の不整合を悪用する攻撃者は、セキュリティ対策を回避して、システム内で大混乱を引き起こす可能性を持つ。

脆弱性 CVE-2024-23452 を解決し、システムを保護するために、Apache bRPC ユーザーに提供されるのは、以下の2つのアクションの実行である:

  1. bRPC バージョン 1.8.0 へのアップグレード:最新版の bRPC は、この脆弱性に正面から対処し、潜在的な悪用からフレームワークを保護するための修正を実装している。バージョン 1.8.0 にアップグレードすることで、ユーザーのシステムは、悪意の行為者から確実に保護される。
  2. パッチの適用:最新バージョンへと直ちにアップグレードできないユーザーには、パッチという一時的な解決策が提示されている。Apache bRPC コミュニティが提供するパッチを適用することで、ユーザーは包括的なアップグレード戦略に取り組みながら、防御を強化できる。