Translated message

A translation of this page exists in English.

CVE-2023-25690 以降、Apache httpdでクエリー文字列を削除する際に RewriteRule が URL の末尾に %3f を追加するリグレッションの問題

Solution In Progress - Updated -

Issue

  • CVE-2023-25690 以降の Apache httpd でクエリー文字列を削除するときに、RewriteRule が URL の末尾に %3f を追加するリグレッションの問題。

  • mod_rewrite ドキュメント で次のように説明されています。

    クエリー文字列の変更

    デフォルトでは、クエリー文字列は変更せずに渡されます。 ただし、クエリー文字列の部分が含まれる置換文字列で URL を作成できます。 置換文字列内で疑問符を使用するだけで、次のテキストをクエリー文字列に再挿入する必要があることを示します。 既存のクエリー文字列を消去する場合は、疑問符のみで置換文字列を終了します。 新しいクエリー文字列と古いクエリー文字列を組み合わせるには、 [QSA] フラグを使用します。

    RewriteRule の置換文字列を疑問符だけで終わらせると、既存のクエリー文字列が消去されます。 そのため、次のように、ユーザーが送信したリクエスト内の既存のクエリーパラメーターを削除する mod_rewrite RewriteRule があります。

    RewriteRule ^/example/(.*)$ /example.html? [R,L]
    
    RewriteRule ^/test/(.*)$ http://www.example.com/test.html? [R,L]
    
    RewriteRule ^/(.*)$ /$1? [R,L]
    

    たとえば、ユーザーがリクエスト /test/test?query=12345 を上記の設定で httpd に送信する場合は、 http://www.example.com/test.html にリダイレクトされます。また、これは、RHEL 7 の httpd-2.4.6-98.el7_9.6 rpm
    まで正しく機能します。ただし、httpd-2.4.6-98.el7_9.7 rpm にアップグレードした後、http://www.example.com/test.html%3f のように、URL の末尾に %3f を追加して、リダイレクトするように変更されました。そのため、404 Not Found が生成されます。

Environment

  • CVE-2023-25690 の修正を含む Apache httpd 2.4.x
    • RHEL 7 の httpd-2.4.6-98.el7_9.7 rpm
    • RHEL 8 の httpd-2.4.37-51 rpm

Subscriber exclusive content

A Red Hat subscription provides unlimited access to our knowledgebase, tools, and much more.

Current Customers and Partners

Log in for full access

Log In

New to Red Hat?

Learn more about Red Hat subscriptions

Using a Red Hat product through a public cloud?

How to access this content