OWASP CRSの脆弱性により文字セット検証を回避可能に 

新たに公開された OWASP Core Rule Set(CRS)の脆弱性により、攻撃者がWebアプリケーションファイアウォール(WAF)における文字セット検証を回避でき、危険なペイロードがバックエンドアプリケーションに到達する可能性があります。  

CVE-2026-21876として追跡されているこの欠陥は、CRSルール 922110 に影響し、アプリケーションを クロスサイトスクリプティング(XSS) やその他のエンコーディングベースの攻撃にさらす可能性があります。 

管理者には、直ちにアップグレードし、許可されていない文字セットを使用する不審なmultipartリクエストについて過去ログを確認することが強く推奨されます。 

CVE ID  コンポーネント / ルール  脆弱性の種類 CVSS v3.1 / 深刻度 
CVE-2026-21876  OWASP CRS ルール 922110  文字セット検証の回避 9.3(CRITICAL)​ 

文字セット検証の回避がどのように機能するか 

ルール922110は、CRSでデフォルト有効のパラノイアレベル1(PL1)ルールです。その目的は、multipart/form-dataリクエストのContent-Typeヘッダーに含まれるcharsetパラメータを検証し、UTF-7、UTF-16、UTF-32、Shift-JIS、EUC-JP、その他のホワイトリストにない文字セットなどの危険なエンコーディングをブロックすることです。 

しかし、ModSecurity がmultipartコレクションに対するチェーンルールを処理する方法におけるロジック上の問題により、このルールは最後のmultipartセクションの文字セットしか検証せず、前の部分で使用された悪意のある文字セットを無視していました。 

実際の攻撃シナリオでは、攻撃者は最初のmultipartパートに charset=utf-7 を用いてUTF-7でエンコードしたXSSペイロードを配置し、その後に charset=utf-8 の無害な最終パートを続けることができます。  

反復処理中に取得したcharset値が上書きされ、最後に一度だけ評価されるため、WAFは安全な文字セットのみを検証し、リクエストを通過させてしまいました。  

これにより、UTF-7 XSSやその他の文字セット混乱攻撃がCRSの保護を回避し、脆弱なバックエンドアプリケーションに到達することが可能になりました。 

この脆弱性は、CRS 3.3.x および CRS 4.0.0 から 4.21.0 に影響し、ModSecurity 2.x、ModSecurity 3.x/x/libmodsecurity、Coraza を含む、サポートされているすべてのエンジンにわたって該当します。  

問題はエンジンではなくルールのロジックにあるため、これらのバージョンを使用しているすべての導入環境が影響を受けます。  

この欠陥はCRITICALと評価され、CVSS v3.1スコアは9.3です。これは、ネットワーク経由で悪用可能で、認証やユーザー操作を必要とせず、攻撃の複雑性が低く、WAF の境界を回避するスコープ変更があることを反映しています。 

この問題に対処するため、CRSチームはルール922110を再設計し、補助ルール922140および922150を導入しました。 

修正では、各multipartのContent-Type値を一意のインデックス付きトランザクション変数に保存し、最後の1つだけではなく、検出されたすべてのcharsetを検証します。 

このアプローチは、サポートされているすべてのエンジンで一貫して動作し、未サポートの正規表現機能を回避し、性能への影響も最小限です。修正は CRS 4.22.0 および CRS 3.3.8 でリリースされました。 

管理者には、直ちにアップグレードし、許可されていない文字セットを使用する不審なmultipartリクエストについて過去ログを確認することが強く推奨されます。 

翻訳元: https://gbhackers.com/owasp-crs-vulnerability/

ソース: gbhackers.com