技術的な説明
2008年に導入され、バージョン0.6.27から1.30.0(NGINX Open Source)およびR32からR36(NGINX Plus)に影響する、NGINXのngx_http_rewrite_moduleの重大なヒープバッファオーバーフロー脆弱性。この脆弱性は、rewriteディレクティブの後に、名前のないPCREキャプチャと疑問符を含む置換文字列を伴うrewrite、if、またはsetディレクティブが続く場合に発生します。認証されていないリモート攻撃者が細工されたHTTPリクエストを送信してヒープ破損をトリガーでき、サービス拒否を引き起こしたり、ASLRが無効化されたシステムでリモートコード実行を達成する可能性があります。
攻撃経路
認証されていないリモート攻撃者が、疑問符を含むrewriteルールとキャプチャされた値を参照するsetディレクティブを使用する脆弱なNGINX設定をターゲットとする特別に細工されたHTTPリクエストを送信します。疑問符がis_argsフラグを永続的に設定する場合、2回のパス長計算とコピープロセスは異なり、コピーパスはNGX_ESCAPE_ARGSでngx_escape_uriを呼び出し、エスケープ可能な各文字を展開して割り当てられたバッファをオーバーフローさせます。
影響を受けるシステム
NGINX Open Source 0.6.27-1.30.0、NGINX Plus R32-R36、NGINX Instance Manager 2.16.0-2.21.1、F5 WAF for NGINX 5.9.0-5.12.1、NGINX App Protect WAF、NGINX App Protect DoS、NGINX Gateway Fabric、NGINX Ingress Controller。F5勧告によると、世界中のすべてのウェブサイトの約3分の1に影響します。
緩和策
NGINX Open Source 1.31.0または1.30.1、またはNGINX Plus R37 / R36 P4 / R32 P6にアップグレードしてください。一時的な軽減策:疑問符を含むrewriteルールとキャプチャされた値を参照するsetディレクティブを使用する構成を確認してください。F5は詳細な勧告K000161019を公開しています。18年の脆弱性ウィンドウと公開されたプルーフオブコンセプトコードが存在することを考慮すると、組織はインターネットに面したNGINXデプロイのパッチ適用を直ちに優先する必要があります。