brotliの脆弱性「http2shell」、NodeやPythonにRCEを引き起こす
Evolving Threat: http2shell is an RCE in node, Python, and more
http2shellと呼ばれるRCEがNodeやPythonなど複数の環境に影響を与えている。原因はbrotli 1.2.0以前の脆弱性で、Pythonパッケージはすでに1.2.1へ更新済み。修正コミットは2月にさかのぼるが、セキュリティ上重要と認識されずリリースされていなかった。Rustのbrotli crateはCバインディングではないため影響を受けない。暫定対策は両側でbrエンコーディングを無効化すること。
毎日のように、Cコードのバッファオーバーフロー脆弱性がまた一つ……
HNでの議論
96- mirashii
これはhttp2shellではなくgooglebrotli2shellと呼ぶべきだと思う。Googleはこれで評判を少し落とすに値する。これは基本的なメモリ安全性の違反であり、wuffsを作り、メモリ安全性のためにRustを推進し、Carbonを持つ同じ組織によるものだ。zstdには高品質なRust実装があり、ほぼ同じ時期のものだ。
さらに、brotliライブラリはほぼ丸一年リリースがなく、この脆弱性の修正は2月にコミットされていた。Googleはすべてのプロジェクトでmainからビルドしているので影響を受けなかったが、オープンソースのリリースは完全に後回しにされている。雑多な修正を含む100以上のコミットが、セキュリティインシデントがリリースを強制するまで放置されていた。
- ataraxia937
これもまた、少なくともサーバーに関しては大げさに感じる。200以上のGitHubリポジトリを持つ組織をたった今確認した。Node、Python、C#だ。どれも脆弱ではない…なぜならどれも実際にはBrotliデコーダを呼び出していないからだ。プラットフォーム自体によって、サーバー側ではデフォルトで有効になっていないだけだ。これはPHPのバグに似ていて、実際に脆弱になるには特定の条件が揃っている必要がある。
クライアントについては?確かに、そちらの方がリスクは大きい。パッチを当てよう。しかし、クライアントが攻撃者に接続しない限り、悪者があなたのクライアントを攻撃することはない。これを直すために夜更かしする必要はない。
(そう、ここに.NETも含まれている。MicrosoftのBrotliモジュールはGoogleの脆弱なリファレンス実装へのバインディングだからだ。)
- anonymous908213
正直なところ、あらゆるメモリバグが可愛くセンセーショナルな名前とマーケティングの押し付けを受けるのは、なくてもいいかな。
- rvanlaar
brotli <= 1.2.0が脆弱なようだ。
Pythonパッケージはすでに1.2.1に更新されている。https://pypi.org/project/brotli/1.2.1/
- hatthew
普通のセキュリティ問題はあまり注目されない気がする。PHPやeMudhraの問題は深刻で、注目に値すると思えた。しかし、こういうものになるとよくわからない。これは深刻な問題なのか?それとも、今ウェブセキュリティが人々の頭にあるからという理由だけでニュース価値があるだけの、ありふれた問題なのか?