
Python向けの軽量HTTPライブラリ「h11」において、チャンクエンコーディング処理の不備に起因する重大な脆弱性(CVE未付番)が発見されました。
この脆弱性により、特定条件下でリクエストスマグリング(Request Smuggling)攻撃が成立する恐れがあることが判明しています。
なお、問題はバージョン0.16.0で修正済みです。
脆弱性の対象バージョン
0.15.0以下
脆弱性の対策バージョン
h11 0.16.0以上
脆弱性の概要
h11のバージョン0.15.0以前では、最後の\r\n
の検証が正しく行われておらず、任意の2バイトを受け入れてしまう仕様になっていました。
つまり、適切な区切りがなくてもエラーを出さずに次のチャンクとして処理を継続していたのです。
この問題単体では重大な影響を与えるものではありませんが、バグを持つリバースプロキシと組み合わさると非常に危険です。
たとえば、プロキシ側が次のような誤ったパースをしていた場合、意図しないリクエスト解釈が発生します。
-
攻撃者が細工したHTTPリクエストを送信
-
プロキシとサーバ(h11)がリクエストを異なる解釈をしてしまう
-
サーバ側で不正なリクエストが通過し、本来アクセスできないエンドポイントにリクエストが到達
これにより、次のようなリスクが発生します。
-
アクセス制御回避
-
セッションハイジャック(別ユーザーのセッションクッキーを盗む)
-
セキュリティ境界の突破