CVE-2021-42717 の検出・緩和スクリプト -> JSON パーシングにおける ModSecurity DoS 脆弱性
ModSecurity 3.x から 3.0.5 までは、過度にネストされた JSON オブジェクトを誤って処理します。何万もの深さでネストされた巧妙に細工された JSON オブジェクトは、Web サーバーが正当なリクエストを処理できなくなる可能性があります。中程度の大きさ(例: 300KB)の HTTP リクエストでも、限られた NGINX ワーカープロセスの 1 つを数分間占有し、マシンの利用可能な CPU のほぼすべてを消費する可能性があります。ModSecurity 2 も同様に脆弱です。影響を受けるバージョンは 2.8.0 から 2.9.4 までです。
考えられる緩和策: JSON パーサーを使用するリクエストのうち、Content-Length が一定のサイズ(10,000〜20,000 バイトがほとんどのインストールで安全と思われます)を超えるものを拒否する phase:1 チェーンルールを作成します。 一部の v2 ユーザーは、ファイル以外のリクエストボディも同様に同程度のしきい値を下回ることが予想される場合、代わりに SecRequestBodyNoFilesLimit 設定項目を利用できる場合もあります。 ModSecurity <v2.9.3 を使用しているユーザーへの特別な注意: 問題は v2.9.2 のような以前のバージョンにも存在しますが、問題となる遅延を引き起こすにはより大きなリクエストボディサイズが必要になるようです。つまり、リクエストボディサイズに関する制限はおそらくより大きく設定でき(40,000〜50,000 バイト程度)、ほとんどのインストールで十分な保護を提供できます。
