概要
OWASP Core Rule Set (CRS)において、ウェブアプリケーションファイアウォール(WAF)のCharset検証を迂回できる新たな脆弱性(CVE-2026-21876)が公開されました。この脆弱性により、悪意のあるペイロードがバックエンドアプリケーションに到達し、クロスサイトスクリプティング(XSS)などのエンコーディングベースの攻撃を可能にする恐れがあります。この脆弱性はCVSS v3.1スコアで9.3(クリティカル)と評価されており、管理者には早急な対応が求められています。
脆弱性の詳細
この脆弱性は、CRSルール922110におけるロジックの問題に起因します。本来、このルールはmultipart/form-dataリクエストのContent-Typeヘッダーに含まれるcharsetパラメータを検証し、UTF-7、UTF-16、UTF-32、Shift-JIS、EUC-JPなどの危険なエンコーディングをブロックすることを目的としています。しかし、ModSecurityがマルチパートコレクションに対するチェインルールを処理する方法に問題があり、最後のマルチパートセクションのcharsetのみが検証され、それ以前のセクションで使用された悪意のあるcharsetは無視されていました。
攻撃者は、最初のマルチパートパートにcharset=utf-7でUTF-7エンコードされたXSSペイロードを配置し、その後にcharset=utf-8の無害な最終パートを続くことで、このWAFの保護をバイパスすることが可能でした。
影響と対象バージョン
この脆弱性は、ウェブアプリケーションをXSSやその他のcharset混乱攻撃に晒す可能性があります。
影響を受けるCRSのバージョンは以下の通りです。
- CRS 3.3.x
- CRS 4.0.0から4.21.0まで
また、この問題はルールロジックに起因するため、ModSecurity 2.x、ModSecurity 3.x/libmodsecurity、Corazaを含む全てのサポートされているエンジンに影響します。認証やユーザーインタラクションなしでネットワーク経由で悪用可能であり、攻撃の複雑さも低いため、その深刻度は非常に高いと評価されています。
修正と推奨事項
OWASP CRSチームはこの問題に対処するため、ルール922110を再設計し、新たにヘルパールール922140および922150を導入しました。この修正により、各マルチパートのContent-Type値が個別にインデックス付けされたトランザクション変数に格納され、検出された全てのcharsetが検証されるようになりました。このアプローチは全てのサポートエンジンで一貫して機能し、パフォーマンスへの影響も最小限に抑えられています。
修正プログラムはCRS 4.22.0およびCRS 3.3.8でリリースされています。管理者には、直ちにこれらのバージョンへアップグレードし、不許可なcharsetを使用した疑わしいマルチパートリクエストがないか、過去のログを確認することが強く推奨されます。
