Tomcat CGI Servlet の脆弱性 CVE-2025-46701 が FIX:大文字/小文字の区別の不適切な処理

Apache Tomcat CGI Servlet Flaw Enables Security Constraint Bypass

2025/05/30 gbhackers — Apache Tomcat の CGI サーブレットで発見された脆弱性 CVE-2025-46701 により、特定の条件下におけるセキュリティ制約の回避の可能性が生じている。2025年5 月29日に発表された、この脆弱性は、CGI サーブレットにマッピングされた URL の pathInfo コンポーネントにおける、大文字/小文字の区別の不適切な処理に起因する。

Windows や macOS などの、大文字/小文字を区別しないファイル・システムに Tomcat がデプロイされ、pathInfo にセキュリティ制約が設定されている場合に、この問題が生じる。具体的に言うと、細工された URL により、設定されている保護の回避が達成され、到達できないはずの CGI リソースへの、不正アクセスが許可される可能性が生じる。

Apache Software Foundation により、この脆弱性の深刻度は Low に分類されているが、悪用の前提として、CGI サポートが明示的に有効化されている、環境が必要になるからである。さらに、この機能は、すべての Tomcat バージョンにおいて、デフォルトで無効化されている。

ただし、厳格なアクセス制御を備えた、CGI ベースのアプリケーションに依存している組織にとっては、きわめて重大なリスクとなる。

技術的な詳細と影響を受けるバージョン

この脆弱性が影響を及ぼす対象は、大文字/小文字を区別しない環境において、Tomcat の CGI サーブレットが URL パスを解釈する方法となる。

URL の pathInfo 部分の大文字/小文字を操作する攻撃者は、特定の CGI スクリプトへのアクセスを制限するはずの、セキュリティ制約を回避できる。

この問題は、ファイル・システムの動作が、アプリケーションのセキュリティ・ロジックと異なる場合の、大文字/小文字の区別に関するバグの典型的な例である。

影響を受けるバージョン
Affected Software/ComponentVulnerable VersionsFixed Version
Apache Tomcat (core, catalina, embed-core)11.0.0-M1 to 11.0.611.0.7
10.1.0-M1 to 10.1.4010.1.41
9.0.0.M1 to 9.0.1049.0.105
Maven: org.apache.tomcat.embed:tomcat-embed-core>=11.0.0-M1 <11.0.711.0.7
Maven: org.apache.tomcat.embed:tomcat-embed-core>=10.1.0-M1 <10.1.4110.1.41
Maven: org.apache.tomcat.embed:tomcat-embed-core>=9.0.0.M1 <9.0.1059.0.105
Maven: org.apache.tomcat:tomcat-catalina>=11.0.0-M1 <11.0.711.0.7
Maven: org.apache.tomcat:tomcat-catalina>=10.1.0-M1 <10.1.4110.1.41
Maven: org.apache.tomcat:tomcat-catalina>=9.0.0.M1 <9.0.1059.0.105
セキュリティ制約の設定例

典型的な web.xml のセキュリティ制約は、以下のようになる。

xml<security-constraint>
  <web-resource-collection>
    <web-resource-name>Restricted CGI</web-resource-name>
    <url-pattern>/cgi-bin/*</url-pattern>
  </web-resource-collection>
  <auth-constraint>
    <role-name>admin</role-name>
  </auth-constraint>
</security-constraint>

基盤となるファイル・システムにおいて、大文字/小文字が区別されない場合には、サーブレットによる適切な大文字/小文字の正規化が必要になる。それが行われないと、”/CGI-bin/script.cgi” へ向けたリクエストが、この制約を回避し、保護されたリソースへの不正アクセスの可能性が生じる。

緩和策と推奨事項

すでに Apache Software Foundation は、CGI サーブレットの大文字/小文字の区別に関する脆弱性を修正した、パッチ・バージョンである Tomcat 11.0.7/10.1.41/9.0.105 をリリースしている。

CGI 機能を使用しているユーザー組織にとって必要なことは、これらのバージョンへのアップグレードを優先することである。CGI サポートを必要としない組織においても、CGI サーブレットを無効化の状態に維持し、攻撃対象領域を縮小することが強く推奨される。

緩和策:

  • Apache Tomcat 11.0.7/10.1.41/9.0.105 へとアップグレードする。
  • CGI が不要な場合は、Tomcat コンフィグ定で CGI サーブレットが無効化されていることを確認する。
  • 特に大文字/小文字が混在する環境では、web.xml のセキュリティ制約が堅牢であることを確認する。
  • Tomcat のデプロイメントを定期的に監査し、リスクをもたらす可能性のあるレガシー機能や不要な機能が存在しないことを確認する。

発見者:

この脆弱性は、セキュリティ研究者の Greg K により、責任のある形で開示された。この脆弱性が浮き彫りにするのは、成熟し広く使用されている OSS プロジェクトであっても、常に注意を払う必要があることだ。

脆弱性 CVE-2025-46701 の深刻度は Low と評価されているが、レガシー機能やプラットフォーム固有の動作から生じる、微妙なリスクを改めて認識させるものである。

Tomcat で CGI に依存している組織は、影響を受ける機能にパッチを適用するか、無効化するなど、迅速に行動する必要がある。それにより、大文字/小文字の区別の問題により、セキュリティ制約が誤って回避される状況から抜け出せる。

Apache Tomcat をエンタープライズ環境に導入するためには、定期的な更新と設定の確認が不可欠である。

今回の Tomcat の脆弱性ですが、深刻度は Low であっても、条件が揃えば制限をすり抜けた不正アクセスにいたるという話なので、ちょっと気になりますね。CGI を使ってるチームは、速やかなパッチ適用、もしくは、無効化が必要とのことです。ファイル・システムの仕様と、セキュリティ設定のズレが原因というのも、見落としがちなところですね。よろしければ、Apache Tomcat で検索も、ご参照ください。