コンテンツ
Apache Tomcat 8.x の脆弱性
このページには、リリースされた Apache Tomcat® 8.x のバージョンで修正されたすべてのセキュリティ脆弱性が記載されています。各脆弱性には、Apache Tomcat セキュリティチームによってセキュリティ影響評価が与えられています。この評価はプラットフォームによって異なる場合があることにご注意ください。また、脆弱性が影響を与えることが知られているApache Tomcatのバージョンも記載しており、脆弱性が検証されていない場合は、バージョンに疑問符を付けています。
注: Tomcat の脆弱性ではないが、Tomcat に対して誤って報告された、または Tomcat が回避策を提供している脆弱性は、このページの最後に記載されています。
Tomcat 8.0.x はサポート終了 (end of life) に達しており、もはやサポートされていないことにご注意ください。2018年6月以降に報告された脆弱性は8.0.xブランチに対しては確認されておらず、修正されることもありません。セキュリティ修正を得るためには、ユーザーは8.5.x以降にアップグレードする必要があります。
バイナリパッチは提供されません。ソースコードパッチを適用する必要がある場合は、使用しているApache Tomcatバージョンのビルド手順に従ってください。Tomcat 8.5の場合、これらはbuilding.html
とBUILDING.txt
です。どちらのファイルも、バイナリ配布のwebapps/docs
サブディレクトリにあります。また、ドキュメントのセキュリティに関する考慮事項ページも確認することをお勧めします。
Tomcat のビルドや設定、またはここに記載されている既知の脆弱性を軽減するための指示に従う上でヘルプが必要な場合は、公開されているTomcat Users メーリングリストに質問を送ってください。
未記載のセキュリティ脆弱性、またはセキュリティ上の影響を伴うその他の予期せぬ動作に遭遇した場合、あるいはここの記述が不完全な場合は、Tomcat Security Teamに非公開で報告してください。ご協力ありがとうございます。
目次
2024-02-19 Apache Tomcat 8.5.99 で修正済み
重要: サービス運用妨害 (Denial of Service) CVE-2024-23672
WebSocketクライアントがWebSocket接続を開いたままにすることが可能であり、リソース消費が増加する可能性がありました。
これはコミット3631adb1で修正されました。
この問題は、2024年1月17日にTomcat Security Teamによって特定されました。この問題は2024年3月13日に公開されました。
影響: 8.5.0 から 8.5.98
重要: サービス運用妨害 (Denial of Service) CVE-2024-24549
HTTP/2リクエストの処理中に、リクエストが設定されたヘッダーの制限のいずれかを超えた場合、関連するHTTP/2ストリームはすべてのヘッダーが処理されるまでリセットされませんでした。
これはコミット0cac540aで修正されました。
この問題は、2024年1月24日にTomcat Security Teamに報告されました。この問題は2024年3月13日に公開されました。
影響: 8.5.0 から 8.5.98
2023-11-13 Apache Tomcat 8.5.96 で修正済み
重要: リクエストスマグリング CVE-2023-46589
TomcatはHTTPトレーラーヘッダーを正しくパースしていませんでした。ヘッダーサイズ制限を超えるように特別に細工されたトレーラーヘッダーは、Tomcatが単一のリクエストを複数のリクエストとして扱う原因となり、リバースプロキシの背後にある場合にリクエストスマグリングの可能性につながりました。
これはコミットaa92971eで修正されました。
この問題は、2023年10月20日にTomcat Security Teamに報告されました。この問題は2023年11月28日に公開されました。
影響: 8.5.0 から 8.5.95
2023-10-10 Apache Tomcat 8.5.94 で修正済み
重要: リクエストスマグリング CVE-2023-45648
TomcatはHTTPトレーラーヘッダーを正しくパースしていませんでした。特別に細工された無効なトレーラーヘッダーは、Tomcatが単一のリクエストを複数のリクエストとして扱う原因となり、リバースプロキシの背後にある場合にリクエストスマグリングの可能性につながりました。
これはコミット59583245で修正されました。
この問題は、2023年9月12日にTomcat Security Teamに報告されました。この問題は2023年10月10日に公開されました。
影響: 8.5.0 から 8.5.93
重要: サービス運用妨害 (Denial of Service) CVE-2023-44487
TomcatのHTTP/2実装は、高速リセット攻撃に対して脆弱でした。サービス運用妨害は、通常、OutOfMemoryError
として現れました。
これはコミット944332bbで修正されました。
この問題は、2023年9月14日にTomcat Security Teamに報告されました。この問題は2023年10月10日に公開されました。
影響: 8.5.0 から 8.5.93
重要: 情報漏洩 (Information Disclosure) CVE-2023-42795
リクエストとレスポンスを含む様々な内部オブジェクトを、次のリクエスト/レスポンスで再利用する前にリサイクルする際、エラーによりTomcatがリサイクルプロセスの一部をスキップし、現在のリクエスト/レスポンスから次のリクエスト/レスポンスへ情報が漏洩する可能性がありました。
これはコミット30f8063dで修正されました。
この問題は、2023年9月13日にTomcat Security Teamによって特定されました。この問題は2023年10月10日に公開されました。
影響: 8.5.0 から 8.5.93
低: サービス運用妨害 (Denial of Service) CVE-2023-42794
TomcatがCommons FileUploadを内部的にフォークしたバージョンには、未リリースの作業中のリファクタリングが含まれており、Webアプリケーションがアップロードされたファイルに対してストリームを開いたものの、そのストリームを閉じなかった場合に、Windows上でサービス運用妨害を引き起こす潜在的な脆弱性が露呈しました。ファイルはディスクから削除されず、最終的にディスクが満杯になることによるサービス運用妨害の可能性が生じました。
これはコミットc99ffc30で修正されました。
この問題は、2023年9月1日にTomcat Security Teamに報告されました。この問題は2023年10月10日に公開されました。
影響: 8.5.85 から 8.5.93
2023-08-25 Apache Tomcat 8.5.93 で修正済み
中: オープンリダイレクト CVE-2023-41080
ROOT (デフォルト) ウェブアプリケーションがFORM認証を使用するように設定されている場合、特別に細工されたURLを使用して、攻撃者が選択したURLへのリダイレクトをトリガーすることが可能でした。
これはコミット4998ad74で修正されました。
この問題は、2023年8月17日にTomcat Security Teamに報告されました。この問題は2023年8月22日に公開されました。
影響: 8.5.0 から 8.5.92
2023-05-19 Apache Tomcat 8.5.89 で修正済み
重要: 情報漏洩 (Information disclosure) CVE-2023-34981
バグ66512の修正によって導入されたリグレッションが、バグ66591として修正されました。このリグレッションにより、レスポンスにHTTPヘッダーが設定されていない場合、AJP SEND_HEADERS
メッセージが送信されず、その結果、少なくとも1つのAJPベースのプロキシ (mod_proxy_ajp) が現在のリクエストに対して以前のリクエストのレスポンスヘッダーを使用することになり、情報漏洩につながる可能性がありました。
これはコミット2214c803で修正されました。
この問題は、2023年5月24日にTomcat Security Teamに報告されました。この問題は2023年6月21日に公開されました。
影響: 8.5.88
2023-04-19 Apache Tomcat 8.5.88 で修正済み
中: Apache Tomcat サービス運用妨害 (denial of service) CVE-2023-28709
CVE-2023-24998の修正は不完全でした。非デフォルトのHTTPコネクタ設定が使用され、クエリ文字列パラメータによってmaxParameterCount
に達する可能性があり、かつ、クエリ文字列に正確にmaxParameterCount
のパラメータが提供されたリクエストが送信された場合、アップロードされたリクエストパーツの制限が回避され、サービス運用妨害が発生する可能性がありました。
これはコミット5badf94eで修正されました。
この問題は、2023年3月13日にTomcat Security Teamに報告されました。この問題は2023年5月22日に公開されました。
影響: 8.5.85 から 8.5.87
2023-02-24 Apache Tomcat 8.5.86 で修正済み
重要: Apache Tomcat 情報漏洩 (information disclosure) CVE-2023-28708
RemoteIpFilter
を、HTTP経由でリバースプロキシから受信し、X-Forwarded-Proto
ヘッダーがhttps
に設定されているリクエストとともに使用すると、Tomcatによって作成されたセッションクッキーにセキュア属性が含まれませんでした。これにより、ユーザーエージェントがセッションクッキーを安全でないチャネルで送信する可能性がありました。
これはコミット5b72c94eで修正されました。
66471は2023年2月8日に公開報告されました。セキュリティ上の影響は、2023年2月9日にTomcat Security Teamによって特定されました。この問題は2023年3月22日に公開されました。
影響: 8.5.0 から 8.5.85
2023-01-19 Apache Tomcat 8.5.85 で修正済み
重要: Apache Tomcat サービス運用妨害 (denial of service) CVE-2023-24998
Apache Tomcatは、Jakarta Servlet仕様で定義されているファイルアップロード機能を提供するために、Apache Commons FileUploadのパッケージ名を変更したコピーを使用しています。したがって、Apache Tomcatは、処理されるリクエストパーツの数に制限がなかったため、Apache Commons FileUploadの脆弱性CVE-2023-24998に対しても脆弱でした。これにより、攻撃者が悪意のあるアップロードまたは一連のアップロードによってDoSを引き起こす可能性がありました。
これはコミット9ca96c8cで修正されました。
この問題は、2022年12月11日にApache Tomcat Securityチームに報告されました。この問題は2023年2月20日に公開されました。
影響: 8.5.0 から 8.5.84
2022-11-21 Apache Tomcat 8.5.84 で修正済み
低: Apache Tomcat JsonErrorReportValve インジェクション CVE-2022-45143
JsonErrorReportValve
はtype
、message
、またはdescription
の値をエスケープしませんでした。一部の状況では、これらはユーザー提供データから構築されるため、ユーザーが悪意のある値を指定してJSON出力を無効化したり操作したりすることが可能でした。
これはコミット0cab3a56で修正されました。
この問題は、2022年9月2日にApache Tomcat Securityチームによって特定されました。この問題は2023年1月3日に公開されました。
影響: 8.5.83
2022-10-11 Apache Tomcat 8.5.83 で修正済み
低: Apache Tomcat リクエストスマグリング CVE-2022-42252
TomcatがrejectIllegalHeader
をfalse
(デフォルト)に設定して無効なHTTPヘッダーを無視するように構成されている場合、Tomcatは無効なContent-Length
ヘッダーを含むリクエストを拒否しませんでした。これにより、Tomcatが無効なヘッダーを持つリクエストも拒否しないリバースプロキシの背後に配置されている場合、リクエストスマグリング攻撃が可能となりました。
これはコミットa1c07906で修正されました。
この問題は、2022年9月29日にApache Tomcat Securityチームに報告されました。この問題は2022年10月31日に公開されました。
影響: 8.5.0 から 8.5.82
2022-08-13 Apache Tomcat 8.5.82 で修正済み
低: Apache Tomcat 例示ウェブアプリケーションにおける XSS CVE-2022-34305
例示ウェブアプリケーションのフォーム認証例は、ユーザー提供データをフィルタリングせずに表示し、XSS脆弱性を露呈していました。
これはコミット5f6c88b0で修正されました。
この問題は、2022年6月22日にApache Tomcat Securityチームに報告されました。この問題は2022年6月23日に公開されました。
影響: 8.5.50 から 8.5.81
2022-05-23 Apache Tomcat 8.5.79 で修正済み
低: Apache Tomcat EncryptInterceptor DoS CVE-2022-29885
EncryptInterceptor のドキュメントには、Tomcat クラスタリングを信頼できないネットワーク上で実行できると誤って記載されていました。これは正しくありませんでした。EncryptInterceptor は機密性と整合性の保護を提供しますが、特に DoS のリスクなど、信頼できないネットワーク上での実行に関連するすべてのリスクから保護するわけではありません。
これはコミットb679bc62で修正されました。
この問題は、2022年4月17日に4ra1nによってApache Tomcat Securityチームに報告されました。この問題は2022年5月10日に公開されました。
影響: 8.5.38 から 8.5.78
2022年4月1日 Apache Tomcat 8.5.78 で修正済み
高: 情報漏洩 (Information Disclosure) CVE-2021-43980
Tomcat 10で導入され、Tomcat 9.0.47以降にバックポートされたブロッキング読み取りおよび書き込みの簡易実装は、長らく存在していた(しかしトリガーが極めて困難な)並行性バグを露呈させました。これにより、クライアント接続がHttp11Processorインスタンスを共有し、レスポンスまたはその一部が誤ったクライアントに受信される可能性がありました。
これはコミット4a00b0c0で修正されました。
この問題は、2021年11月11日にAdam Thomas、Richard Hernandez、Ryan SchmittによってApache Tomcat Securityチームに報告されました。この問題は2022年9月28日に公開されました。
影響: 8.5.0 から 8.5.77
2022年2月28日 Apache Tomcat 8.5.76 で修正済み
重要: リクエストの混同 (Request mix-up) CVE-2022-25762
ウェブアプリケーションがWebSocket接続のクローズと同時にWebSocketメッセージを送信した場合、アプリケーションがクローズされたソケットを使い続ける可能性があります。この場合にトリガーされるエラー処理は、プールされたオブジェクトをプールに2回配置する原因となる可能性がありました。これにより、後続の接続が同じオブジェクトを同時に使用する可能性があり、誤ったユーザーにデータが返されたり、その他のエラーが発生したりする可能性がありました。
これはコミット01f2cf25で修正されました。
この問題は、2021年12月21日にApache Tomcat Security Teamによって特定されました。この問題は2022年5月12日に公開されました。
影響: 8.5.0 から 8.5.75
2022年1月20日 Apache Tomcat 8.5.75 で修正済み
注: 以下の問題は Apache Tomcat 8.5.74 で修正されましたが、8.5.74 リリース候補のリリース投票は通過しませんでした。したがって、これらの問題に対する修正を含むバージョンを取得するにはユーザーは 8.5.75 をダウンロードする必要がありますが、バージョン 8.5.74 は影響を受けるバージョンリストには含まれていません。
低: ローカル特権昇格 (Local Privilege Escalation) CVE-2022-23181
バグCVE-2020-9484の修正により、チェック時間と使用時間の脆弱性が導入され、ローカル攻撃者がTomcatプロセスが使用しているユーザーの権限でアクションを実行できるようになりました。この問題は、TomcatがFileStoreを使用してセッションを永続化するように設定されている場合にのみ悪用可能です。
これはコミット97943959で修正されました。
この問題は、2021年12月10日にViettel Cyber Security の Trung Pham によって Apache Tomcat Security Team に報告されました。この問題は2022年1月26日に公開されました。
影響: 8.5.55 から 8.5.73
2021年10月6日 Apache Tomcat 8.5.72 で修正済み
重要: サービス運用妨害 (Denial of Service) CVE-2021-42340
バグ63362の修正の一環として導入されたエラーにより、メモリリークが発生しました。HTTPアップグレード接続のメトリクスを収集するために導入されたオブジェクトが、WebSocket接続がクローズされた後にWebSocket接続に対して解放されませんでした。これによりメモリリークが発生し、時間の経過とともにOutOfMemoryErrorを介してサービス運用妨害につながる可能性がありました。
これはコミットd27535bdで修正されました。
メモリリークは、2021年9月23日にユーザーメーリングリストを通じて公開報告されました。セキュリティ上の影響は、同日にTomcat Securityチームによって特定されました。この問題は2021年10月14日に公開されました。
影響: 8.5.60 から 8.5.71
2021年6月15日 Apache Tomcat 8.5.68 で修正済み
注: 以下の問題はApache Tomcat 8.5.67で修正されましたが、8.5.67リリース候補のリリース投票は通過しませんでした。したがって、これらの問題に対する修正を含むバージョンを取得するにはユーザーは8.5.68をダウンロードする必要がありますが、バージョン8.5.67は影響を受けるバージョンリストには含まれていません。
重要: リクエストスマグリング (Request Smuggling) CVE-2021-33037
Apache Tomcatは、特定の状況でHTTP transfer-encodingリクエストヘッダーを正しく解析せず、リバースプロキシと組み合わせて使用した場合にリクエストスマグリングの可能性につながりました。具体的には、クライアントがHTTP/1.0レスポンスのみを受け入れると宣言した場合にTomcatがtransfer-encodingヘッダーを誤って無視したこと、Tomcatが識別エンコーディングを尊重したこと、そしてTomcatが、存在する場合にチャンクエンコーディングが最終的なエンコーディングであることを確認しなかったことが挙げられます。
これはコミット3202703e、da0e7cb0、および8874fa02で修正されました。
この問題は、2021年5月7日にNEU seclabのBahruz Jabiyev、Steven Sprecher、Kaan OnarliogluによってApache Tomcat Securityチームに報告されました。この問題は2021年7月12日に公開されました。
この問題は責任を持って特定され、報告されました。
影響: 8.5.0 から 8.5.66
2021年5月12日 Apache Tomcat 8.5.66 で修正済み
低: 認証の脆弱性 (Authentication weakness) CVE-2021-30640
JNDI Realm によって行われたクエリは、常にパラメータを正しくエスケープするわけではありませんでした。パラメータの値は、管理者によって提供される設定データだけでなく、ユーザー提供データ(例:ユーザー名)からも取得される可能性がありました。限られた状況で、ユーザーがユーザー名のバリエーションを使用して認証したり、LockOut Realm によって提供される保護の一部を回避したりすることが可能でした。
これはコミット24dfb300、0a272b00、c9f21a2a、4e86b4ea、79580e7f、d3407672、6a9129ac、およびad22db64で修正されました。
この問題は65224として公開報告されました。
影響: 8.5.0 から 8.5.65
2021年4月6日 Apache Tomcat 8.5.65 で修正済み
重要: サービス運用妨害 (Denial of Service) CVE-2021-30639
ノンブロッキングI/O中のエラー処理を改善するための変更の一部として導入されたエラーにより、Requestオブジェクトに関連付けられたエラーフラグがリクエスト間でリセットされないことを意味しました。これにより、一度ノンブロッキングI/Oエラーが発生すると、そのリクエストオブジェクトによって処理される将来のすべてのリクエストが失敗することになりました。ユーザーは、例えば接続を切断するなどして、ノンブロッキングI/Oエラーをトリガーすることができ、DoSをトリガーする可能性を生み出しました。
ノンブロッキングI/Oを使用しないアプリケーションは、この脆弱性の影響を受けません。
これはコミット411caf29で修正されました。
この問題は65203として公開報告されました。
影響: 8.5.64
2021年3月10日 Apache Tomcat 8.5.64 で修正済み
重要: サービス運用妨害 (Denial of Service) CVE-2021-41079
TomcatがTLSにNIO+OpenSSLまたはNIO2+OpenSSLを使用するように設定されていた場合、特別に細工されたパケットを使用して無限ループを引き起こし、サービス運用妨害につながる可能性がありました。
これはコミットb90d4fc1で修正されました。
この問題は、2021年2月26日にThomas WozenilekによってApache Tomcat Security Teamに最初に報告されましたが、確認できませんでした。投機的な修正が2021年3月3日に適用されました。2021年9月14日、Infinite Campus の David Frankson が独立してこの問題を報告し、テストケースを含めました。これにより、問題と投機的な修正の両方が検証可能になりました。この問題は2021年9月15日に公開されました。
影響: 8.5.0 から 8.5.63
重要: 情報漏洩 (Information Disclosure) CVE-2024-21733
不完全なPOSTリクエストはエラー応答をトリガーし、それが他のユーザーからの以前のリクエストのデータを含む可能性がありました。
これはコミットce4b154eで修正されました。
この問題は、2023年12月20日にSn1perSecurity LLC の xer0dayz によって Apache Tomcat Security Team に報告されました。この問題は2024年1月19日に公開されました。
影響: 8.5.7 から 8.5.63
2021年2月2日 Apache Tomcat 8.5.63 で修正済み
注: 以下の問題はApache Tomcat 8.5.62で修正されましたが、8.5.62リリース候補のリリース投票は通過しませんでした。したがって、これらの問題に対する修正を含むバージョンを取得するにはユーザーは8.5.63をダウンロードする必要がありますが、バージョン8.5.62は影響を受けるバージョンリストには含まれていません。
低: CVE-2020-9484の修正が不完全 CVE-2021-25329
CVE-2020-9484の修正は不完全でした。非常に稀な設定の境界ケースを使用した場合、Tomcatインスタンスは依然としてCVE-2020-9484に対して脆弱でした。なお、以前公開されたCVE-2020-9484の前提条件およびCVE-2020-9484の非アップグレード緩和策もこの問題に適用されます。
これはコミット93f0cc40で修正されました。
この問題は、2021年1月12日にViettel Cyber Security の Trung Pham によって Apache Tomcat Security Team に報告されました。この問題は2021年3月1日に公開されました。
影響: 8.5.0 から 8.5.61
重要: h2c を伴うリクエストの混同 (Request mix-up with h2c) CVE-2021-25122
新しい h2c 接続リクエストに応答する際、Apache Tomcat はリクエストヘッダーと少量のリクエストボディをあるリクエストから別のリクエストへと重複させることがあり、これによりユーザー A とユーザー B の両方がユーザー A のリクエストの結果を見ることが可能になる可能性がありました。
これはコミットbb0e7c1eで修正されました。
この問題は、2021年1月11日にApache Tomcat Securityチームによって特定されました。この問題は2021年3月1日に公開されました。
影響: 8.5.0 から 8.5.61
2020年11月17日 Apache Tomcat 8.5.60 で修正済み
重要: 情報漏洩 (Information disclosure) CVE-2021-24122
NTFSファイルシステムを使用してネットワークロケーションからリソースを提供する場合、一部の構成においてセキュリティ制約をバイパスしたり、JSPのソースコードを閲覧したりすることが可能でした。根本原因は、JRE API File.getCanonicalPath()
の予期せぬ動作であり、これは特定の状況におけるWindows API (FindFirstFileW
) の一貫性のない動作によって引き起こされました。
これはコミット920dddbdで修正されました。
この問題は、2020年10月26日にIlja BranderによってApache Tomcat Securityチームに報告されました。この問題は2021年1月14日に公開されました。
影響: 8.5.0 から 8.5.59
中: HTTP/2 リクエストヘッダーの混同 (request header mix-up) CVE-2020-17527
問題64830の調査中に、Apache TomcatがHTTP/2接続で受信した前のストリームからのHTTPリクエストヘッダー値を、後続のストリームに関連付けられたリクエストに対して再利用する可能性があることが発見されました。これはエラーとHTTP/2接続のクローズにつながる可能性が最も高いですが、リクエスト間で情報が漏洩する可能性がありました。
これはコミット21e34086で修正されました。
この問題は、2020年11月10日にApache Tomcat Securityチームによって特定されました。この問題は2020年12月3日に公開されました。
影響: 8.5.0 から 8.5.59
2020年9月15日 Apache Tomcat 8.5.58 で修正済み
中: HTTP/2 リクエストの混同 (request mix-up) CVE-2020-13943
HTTP/2クライアントが接続の合意済み最大同時ストリーム数を超過した場合(HTTP/2プロトコル違反)、その接続で行われた後続のリクエストに、意図したヘッダーではなく、以前のリクエストからのHTTPヘッダー(HTTP/2疑似ヘッダーを含む)が含まれる可能性がありました。これにより、ユーザーが予期せぬリソースに対する応答を受け取ることがありました。
これはコミット9d7def06で修正されました。
この問題は、2020年7月23日にApache Tomcat Securityチームによって特定されました。この問題は2020年10月12日に公開されました。
影響: 8.5.0 から 8.5.57
2020年7月5日 Apache Tomcat 8.5.57 で修正済み
重要: WebSocket DoS CVE-2020-13935
WebSocketフレーム内のペイロード長が正しく検証されませんでした。無効なペイロード長は無限ループを引き起こす可能性がありました。複数の無効なペイロード長を持つリクエストはサービス運用妨害につながる可能性がありました。
これはコミット12d71567で修正されました。
この問題は、2020年6月28日にApache Bugzillaインスタンスを通じて公開報告され、高CPU使用率への言及は含まれていましたが、サービス運用妨害への具体的な言及はありませんでした。関連するDoSのリスクは、同日にApache Tomcat Security Teamによって特定されました。この問題は2020年7月14日に公開されました。
影響: 8.5.0 から 8.5.56
中: HTTP/2 DoS CVE-2020-13934
h2cダイレクト接続は、HTTP/2へのアップグレード後にHTTP/1.1プロセッサを解放しませんでした。このようなリクエストが十分な数行われた場合、OutOfMemoryExceptionが発生し、サービス運用妨害につながる可能性がありました。
これはコミット923d8345で修正されました。
この問題は、2020年6月22日にApache Tomcat Usersメーリングリストを通じて公開報告されましたが、DoSの可能性については言及されていませんでした。問題を再現するために必要な手順を特定するためのさらなる議論の後、問題の根本原因と関連するDoSのリスクは、2020年6月26日にApache Tomcat Security Teamによって特定されました。この問題は2020年7月14日に公開されました。
影響: 8.5.1 から 8.5.56
2020年6月7日 Apache Tomcat 8.5.56 で修正済み
重要: HTTP/2 DoS CVE-2020-11996
特別に細工されたHTTP/2リクエストのシーケンスは、数秒間にわたる高いCPU使用率を引き起こす可能性がありました。同時HTTP/2接続でそのようなリクエストが十分な数行われた場合、サーバーが応答不能になる可能性がありました。
これはコミットc8acd2abで修正されました。
この問題は、2020年5月21日にApache Tomcat Usersメーリングリストを通じて公開報告されましたが、DoSの可能性については言及されていませんでした。DoSのリスクは、同日にApache Tomcat Security Teamによって特定されました。この問題は2020年6月25日に公開されました。
影響: 8.5.0 から 8.5.55
2020年5月11日 Apache Tomcat 8.5.55 で修正済み
重要: セッション永続化を介したリモートコード実行 (Remote Code Execution via session persistence) CVE-2020-9484
もし
- 攻撃者がサーバー上のファイルの内容と名前を制御できる場合; および
- サーバーが
FileStore
とともにPersistenceManager
を使用するように構成されている場合; および
PersistenceManager
がsessionAttributeValueClassNameFilter="null"
(SecurityManager
を使用しない限りデフォルト)または攻撃者が提供したオブジェクトの逆シリアル化を許可する十分緩いフィルターで構成されている場合; および
- 攻撃者が
FileStore
によって使用されるストレージ場所から攻撃者が制御するファイルへの相対ファイルパスを知っている場合;
特別に細工されたリクエストを使用することで、攻撃者は制御下にあるファイルの逆シリアル化を介してリモートコード実行をトリガーすることが可能になります。
注: 上記の条件すべてが満たされた場合にのみ攻撃は成功します。
8.5.35以降にアップグレードする代替策として、ユーザーはPersistenceManager
をsessionAttributeValueClassNameFilter
の適切な値で設定し、アプリケーションによって提供される属性のみがシリアル化および逆シリアル化されるようにすることができます。
これはコミットec08af18で修正されました。
この問題は、2020年4月12日にpdd security research の jarvis threedr3am によって Apache Tomcat Security Team に報告されました。この問題は2020年5月20日に公開されました。
影響: 8.5.0 から 8.5.54
2020年2月11日 Apache Tomcat 8.5.51 で修正済み
重要: AJP リクエストインジェクションおよび潜在的なリモートコード実行 (AJP Request Injection and potential Remote Code Execution) CVE-2020-1938
Apache JServ Protocol (AJP) を使用する場合、Apache Tomcat への着信接続を信頼する際には注意が必要です。Tomcat は AJP 接続を、例えば同様の HTTP 接続よりも高い信頼性を持つものとして扱います。このような接続が攻撃者に利用可能な場合、驚くべき方法で悪用される可能性があります。Tomcat 8.5.51 以前では、Tomcat はデフォルトで、設定されたすべての IP アドレスでリッスンする AJP コネクターを有効にして出荷されていました。このコネクターは、不要な場合は無効にすることが期待されていました(そしてセキュリティガイドでも推奨されていました)。
この脆弱性報告以前に、攻撃者がAJPポートに直接アクセスできる既知のリスクは次のとおりでした。
- クライアントIPアドレスに基づいたセキュリティチェックの回避
- Tomcatがリバースプロキシによって提供される認証データを信頼するように設定されている場合、ユーザー認証の回避
この脆弱性報告は、以下のことを可能にするメカニズムを特定しました。
- WEB-INFおよびMETA-INFディレクトリの下、またはServletContext.getResourceAsStream()を介して到達可能なその他の場所を含む、Webアプリケーション内のどこからでも任意のファイルを返すこと
- Webアプリケーション内の任意のファイルをJSPとして処理すること
さらに、Webアプリケーションがファイルアップロードを許可し、それらのファイルをWebアプリケーション内に保存した場合(または攻撃者が他の方法でWebアプリケーションのコンテンツを制御できた場合)、これは、ファイルをJSPとして処理する能力と相まって、リモートコード実行を可能にしました。
重要な注意点として、緩和策が必要となるのは、AJPポートが信頼できないユーザーからアクセス可能な場合のみです。防御を強化し、任意のファイルを返したりJSPとして実行したりできる経路をブロックしたいユーザーは、Apache Tomcat 9.0.31以降にアップグレードしてください。Tomcat 8.5.51以降では、デフォルトのAJPコネクタ構成にいくつかの変更が加えられ、デフォルト構成が強化されたことに注意してください。その結果、8.5.51以降にアップグレードするユーザーは、構成に小さな変更を加える必要がある可能性があります。
これはコミット69c56080、b962835f、5a5494f0、9be57601、64159aa1、および03c43612で修正されました。
この問題は、2020年1月3日にApache Tomcat Security Teamに報告されました。この問題は2020年2月24日に公開されました。
影響: 8.5.0 から 8.5.50
低: HTTP リクエストスマグリング (HTTP Request Smuggling) CVE-2020-1935
HTTPヘッダー解析コードは、行末 (EOL) 解析に特定のアプローチを使用しており、一部の無効なHTTPヘッダーが有効なものとして解析されることを許容していました。これにより、Tomcatが特定の方式で無効なTransfer-Encodingヘッダーを誤って処理するリバースプロキシの背後に配置されている場合、HTTPリクエストスマグリングの可能性につながりました。このようなリバースプロキシは考えにくいとされています。
これはコミット8fbe2e96で修正されました。
この問題は、2019年12月25日に@ZeddYuによってApache Tomcat Security Teamに報告されました。この問題は2020年2月24日に公開されました。
影響: 8.5.0 から 8.5.50
低: HTTP リクエストスマグリング (HTTP Request Smuggling) CVE-2019-17569
8.5.48でのリファクタリングにより、リグレッションが導入されました。このリグレッションの結果、無効なTransfer-Encodingヘッダーが誤って処理され、Tomcatが特定の方式で無効なTransfer-Encodingヘッダーを誤って処理するリバースプロキシの背後に配置されている場合、HTTPリクエストスマグリングの可能性につながりました。このようなリバースプロキシは考えにくいとされています。
これはコミット959f1dfdで修正されました。
この問題は、2019年12月12日に@ZeddYuによってApache Tomcat Security Teamに報告されました。この問題は2020年2月24日に公開されました。
影響: 8.5.48 から 8.5.50
2019年12月12日 Apache Tomcat 8.5.50 で修正済み
低: セッションフィクセーション (Session fixation) CVE-2019-17563
FORM認証を使用している場合、攻撃者がセッションフィクセーション攻撃を実行できる狭い期間がありました。この期間は、実用的な悪用には狭すぎると考えられましたが、念のため、この問題はセキュリティ脆弱性として扱われました。
これはコミットe19a202eで修正されました。
この問題は、2019年11月19日にWilliam Marlow (IBM) によって Apache Tomcat Security Team に報告されました。この問題は2019年12月18日に公開されました。
影響: 8.5.0 から 8.5.49
2019年11月21日 Apache Tomcat 8.5.49 で修正済み
注: 以下の問題は Apache Tomcat 8.0.48 で修正されましたが、8.0.48 リリース候補のリリース投票は通過しませんでした。したがって、この問題に対する修正を含むバージョンを取得するにはユーザーは 8.0.49 をダウンロードする必要がありますが、バージョン 8.0.48 は影響を受けるバージョンリストには含まれていません。
中: ローカル特権昇格 (Local Privilege Escalation) CVE-2019-12418
TomcatがJMX Remote Lifecycle Listenerで構成されている場合、Tomcatプロセスまたは構成ファイルへのアクセス権を持たないローカル攻撃者がRMIレジストリを操作して中間者攻撃を実行し、JMXインターフェースへのアクセスに使用されるユーザー名とパスワードを傍受することが可能でした。攻撃者はこれらの資格情報を使用してJMXインターフェースにアクセスし、Tomcatインスタンスを完全に制御することができました。
JMX Remote Lifecycle Listener は今後の Tomcat リリースで非推奨となり、Tomcat 10 から削除され、2020 年 12 月 31 日以降にはすべての Tomcat リリースから削除される可能性があります。
ユーザーは、この問題をリモートで悪用可能にするJREの脆弱性であるCVE-2019-2684にも注意する必要があります。
これはコミットa91d7db4で修正されました。
この問題は、2019年10月10日にViettel Cyber Security の An Trinh によって Apache Tomcat Security Team に報告されました。この問題は2019年12月18日に公開されました。
影響: 8.5.0 から 8.5.47
2019年5月13日 Apache Tomcat 8.5.41 で修正済み
重要: サービス運用妨害 (Denial of Service) CVE-2019-10072
CVE-2019-0199の修正は不完全であり、書き込み時のHTTP/2接続ウィンドウ枯渇に対処していませんでした。接続ウィンドウ(ストリーム0)に対するWINDOW_UPDATEメッセージを送信しないことにより、クライアントはサーバー側のスレッドをブロックさせ、最終的にスレッド枯渇とDoSにつながる可能性がありました。
これはコミット0bcd69c9および8d14c6f2で修正されました。
この問題は、2019年4月26日にTrend Micro の Zero Day Initiative と連携しているTrend Micro Security Research の John Simpson によって Apache Tomcat Security Team に報告されました。この問題は2019年6月20日に公開されました。
影響: 8.5.0 から 8.5.40
2019年4月12日 Apache Tomcat 8.5.40 で修正済み
重要: Windows におけるリモートコード実行 (Remote Code Execution on Windows) CVE-2019-0232
Windows上でenableCmdLineArgumentsを有効にして実行している場合、CGI ServletはJREがコマンドライン引数をWindowsに渡す方法のバグによりリモートコード実行に対して脆弱です。CGI Servletはデフォルトで無効になっています。JREの動作の詳細については、Markus WulftangeのブログとアーカイブされたMSDNブログを参照してください。
これはコミット5bc4e6d7で修正されました。
この問題は、Nightwatch Cybersecurity Research によって特定され、EU FOSSA-2 プロジェクトが後援するバグバウンティプログラムを通じて2019年3月3日にApache Tomcatセキュリティチームに報告されました。この問題は2019年4月10日に公開されました。
影響: 8.5.0 から 8.5.39
低: SSI printenv における XSS CVE-2019-0221
SSI の printenv コマンドは、ユーザー提供データをエスケープせずにエコーするため、XSS に対して脆弱です。SSI はデフォルトで無効になっています。printenv コマンドはデバッグ用であり、本番ウェブサイトに存在することは考えにくいです。
これはコミット4fcdf706で修正されました。
この問題は、Nightwatch Cybersecurity Research によって特定され、EU FOSSA-2 プロジェクトが後援するバグバウンティプログラムを通じて2019年3月7日にApache Tomcatセキュリティチームに報告されました。この問題は2019年5月17日に公開されました。
影響: 8.5.0 から 8.5.39
2019年2月8日 Apache Tomcat 8.5.38 で修正済み
重要: サービス運用妨害 (Denial of Service) CVE-2019-0199
HTTP/2実装は、過剰な数のSETTINGS
フレームを持つストリームを受け入れ、クライアントがリクエスト/レスポンスデータを読み書きすることなくストリームを開いたままにすることを許可していました。Servlet APIのブロッキングI/Oを利用するリクエストのためにストリームを開いたままにすることにより、クライアントはサーバー側のスレッドをブロックさせ、最終的にスレッド枯渇とDoSにつながる可能性がありました。
これはリビジョン1852707、1852711、1852712、1852713、1852714、1852715、1852717、1852718、1852719、1852722、1852723、1852724、および60a3af17で修正されました。
この問題は、2019年1月4日にRed Hat, Inc.のMichal Karm BabacekによってApache Tomcat Security Teamに報告され、追加の問題はTomcat Security Teamによって特定されました。この問題は2019年3月25日に公開されました。
影響: 8.5.0 から 8.5.37
2018年9月10日 Apache Tomcat 8.5.34 で修正済み
中: オープンリダイレクト (Open Redirect) CVE-2018-11784
デフォルトサーブレットがディレクトリへのリダイレクト(例:ユーザーが/foo
をリクエストしたときに/foo/
へリダイレクト)を返した場合、特別に細工されたURLを使用して、攻撃者が選択した任意のURIへリダイレクトを生成させることが可能でした。
これはリビジョン1840056で修正されました。
この問題は、2018年8月28日にSergey BobrovによってApache Tomcat Security Teamに報告され、2018年10月3日に公開されました。
影響: 8.5.0 から 8.5.33
2018年7月6日 Apache Tomcat 8.0.53 で修正済み
低: WebSocket クライアントにおけるホスト名検証の欠落 (host name verification missing in WebSocket client) CVE-2018-8034
WebSocketクライアントでTLSを使用する際のホスト名検証が欠落していました。現在、デフォルトで有効になっています。
これはリビジョン1833759で修正されました。
この問題は、2018年6月11日に公開報告され、2018年7月22日に正式に脆弱性として発表されました。
影響: 8.0.0.RC1 から 8.0.52
低: CORS フィルターのデフォルト設定が安全でない (CORS filter has insecure defaults) CVE-2018-8014
CORSフィルターのデフォルト設定は安全ではなく、すべてのオリジンに対してsupportsCredentials
を有効にしています。CORSフィルターを使用するユーザーは、デフォルト設定を使用するのではなく、自身の環境に合わせて適切に設定していることが期待されます。したがって、ほとんどのユーザーはこの問題の影響を受けないと考えられます。
これはリビジョン1831729で修正されました。
この問題は、2018年5月1日に公開報告され、2018年5月16日に正式に脆弱性として発表されました。
2018年6月26日 Apache Tomcat 8.5.32 で修正済み
重要: 情報漏洩 (Information Disclosure) CVE-2018-8037
非同期リクエストがアプリケーションによって完了されると同時に、コンテナが非同期タイムアウトをトリガーした場合、競合状態が発生し、ユーザーが別のユーザー向けに意図されたレスポンスを見てしまう可能性がありました。また、NIOおよびNIO2コネクタには追加の問題があり、アプリケーションによって非同期リクエストが完了され、同時にコンテナによってタイムアウトされた場合に、接続のクローズを正しく追跡しませんでした。これも、ユーザーが別のユーザー向けに意図されたレスポンスを見てしまう可能性につながりました。
これはリビジョン1833826、1833832、1837531、および1833907で修正されました。
この問題は、2018年6月16日にDmitry TreskunovによってApache Tomcat Security Teamに報告され、2018年7月22日に公開されました。
影響: 8.5.5 から 8.5.31
低: WebSocket クライアントにおけるホスト名検証の欠落 (host name verification missing in WebSocket client) CVE-2018-8034
WebSocketクライアントでTLSを使用する際のホスト名検証が欠落していました。現在、デフォルトで有効になっています。
これはリビジョン1833758で修正されました。
この問題は、2018年6月11日に公開報告され、2018年7月22日に正式に脆弱性として発表されました。
影響: 8.5.0 から 8.5.31
低: CORS フィルターのデフォルト設定が安全でない (CORS filter has insecure defaults) CVE-2018-8014
CORSフィルターのデフォルト設定は安全ではなく、すべてのオリジンに対してsupportsCredentials
を有効にしています。CORSフィルターを使用するユーザーは、デフォルト設定を使用するのではなく、自身の環境に合わせて適切に設定していることが期待されます。したがって、ほとんどのユーザーはこの問題の影響を受けないと考えられます。
これはリビジョン1831728で修正されました。
この問題は、2018年5月1日に公開報告され、2018年5月16日に正式に脆弱性として発表されました。
2018年5月8日 Apache Tomcat 8.0.52 で修正済み
重要: UTF-8 デコーダのバグにより DoS につながる可能性 (A bug in the UTF-8 decoder can lead to DoS) CVE-2018-1336
補助文字を含むUTF-8デコーダにおけるオーバーフローの不適切な処理により、デコーダで無限ループが発生し、サービス運用妨害につながる可能性がありました。
これはリビジョン1830375で修正されました。
この問題は、2018年4月6日に公開報告され、2018年7月22日に正式に脆弱性として発表されました。
影響: 8.0.0.RC1 から 8.0.51
2018年5月4日 Apache Tomcat 8.5.31 で修正済み
重要: UTF-8 デコーダのバグにより DoS につながる可能性 (A bug in the UTF-8 decoder can lead to DoS) CVE-2018-1336
補助文字を含むUTF-8デコーダにおけるオーバーフローの不適切な処理により、デコーダで無限ループが発生し、サービス運用妨害につながる可能性がありました。
これはリビジョン1830374で修正されました。
この問題は、2018年4月6日に公開報告され、2018年7月22日に正式に脆弱性として発表されました。
影響: 8.5.0 から 8.5.30
2018年2月13日 Apache Tomcat 8.0.50 で修正済み
重要: セキュリティ制約アノテーションの適用が遅すぎる (Security constraint annotations applied too late) CVE-2018-1305
サーブレットのアノテーションによって定義されたセキュリティ制約は、サーブレットがロードされた後にのみ適用されました。このように定義されたセキュリティ制約はURLパターンおよびその下にあるすべてのURLに適用されるため、サーブレットのロード順によっては、一部のセキュリティ制約が適用されない可能性がありました。これにより、リソースがアクセスを許可されていないユーザーに公開される可能性がありました。
これはリビジョン1823319および1824359で修正されました。
この問題は、2018年2月1日にApache Tomcat Securityチームによって特定され、2018年2月23日に公開されました。
影響: 8.0.0.RC1 から 8.0.49
重要: コンテキストルートにマップされたセキュリティ制約が無視される (Security constraints mapped to context root are ignored) CVE-2018-1304
コンテキストルートに正確にマップされる "" (空文字列) のURLパターンは、セキュリティ制約定義の一部として使用された場合、正しく処理されませんでした。これにより、制約が無視されました。したがって、保護されるべきWebアプリケーションリソースに、許可されていないユーザーがアクセスできる可能性がありました。空文字列のURLパターンを持つセキュリティ制約のみが影響を受けました。
これはリビジョン1823308で修正されました。
この問題は、2018年1月31日に62067として公開報告され、セキュリティ上の影響は同日にApache Tomcat Security Teamによって特定されました。2018年2月23日に公開されました。
影響: 8.0.0.RC1 から 8.0.49
2018年2月11日 Apache Tomcat 8.5.28 で修正済み
重要: セキュリティ制約アノテーションの適用が遅すぎる (Security constraint annotations applied too late) CVE-2018-1305
サーブレットのアノテーションによって定義されたセキュリティ制約は、サーブレットがロードされた後にのみ適用されました。このように定義されたセキュリティ制約はURLパターンおよびその下にあるすべてのURLに適用されるため、サーブレットのロード順によっては、一部のセキュリティ制約が適用されない可能性がありました。これにより、リソースがアクセスを許可されていないユーザーに公開される可能性がありました。
これはリビジョン1823314および1824358で修正されました。
この問題は、2018年2月1日にApache Tomcat Securityチームによって特定され、2018年2月23日に公開されました。
影響: 8.5.0 から 8.5.27
重要: コンテキストルートにマップされたセキュリティ制約が無視される (Security constraints mapped to context root are ignored) CVE-2018-1304
コンテキストルートに正確にマップされる "" (空文字列) のURLパターンは、セキュリティ制約定義の一部として使用された場合、正しく処理されませんでした。これにより、制約が無視されました。したがって、保護されるべきWebアプリケーションリソースに、許可されていないユーザーがアクセスできる可能性がありました。空文字列のURLパターンを持つセキュリティ制約のみが影響を受けました。
これはリビジョン1823307で修正されました。
この問題は、2018年1月31日に62067として公開報告され、セキュリティ上の影響は同日にApache Tomcat Security Teamによって特定されました。2018年2月23日に公開されました。
影響: 8.5.0 から 8.5.27
2017年12月12日 Apache Tomcat 8.0.48 で修正済み
低: CGI 検索アルゴリズムの誤った文書化 (Incorrectly documented CGI search algorithm) CVE-2017-15706
バグ61201の修正の一環として、CGIサーブレットが実行するスクリプトを特定するために使用する検索アルゴリズムの記述が更新されました。この更新は正しくありませんでした。その結果、一部のスクリプトは期待通りに実行されず、他のスクリプトは予期せず実行された可能性があります。この点に関してCGIサーブレットの動作は変更されていないことに注意してください。動作の文書化のみが誤っており、修正されました。
これはリビジョン1814827で修正されました。
この問題は、2017年9月17日にJan Michael GreinerによってApache Tomcat Security Teamに報告され、2018年1月31日に公開されました。
影響: 8.0.45 から 8.0.47
2017年11月30日 Apache Tomcat 8.5.24 で修正済み
低: CGI 検索アルゴリズムの誤った文書化 (Incorrectly documented CGI search algorithm) CVE-2017-15706
バグ61201の修正の一環として、CGIサーブレットが実行するスクリプトを特定するために使用する検索アルゴリズムの記述が更新されました。この更新は正しくありませんでした。その結果、一部のスクリプトは期待通りに実行されず、他のスクリプトは予期せず実行された可能性があります。この点に関してCGIサーブレットの動作は変更されていないことに注意してください。動作の文書化のみが誤っており、修正されました。
これはリビジョン1814826で修正されました。
この問題は、2017年9月17日にJan Michael GreinerによってApache Tomcat Security Teamに報告され、2018年1月31日に公開されました。
影響: 8.5.16 から 8.5.23
2017年10月4日 Apache Tomcat 8.0.47 で修正済み
重要: リモートコード実行 (Remote Code Execution) CVE-2017-12617
HTTP PUTが有効になっている状態で(例: デフォルトサーブレットのreadonly
初期化パラメータをfalseに設定するなどして)実行されている場合、特別に細工されたリクエストを介してJSPファイルをサーバーにアップロードすることが可能でした。このJSPはその後リクエストされ、含まれるコードはサーバーによって実行される可能性がありました。
これはリビジョン1809921で修正されました。
この問題は、2017年9月20日に最初に公開報告され、その後Apache Tomcat Security Teamに複数の報告が寄せられました。
影響: 8.0.0.RC1 から 8.0.46
2017年10月1日 Apache Tomcat 8.5.23 で修正済み
重要: リモートコード実行 (Remote Code Execution) CVE-2017-12617
HTTP PUTが有効になっている状態で(例: デフォルトサーブレットのreadonly
初期化パラメータをfalseに設定するなどして)実行されている場合、特別に細工されたリクエストを介してJSPファイルをサーバーにアップロードすることが可能でした。このJSPはその後リクエストされ、含まれるコードはサーバーによって実行される可能性がありました。
これはリビジョン1809673、1809675、および1809896で修正されました。
この問題は、2017年9月20日に最初に公開報告され、その後Apache Tomcat Security Teamに複数の報告が寄せられました。
影響: 8.5.0 から 8.5.22
2017年7月1日 Apache Tomcat 8.0.45 で修正済み
中: キャッシュ汚染 (Cache Poisoning) CVE-2017-7674
CORSフィルタは、Originに応じてレスポンスが異なることを示すHTTP Varyヘッダーを追加しませんでした。これにより、一部の状況でクライアント側およびサーバー側のキャッシュ汚染が可能となりました。
これはリビジョン1795815で修正されました。
この問題は、2017年5月16日にバグ61101として報告されました。この問題の全体的な影響は、同日にTomcat Security Teamによって特定されました。この問題は2017年8月10日に公開されました。
影響: 8.0.0.RC1 から 8.0.44
2017年6月26日 Apache Tomcat 8.5.16 で修正済み
重要: セキュリティ制約バイパス (Security Constraint Bypass) CVE-2017-7675
HTTP/2実装は、ディレクトリトラバーサル攻撃を防ぐための多数のセキュリティチェックをバイパスしました。そのため、特別に細工されたURLを使用してセキュリティ制約をバイパスすることが可能でした。
これはリビジョン1796091で修正されました。
この問題は、2017年5月24日にバグ61120においてURLパスパラメータの処理の失敗として最初に報告されました。この問題の全体的な影響は、同日にTomcat Security Teamによって特定されました。この問題は2017年8月10日に公開されました。
影響: 8.5.0 から 8.5.15
中: キャッシュ汚染 (Cache Poisoning) CVE-2017-7674
CORSフィルタは、Originに応じてレスポンスが異なることを示すHTTP Varyヘッダーを追加しませんでした。これにより、一部の状況でクライアント側およびサーバー側のキャッシュ汚染が可能となりました。
これはリビジョン 1795814 で修正されました。
この問題は、2017年5月16日にバグ61101として報告されました。この問題の全体的な影響は、同日にTomcat Security Teamによって特定されました。この問題は2017年8月10日に公開されました。
影響: 8.5.0 から 8.5.15
2017年5月16日 Apache Tomcat 8.0.44 で修正済み
重要: セキュリティ制約のバイパス CVE-2017-5664
Java Servlet Specification のエラーページメカニズムは、エラーが発生し、そのエラーに対してエラーページが設定されている場合、元のリクエストとレスポンスがエラーページに転送されることを要求します。これは、リクエストが元の HTTP メソッドでエラーページに提示されることを意味します。
エラーページが静的ファイルである場合、実際の HTTP メソッドに関わらず、GET リクエストを処理するかのようにファイルのコンテンツを配信するのが期待される動作です。Tomcat の Default Servlet はこれを行いませんでした。元のリクエストによっては、DefaultServlet が書き込みを許可するように設定されている場合、カスタムエラーページの置き換えや削除を含む、静的エラーページに予期せぬ望ましくない結果をもたらす可能性がありました。
ユーザー提供のエラーページに関する注記
- 明示的にコード化されていない限り、JSP は HTTP メソッドを無視します。エラーページとして使用される JSP は、実際のメソッドに関わらず、すべてのエラーディスパッチを GET リクエストとして処理するようにする必要があります。
- デフォルトでは、サーブレットによって生成されるレスポンスは HTTP メソッドに依存します。エラーページとして使用されるカスタムサーブレットは、実際のメソッドに関わらず、すべてのエラーディスパッチを GET リクエストとして処理するようにする必要があります。
これはリビジョン 1793470 および 1793489 で修正されました。
この問題は、Tata Consultancy Services Ltd (インド、ムンバイ) の Aniket Nandkishor Kulkarni 氏により、OPTIONS および TRACE リクエストの制限をバイパスできる脆弱性として、2017年4月21日に Apache Tomcat セキュリティチームに責任を持って報告されました。この問題の完全な影響は、2017年4月24日に Tomcat セキュリティチームによって特定されました。この問題は2017年6月6日に公開されました。
影響を受けるバージョン: 8.0.0.RC1 から 8.0.43
2017年5月10日 Apache Tomcat 8.5.15 で修正済み
重要: セキュリティ制約のバイパス CVE-2017-5664
Java Servlet Specification のエラーページメカニズムは、エラーが発生し、そのエラーに対してエラーページが設定されている場合、元のリクエストとレスポンスがエラーページに転送されることを要求します。これは、リクエストが元の HTTP メソッドでエラーページに提示されることを意味します。
エラーページが静的ファイルである場合、実際の HTTP メソッドに関わらず、GET リクエストを処理するかのようにファイルのコンテンツを配信するのが期待される動作です。Tomcat の Default Servlet はこれを行いませんでした。元のリクエストによっては、DefaultServlet が書き込みを許可するように設定されている場合、カスタムエラーページの置き換えや削除を含む、静的エラーページに予期せぬ望ましくない結果をもたらす可能性がありました。
ユーザー提供のエラーページに関する注記
- 明示的にコード化されていない限り、JSP は HTTP メソッドを無視します。エラーページとして使用される JSP は、実際のメソッドに関わらず、すべてのエラーディスパッチを GET リクエストとして処理するようにする必要があります。
- デフォルトでは、サーブレットによって生成されるレスポンスは HTTP メソッドに依存します。エラーページとして使用されるカスタムサーブレットは、実際のメソッドに関わらず、すべてのエラーディスパッチを GET リクエストとして処理するようにする必要があります。
これはリビジョン 1793469 および 1793488 で修正されました。
この問題は、Tata Consultancy Services Ltd (インド、ムンバイ) の Aniket Nandkishor Kulkarni 氏により、OPTIONS および TRACE リクエストの制限をバイパスできる脆弱性として、2017年4月21日に Apache Tomcat セキュリティチームに責任を持って報告されました。この問題の完全な影響は、2017年4月24日に Tomcat セキュリティチームによって特定されました。この問題は2017年6月6日に公開されました。
影響を受けるバージョン: 8.5.0 から 8.5.14
2017年4月2日 Apache Tomcat 8.0.43 で修正済み
重要: 情報漏洩 CVE-2017-5647
send file が使用された際のパイプラインリクエストの処理におけるバグにより、前のリクエストの send file 処理が完了した際にパイプラインリクエストが失われました。これにより、誤ったリクエストに対してレスポンスが送信されているように見える可能性がありました。例えば、リクエスト A、B、C を送信したユーザーエージェントが、リクエスト A に対しては正しいレスポンス、リクエスト B に対してはリクエスト C のレスポンス、リクエスト C に対してはレスポンスなし、という状況を見る可能性がありました。
これはリビジョン 1788999 で修正されました。
この問題は、2017年3月20日に Apache Tomcat セキュリティチームによって特定され、2017年4月10日に公開されました。
影響を受けるバージョン: 8.0.0.RC1 から 8.0.42
2017年3月30日 Apache Tomcat 8.5.13 で修正済み
重要: 情報漏洩 CVE-2017-5651
8.5.x 以降の HTTP コネクタのリファクタリングにより、send file 処理にリグレッションが導入されました。send file 処理が迅速に完了した場合、プロセッサがプロセッサキャッシュに二重に追加される可能性がありました。これにより、同じプロセッサが複数のリクエストに使用され、その結果、予期せぬエラーやレスポンスの混同につながる可能性がありました。
これはリビジョン 1788546 で修正されました。
この問題は、2017年3月24日に Apache Tomcat セキュリティチームによって特定され、2017年4月10日に公開されました。
影響を受けるバージョン: 8.5.0 から 8.5.12
重要: サービス拒否 (Denial of Service) CVE-2017-5650
HTTP/2 GOAWAY フレームの接続処理は、アプリケーションがさらにデータを書き込むことを許可する前に、現在 WINDOW_UPDATE を待機しているその接続に関連付けられたストリームを閉じませんでした。これらの待機ストリームはそれぞれスレッドを消費しました。したがって、悪意のあるクライアントは、利用可能なすべての処理スレッドを消費する一連の HTTP/2 リクエストを構築することができました。
これはリビジョン 1788480 で修正されました。
この問題は、2017年3月11日に Chun Han Hsiao 氏によって Apache Tomcat セキュリティチームに報告され、2017年4月10日に公開されました。
影響を受けるバージョン: 8.5.0 から 8.5.12
重要: 情報漏洩 CVE-2017-5647
send file が使用された際のパイプラインリクエストの処理におけるバグにより、前のリクエストの send file 処理が完了した際にパイプラインリクエストが失われました。これにより、誤ったリクエストに対してレスポンスが送信されているように見える可能性がありました。例えば、リクエスト A、B、C を送信したユーザーエージェントが、リクエスト A に対しては正しいレスポンス、リクエスト B に対してはリクエスト C のレスポンス、リクエスト C に対してはレスポンスなし、という状況を見る可能性がありました。
これはリビジョン 1788932 で修正されました。
この問題は、2017年3月20日に Apache Tomcat セキュリティチームによって特定され、2017年4月10日に公開されました。
影響を受けるバージョン: 8.5.0 から 8.5.12
2017年3月14日 Apache Tomcat 8.0.42 で修正済み
低: 情報漏洩 CVE-2017-5648
バグ 60718 を調査中に、アプリケーションリスナーへの一部の呼び出しが適切なファサードオブジェクトを使用していないことが判明しました。SecurityManager の下で信頼できないアプリケーションを実行している場合、その信頼できないアプリケーションがリクエストまたはレスポンスオブジェクトへの参照を保持し、それによって他の Web アプリケーションに関連する情報にアクセスしたり変更したりする可能性がありました。
これはリビジョン 1785776 で修正されました。
この問題は、2017年3月20日に Apache Tomcat セキュリティチームによって特定され、2017年4月10日に公開されました。
影響を受けるバージョン: 8.0.0.RC1 から 8.0.41
2017年3月13日 Apache Tomcat 8.5.12 で修正済み
低: 情報漏洩 CVE-2017-5648
バグ 60718 を調査中に、アプリケーションリスナーへの一部の呼び出しが適切なファサードオブジェクトを使用していないことが判明しました。SecurityManager の下で信頼できないアプリケーションを実行している場合、その信頼できないアプリケーションがリクエストまたはレスポンスオブジェクトへの参照を保持し、それによって他の Web アプリケーションに関連する情報にアクセスしたり変更したりする可能性がありました。
これはリビジョン 1785775 で修正されました。
この問題は、2017年3月20日に Apache Tomcat セキュリティチームによって特定され、2017年4月10日に公開されました。
影響を受けるバージョン: 8.5.0 から 8.5.11
2017年1月24日 Apache Tomcat 8.0.41 で修正済み
注記: 以下の問題は Apache Tomcat 8.0.40 で修正されましたが、8.0.40 リリース候補のリリース投票は可決されませんでした。したがって、この問題の修正を含むバージョンを入手するには 8.0.41 をダウンロードする必要がありますが、バージョン 8.0.40 は影響を受けるバージョンの一覧には含まれていません。
重要: 情報漏洩 CVE-2016-8745
NIO HTTP コネクタの send file コードのエラー処理におけるバグにより、現在のプロセッサオブジェクトがプロセッサキャッシュに複数回追加されました。これにより、同じプロセッサが同時リクエストに使用される可能性がありました。プロセッサを共有すると、セッション ID やレスポンスボディを含む(ただしこれらに限定されない)リクエスト間の情報漏洩が発生する可能性がありました。
これはリビジョン 1777469 で修正されました。
この問題は、2016年1月3日に Apache Tomcat セキュリティチームによって 8.0.x に影響することが特定され、2017年1月5日に公開されました。
影響を受けるバージョン: 8.0.0.RC1 から 8.0.39
2017年1月16日 Apache Tomcat 8.5.11 で修正済み
注記: 以下の問題は Apache Tomcat 8.5.10 で修正されましたが、8.5.10 リリース候補のリリース投票は可決されませんでした。したがって、この問題の修正を含むバージョンを入手するには 8.5.11 をダウンロードする必要がありますが、バージョン 8.5.10 は影響を受けるバージョンの一覧には含まれていません。
中: 情報漏洩 CVE-2016-8747
ByteBuffer をより広範に使用するためのリファクタリングにより、同じ接続上のリクエスト間で情報が漏洩する可能性のあるリグレッションが導入されました。リバースプロキシの背後で実行されている場合、これによりユーザー間で情報が漏洩する可能性がありました。すべての HTTP コネクタのバリアントが影響を受けますが、HTTP/2 および AJP は影響を受けません。
これはリビジョン 1774166 で修正されました。
この問題は、2016年12月14日に Apache Tomcat セキュリティチームによって特定され、2017年3月13日に公開されました。
影響を受けるバージョン: 8.5.7 から 8.5.9
2016年12月8日 Apache Tomcat 8.5.9 で修正済み
重要: 情報漏洩 CVE-2016-8745
NIO HTTP コネクタの send file コードのエラー処理におけるバグにより、現在のプロセッサオブジェクトがプロセッサキャッシュに複数回追加されました。これにより、同じプロセッサが同時リクエストに使用される可能性がありました。プロセッサを共有すると、セッション ID やレスポンスボディを含む(ただしこれらに限定されない)リクエスト間の情報漏洩が発生する可能性がありました。
これはリビジョン 1771857 で修正されました。
この問題は、2016年12月8日に Apache Tomcat セキュリティチームによって特定され、2016年12月12日に公開されました。
影響を受けるバージョン: 8.5.0 から 8.5.8
2016年11月14日 Apache Tomcat 8.0.39 で修正済み
重要: リモートコード実行 CVE-2016-8735
JmxRemoteLifecycleListener
は、Oracle の CVE-2016-3427 の修正を考慮して更新されていませんでした。そのため、このリスナーを使用する Tomcat インストールは、同様のリモートコード実行の脆弱性に対して脆弱なままでした。この問題は、このリスナーを使用するインストール数が少ないこと、およびリスナーが使用されている場合でも JMX ポートが攻撃者からアクセス可能であることは非常に稀であることから、重要度をクリティカルではなく重要と評価されています。
これはリビジョン 1767656 で修正されました。
この問題は、2016年10月19日に Apache Tomcat セキュリティチームに報告され、2016年11月22日に公開されました。
影響を受けるバージョン: 8.0.0.RC1 から 8.0.38
重要: 情報漏洩 CVE-2016-6816
HTTP リクエストラインをパースするコードは、無効な文字を許可していました。これは、無効な文字を許可するが解釈が異なるプロキシと組み合わせて悪用され、HTTP レスポンスにデータを注入する可能性がありました。HTTP レスポンスを操作することで、攻撃者は Web キャッシュを汚染したり、XSS 攻撃を実行したり、自分のものではないリクエストから機密情報を取得したりする可能性がありました。
これはリビジョン 1767653 で修正されました。
この問題は、2016年10月11日に Apache Tomcat セキュリティチームに報告され、2016年11月22日に公開されました。
影響を受けるバージョン: 8.0.0.RC1 から 8.0.38
2016年11月8日 Apache Tomcat 8.5.8 で修正済み
注記: 以下の問題は Apache Tomcat 8.5.7 で修正されましたが、8.5.7 リリース候補のリリース投票は可決されませんでした。したがって、これらの問題の修正を含むバージョンを入手するには 8.5.8 をダウンロードする必要がありますが、バージョン 8.5.7 は影響を受けるバージョンの一覧には含まれていません。
重要: リモートコード実行 CVE-2016-8735
JmxRemoteLifecycleListener
は、Oracle の CVE-2016-3427 の修正を考慮して更新されていませんでした。そのため、このリスナーを使用する Tomcat インストールは、同様のリモートコード実行の脆弱性に対して脆弱なままでした。この問題は、このリスナーを使用するインストール数が少ないこと、およびリスナーが使用されている場合でも JMX ポートが攻撃者からアクセス可能であることは非常に稀であることから、重要度をクリティカルではなく重要と評価されています。
これはリビジョン 1767646 で修正されました。
この問題は、2016年10月19日に Apache Tomcat セキュリティチームに報告され、2016年11月22日に公開されました。
影響を受けるバージョン: 8.5.0 から 8.5.6
重要: サービス拒否 (Denial of Service) CVE-2016-6817
HTTP/2 ヘッダーパーサーは、利用可能なバッファよりも大きいヘッダーを受信した場合に無限ループに陥りました。これにより、サービス拒否攻撃が可能になりました。
これはリビジョン 1765798 で修正されました。
この問題は、2016年10月10日に 60232 として報告され、同日に Apache Tomcat セキュリティチームによってセキュリティ上の影響が特定されました。2016年11月22日に公開されました。
影響を受けるバージョン: 8.5.0 から 8.5.6
重要: 情報漏洩 CVE-2016-6816
HTTP リクエストラインをパースするコードは、無効な文字を許可していました。これは、無効な文字を許可するが解釈が異なるプロキシと組み合わせて悪用され、HTTP レスポンスにデータを注入する可能性がありました。HTTP レスポンスを操作することで、攻撃者は Web キャッシュを汚染したり、XSS 攻撃を実行したり、自分のものではないリクエストから機密情報を取得したりする可能性がありました。
これはリビジョン 1767645 で修正されました。
この問題は、2016年10月11日に Apache Tomcat セキュリティチームに報告され、2016年11月22日に公開されました。
影響を受けるバージョン: 8.5.0 から 8.5.6
2016年9月5日 Apache Tomcat 8.5.5 および 8.0.37 で修正済み
低: グローバルリソースへの無制限アクセス CVE-2016-6797
ResourceLinkFactory は、Web アプリケーションがグローバル JNDI リソースにアクセスできる範囲を、Web アプリケーションに明示的にリンクされているリソースに制限していませんでした。したがって、明示的な ResourceLink が設定されているかどうかにかかわらず、Web アプリケーションが任意のグローバル JNDI リソースにアクセスできる可能性がありました。
これは 8.5.x ではリビジョン 1757272、8.0.x ではリビジョン 1757273 で修正されました。
この問題は、2016年1月18日に Apache Tomcat セキュリティチームによって特定され、2016年10月27日に公開されました。
影響を受けるバージョン: 8.5.0 から 8.5.4、8.0.0.RC1 から 8.0.36
低: セキュリティマネージャーのバイパス CVE-2016-6796
悪意のある Web アプリケーションは、JSP サーブレットの設定パラメータを操作することで、設定された SecurityManager をバイパスすることができました。
これは 8.5.x ではリビジョン 1758493 および 1763233、8.0.x ではリビジョン 1758494 および 1763234 で修正されました。
この問題は、2015年12月27日に Apache Tomcat セキュリティチームによって特定され、2016年10月27日に公開されました。
影響を受けるバージョン: 8.5.0 から 8.5.4、8.0.0.RC1 から 8.0.36
低: システムプロパティの開示 CVE-2016-6794
SecurityManager が設定されている場合、Web アプリケーションがシステムプロパティを読み取る能力は SecurityManager によって制御されるべきです。Tomcat の設定ファイルのシステムプロパティ置換機能は、悪意のある Web アプリケーションによって SecurityManager をバイパスし、表示されるべきではないシステムプロパティを読み取るために使用される可能性がありました。
これは 8.5.x ではリビジョン 1754726、8.0.x ではリビジョン 1754727 で修正されました。
この問題は、2015年12月27日に Apache Tomcat セキュリティチームによって特定され、2016年10月27日に公開されました。
影響を受けるバージョン: 8.5.0 から 8.5.4、8.0.0.RC1 から 8.0.36
低: セキュリティマネージャーのバイパス CVE-2016-5018
悪意のある Web アプリケーションは、Web アプリケーションからアクセス可能な Tomcat ユーティリティメソッドを介して、設定された SecurityManager をバイパスすることができました。
これは 8.5.x ではリビジョン 1754900 および 1760305、8.0.x ではリビジョン 1754901 および 1760307 で修正されました。
この問題は、HP Enterprise Security Team の Alvaro Munoz 氏と Alexander Mirosh 氏によって発見され、2016年7月5日に Apache Tomcat セキュリティチームに報告されました。2016年10月27日に公開されました。
影響を受けるバージョン: 8.5.0 から 8.5.4、8.0.0.RC1 から 8.0.36
低: タイミング攻撃 CVE-2016-0762
Realm の実装は、提供されたユーザー名が存在しない場合、提供されたパスワードを処理しませんでした。これにより、有効なユーザー名を特定するためのタイミング攻撃が可能になりました。デフォルトの設定には LockOutRealm が含まれており、この脆弱性の悪用を困難にしていることに注意してください。
これは 8.5.x ではリビジョン 1758500、8.0.x ではリビジョン 1758501 で修正されました。
この問題は、2016年1月1日に Apache Tomcat セキュリティチームによって特定され、2016年10月27日に公開されました。
影響を受けるバージョン: 8.5.0 から 8.5.4、8.0.0.RC1 から 8.0.36
2016年6月13日 Apache Tomcat 8.5.3 および 8.0.36 で修正済み
中: サービス拒否 (Denial of Service) CVE-2016-3092
Apache Tomcat は、サーブレット仕様のファイルアップロード要件を実装するために、パッケージ名を変更した Apache Commons FileUpload のコピーを使用しています。Commons FileUpload でサービス拒否の脆弱性が特定されました。これは、マルチパート境界の長さがアップロードされたファイルを読み取るために使用されるバッファ (4096バイト) のサイズをわずかに下回った場合に発生しました。これにより、境界が通常の数十バイトである場合よりも、ファイルアップロード処理に数桁長い時間がかかる可能性がありました。
これは 8.5.x ではリビジョン 1743722、8.0.x ではリビジョン 1743738 で修正されました。
この問題は、TERASOLUNA フレームワーク開発チームによって特定され、2016年5月9日に JPCERT を介して Apache Commons チームに報告されました。2016年6月21日に公開されました。
影響を受けるバージョン: 8.5.0 から 8.5.2、8.0.0.RC1 から 8.0.35
2016年2月8日 Apache Tomcat 8.0.32 で修正済み
注記: 以下の問題は Apache Tomcat 8.0.31 で修正されましたが、8.0.31 リリース候補のリリース投票は可決されませんでした。したがって、これらの問題の修正を含むバージョンを入手するには 8.0.32 をダウンロードする必要がありますが、バージョン 8.0.31 は影響を受けるバージョンの一覧には含まれていません。
低: セッション固定化 CVE-2015-5346
新しいリクエストに使用するために Request
オブジェクトをリサイクルする際に、requestedSessionSSL
フィールドはリサイクルされませんでした。これは、リサイクルされた Request
オブジェクトを使用して処理される次のリクエストで提供されたセッション ID が、本来使用されるべきではない状況で使用される可能性があることを意味しました。これにより、クライアントがセッション ID を制御する能力を得ました。理論的には、これはセッション固定化攻撃の一部として使用される可能性がありましたが、攻撃者が被害者に「正しい」 Request
オブジェクトの使用を強制することができなかったため、達成は困難でした。また、少なくとも1つの Web アプリケーションが SSL セッション ID を HTTP セッション ID として使用するように設定されている必要がありました。これは一般的な設定ではありません。
これはリビジョン 1713185 および 1723506 で修正されました。
この問題は、2014年6月22日に Tomcat セキュリティチームによって特定され、2016年2月22日に公開されました。
影響を受けるバージョン: 8.0.0.RC1 から 8.0.30
中: CSRF トークンの漏洩 CVE-2015-5351
Manager および Host Manager アプリケーションのインデックスページは、Web アプリケーションのルートへの非認証リクエストの結果としてリダイレクトを発行する際に、有効な CSRF トークンを含んでいました。攻撃者が Manager または Host Manager アプリケーションにアクセスできる場合 (通常、これらのアプリケーションは内部ユーザーのみがアクセス可能であり、インターネットには公開されていません)、このトークンは攻撃者によって CSRF 攻撃を構築するために使用される可能性がありました。
これはリビジョン 1720658 および 1720660 で修正されました。
この問題は、2015年12月8日に Tomcat セキュリティチームによって特定され、2016年2月22日に公開されました。
影響を受けるバージョン: 8.0.0.RC1 から 8.0.30
低: セキュリティマネージャーのバイパス CVE-2016-0706
この問題は、セキュリティマネージャーの下で信頼できない Web アプリケーションを実行しているユーザーにのみ影響します。
内部の StatusManagerServlet は、セキュリティマネージャーが設定されている場合に、悪意のある Web アプリケーションによってロードされる可能性がありました。このサーブレットは、展開されているすべてのアプリケーションのリストと、現在処理されているすべてのリクエストの HTTP リクエストラインのリストを悪意のある Web アプリケーションに提供する可能性がありました。これにより、セッション ID など、他の Web アプリケーションからの機密情報が Web アプリケーションに漏洩する可能性がありました。
これはリビジョン 1722800 で修正されました。
この問題は、2015年12月27日に Tomcat セキュリティチームによって特定され、2016年2月22日に公開されました。
影響を受けるバージョン: 8.0.0.RC1 から 8.0.30
中: セキュリティマネージャーのバイパス CVE-2016-0714
この問題は、セキュリティマネージャーの下で信頼できない Web アプリケーションを実行しているユーザーにのみ影響します。
Tomcat はいくつかのセッション永続化メカニズムを提供します。StandardManager
は再起動後もセッションを永続化します。PersistentManager
はセッションをファイル、データベース、またはカスタムの Store
に永続化できます。クラスター実装はセッションをクラスター内の1つ以上の追加ノードに永続化します。これらのメカニズムはすべて、セキュリティマネージャーをバイパスするために悪用される可能性がありました。セッション永続化は、Tomcat 内部コードに割り当てられた権限を持つ Tomcat コードによって実行されます。慎重に作成されたオブジェクトをセッションに配置することで、悪意のある Web アプリケーションは任意のコードの実行をトリガーする可能性がありました。
これはリビジョン 1726196 および 1726203 で修正されました。
この問題は、2015年11月12日に Tomcat セキュリティチームによって特定され、2016年2月22日に公開されました。
影響を受けるバージョン: 8.0.0.RC1 から 8.0.30
中: セキュリティマネージャーのバイパス CVE-2016-0763
この問題は、セキュリティマネージャーの下で信頼できない Web アプリケーションを実行しているユーザーにのみ影響します。
ResourceLinkFactory.setGlobalContext()
はパブリックメソッドであり、セキュリティマネージャーの下で実行されている場合でも Web アプリケーションからアクセス可能でした。これにより、悪意のある Web アプリケーションは悪意のあるグローバルコンテキストを注入することができ、それが他の Web アプリケーションを妨害したり、他の Web アプリケーションが所有するデータを読み書きしたりするために使用される可能性がありました。
これはリビジョン 1725929 で修正されました。
この問題は、2016年1月18日に Tomcat セキュリティチームによって特定され、2016年2月22日に公開されました。
影響を受けるバージョン: 8.0.0.RC1 から 8.0.30
2015年12月6日 Apache Tomcat 8.0.30 で修正済み
低: ディレクトリ開示 CVE-2015-5345
セキュリティ制約によって保護されたディレクトリに、スラッシュで終わらない URL でアクセスした場合、Tomcat はセキュリティ制約を処理する前に、末尾のスラッシュを付けた URL にリダイレクトし、それによってディレクトリの存在を確認していました。したがって、ユーザーがディレクトリを見る許可がない場合でも、ディレクトリが存在するかどうかを判断することが可能でした。この問題は、Web アプリケーションのルートでも発生し、ユーザーがアクセス権を持たない場合でも、Web アプリケーションの存在が確認されました。
解決策は、DefaultServlet でリダイレクトを実装し、リダイレクトの前にセキュリティ制約やセキュリティ強制フィルターが処理されるようにすることでした。Tomcat チームは、リダイレクトの移動がリグレッションを引き起こす可能性があることを認識していたため、2つの新しい Context 設定オプション (mapperContextRootRedirectEnabled
および mapperDirectoryRedirectEnabled
) が導入されました。初期のデフォルトは両方とも false
で、これがより安全でした。しかし、バグ 58765 のようなリグレッションのため、mapperContextRootRedirectEnabled
のデフォルトは後に true
に変更されました。これは、与えられたパスに Web アプリケーションが展開されているかどうかを判断できることに関連するセキュリティリスクよりも、リグレッションの方が深刻であると見なされたためです。
これはリビジョン 1715207 および 1717209 で修正されました。
この問題は、2015年10月12日に QCSec の Mark Koek 氏によって特定され、2016年2月22日に公開されました。
影響を受けるバージョン: 8.0.0.RC1 から 8.0.29
2015年10月1日 Apache Tomcat 8.0.27 で修正済み
低: 制限付きディレクトリトラバーサル CVE-2015-5174
この問題は、セキュリティマネージャーの下で信頼できない Web アプリケーションを実行しているユーザーにのみ影響します。
ServletContext
メソッド getResource()
、getResourceAsStream()
、および getResourcePaths()
を介してリソースにアクセスする場合、パスは現在の Web アプリケーションに制限されるべきです。検証が正しくなく、"/.."
の形式のパスが拒否されませんでした。"/../"
で始まるパスは正しく拒否されました。このバグにより、セキュリティマネージャーの下で実行されている悪意のある Web アプリケーションが、Web アプリケーションが展開されているディレクトリのディレクトリリストを取得することが可能になりました。これは、セキュリティマネージャーの下で実行されている場合には不可能であるべきです。通常、公開されるディレクトリリストは $CATALINA_BASE/webapps
のものでした。
これはリビジョン 1696281 および 1700897 で修正されました。
この問題は、2015年8月12日に Tomcat セキュリティチームによって特定され、2016年2月22日に公開されました。
影響を受けるバージョン: 8.0.0-RC1 から 8.0.26
2015年1月16日 Apache Tomcat 8.0.17 で修正済み
注記: 以下の問題は Apache Tomcat 8.0.16 で修正されましたが、8.0.16 リリース候補のリリース投票は可決されませんでした。したがって、この問題の修正を含むバージョンを入手するには 8.0.17 をダウンロードする必要がありますが、バージョン 8.0.16 は影響を受けるバージョンの一覧には含まれていません。
中: セキュリティマネージャーのバイパス CVE-2014-7810
悪意のある Web アプリケーションは、式言語を使用して Security Manager の保護をバイパスできました。式は特権コードセクション内で評価されていたためです。
これはリビジョン 1644018 および 1645642 で修正されました。
この問題は、2014年11月2日に Tomcat セキュリティチームによって特定され、2015年5月14日に公開されました。
影響を受けるバージョン: 8.0.0-RC1 から 8.0.15
2014年6月24日 Apache Tomcat 8.0.9 で修正済み
重要: リクエストスマグリング CVE-2014-0227
チャンク化されたリクエストの一部として、不正な形式のチャンクを作成することが可能で、これにより Tomcat はリクエストボディの一部を新しいリクエストとして読み込んでしまいました。
これはリビジョン 1600984、1601329、1601330、および 1601332 で修正されました。
この問題は、2014年5月30日に Tomcat セキュリティチームによって特定され、2015年2月9日に公開されました。
影響を受けるバージョン: 8.0.0-RC1 から 8.0.8
低: サービス拒否 (Denial of Service) CVE-2014-0230
リクエストボディが完全に読み取られる前に、リクエストに対するレスポンスがユーザーエージェントに返された場合、デフォルトでは Tomcat は残りのリクエストボディを飲み込み、接続上の次のリクエストが処理できるようにします。Tomcat が飲み込むリクエストボディのサイズには制限がありませんでした。これにより、Tomcat が接続を閉じず、処理スレッドが接続に割り当てられたままになるため、限定的なサービス拒否が可能になりました。
これはリビジョン 1603770 で修正され、リビジョン 1603775、1603779、1609175、および 1659294 で改善されました。
この問題は、2014年6月4日に Baidu Security Team の AntBean@secdig 氏によって Tomcat セキュリティチームに開示され、2015年4月9日に公開されました。
影響を受けるバージョン: 8.0.0-RC1 から 8.0.8
ベータ版、2014年5月21日 Apache Tomcat 8.0.8 で修正済み
注記: 以下の問題は Apache Tomcat 8.0.6 で修正されましたが、8.0.6 および 8.0.7 リリース候補のリリース投票は可決されませんでした。したがって、この問題の修正を含むバージョンを入手するには 8.0.8 をダウンロードする必要がありますが、バージョン 8.0.6 および 8.0.7 は影響を受けるバージョンの一覧には含まれていません。
低: 情報漏洩 CVE-2014-0119
限定的な状況において、悪意のある Web アプリケーションが、Tomcat がデフォルトサーブレット、JSP ドキュメント、タグライブラリ記述子 (TLD)、およびタグプラグイン設定ファイルの XSLT を処理するために使用する XML パーサーを置き換えることが可能でした。注入された XML パーサーは、XML 外部エンティティに課せられた制限をバイパスしたり、同じ Tomcat インスタンスに展開された他の Web アプリケーションのために処理された XML ファイルの可視性を持つことができました。
これはリビジョン 1588193、1589837、1589980、1589983、1589985、1589990、および 1589992 で修正されました。
この問題は、2014年4月12日に Tomcat セキュリティチームによって特定され、2014年5月27日に公開されました。
影響を受けるバージョン: 8.0.0-RC1 から 8.0.5
ベータ版、2014年3月27日 Apache Tomcat 8.0.5 で修正済み
注記: 以下の問題は Apache Tomcat 8.0.4 で修正されましたが、8.0.4 リリース候補のリリース投票は可決されませんでした。したがって、これらの問題の修正を含むバージョンを入手するには 8.0.5 をダウンロードする必要がありますが、バージョン 8.0.4 は影響を受けるバージョンの一覧には含まれていません。
重要: サービス拒否 (Denial of Service) CVE-2014-0075
チャンク化されたリクエストの一部として、不正な形式のチャンクサイズを作成することが可能で、これによりサーバーに無制限の量のデータをストリームすることができ、リクエストに強制される様々なサイズ制限をバイパスしました。これにより、サービス拒否攻撃が可能になりました。
これはリビジョン 1578337 で修正されました。
この問題は、2014年2月28日に Red Hat Security Response Team の David Jorm 氏によって Tomcat セキュリティチームに報告され、2014年5月27日に公開されました。
影響を受けるバージョン: 8.0.0-RC1 から 8.0.3
重要: サービス拒否 (Denial of Service) CVE-2014-0095
1519838 で導入されたリグレッションにより、リクエストに明示的なコンテンツ長としてゼロが設定されている場合、AJP リクエストがハングアップする原因となりました。ハングアップしたリクエストはリクエスト処理スレッドを消費し、サービス拒否につながる可能性がありました。
これはリビジョン 1578392 で修正されました。
この問題は、2014年3月3日に Tomcat ユーザーメーリングリストを通じて可能性のあるバグとして報告され、同日に Tomcat セキュリティチームによってセキュリティ上の影響が特定されました。この問題は2014年5月27日に公開されました。
影響を受けるバージョン: 8.0.0-RC2 から 8.0.3
重要: 情報漏洩 CVE-2014-0096
デフォルトサーブレットは、Web アプリケーションが (複数レベルで) ディレクトリリストをフォーマットするために使用される XSLT を定義することを許可します。セキュリティマネージャーの下で実行されている場合、これらの処理は Web アプリケーションと同じ制約の対象ではありませんでした。これにより、悪意のある Web アプリケーションが外部 XML エンティティの使用を介してセキュリティマネージャーによって課せられたファイルアクセス制約をバイパスすることが可能になりました。
これはリビジョン 1578610 および 1578611 で修正されました。
この問題は、2014年2月27日に Tomcat セキュリティチームによって特定され、2014年5月27日に公開されました。
影響を受けるバージョン: 8.0.0-RC1 から 8.0.3
重要: 情報漏洩 CVE-2014-0099
リクエストのコンテンツ長ヘッダーをパースするために使用されるコードは、結果のオーバーフローをチェックしませんでした。これにより、Tomcat がコンテンツ長ヘッダーを正しく処理するリバースプロキシの背後に配置されている場合に、リクエストスマグリングの脆弱性が露呈しました。
これはリビジョン 1578812 で修正されました。
パースバグを示すテストケースは2014年3月13日に Tomcat セキュリティチームに送信されましたが、コンテキストは提供されませんでした。セキュリティ上の影響は、報告を受けた日に Tomcat セキュリティチームによって特定され、2014年5月27日に公開されました。
影響を受けるバージョン: 8.0.0-RC1 から 8.0.3
ベータ版、2014年2月11日 Apache Tomcat 8.0.3 で修正済み
注記: 以下の問題は Apache Tomcat 8.0.2 で修正されましたが、8.0.2 リリース候補のリリース投票は可決されませんでした。したがって、この問題の修正を含むバージョンを入手するには 8.0.3 をダウンロードする必要がありますが、バージョン 8.0.2 は影響を受けるバージョンの一覧には含まれていません。
重要: サービス拒否 (Denial of Service) CVE-2014-0050
マルチパートリクエストのために不正な形式の Content-Type ヘッダーを作成することが可能で、これにより Apache Tomcat が無限ループに陥りました。したがって、悪意のあるユーザーは、サービス拒否をトリガーする不正な形式のリクエストを作成することができました。
このエラーの根本原因は、Apache Commons FileUpload のバグでした。Tomcat 8 は、Servlet 3.0 以降の仕様の mime-multipart リクエストの処理をサポートする要件を実装するために、パッケージ名を変更した Apache Commons FileUpload のコピーを使用しています。したがって、Tomcat 8 はこの問題の影響を受けました。
これはリビジョン 1565163 で修正されました。
この問題は2014年2月4日に Apache Software Foundation に報告され、2014年2月6日に誤って公開されました。
影響を受けるバージョン: 8.0.0-RC1 から 8.0.1
アルファ版、2013年12月26日 Apache Tomcat 8.0.0-RC10 で修正済み
注記: 以下の問題は Apache Tomcat 8.0.0-RC6 で修正されましたが、8.0.0-RC6 から 8.0.0-RC9 のリリース投票は可決されませんでした。したがって、この問題の修正を含むバージョンを入手するには 8.0.0-RC10 をダウンロードする必要がありますが、バージョン 8.0.0-RC6 から 8.0.0-RC9 は影響を受けるバージョンの一覧には含まれていません。
重要: サービス拒否 (Denial of Service) CVE-2013-4322
CVE-2012-3544 の修正は不完全でした。以下のケースはカバーしていませんでした。
- チャンク拡張に制限がなかった
- トレーリングヘッダーのコロンの後の空白に制限がなかった
これはリビジョン 1521834 および 1549522 で修正されました。
この問題の最初の部分は2013年8月27日に Apache Tomcat セキュリティチームによって特定され、2番目の部分は2013年11月5日に TELUS Security Labs の Saran Neti 氏によって特定されました。2014年2月25日に公開されました。
影響を受けるバージョン: 8.0.0-RC1 から 8.0.0-RC5
低: 情報漏洩 CVE-2013-4590
web.xml、context.xml、*.tld、*.tagx、*.jspx などのアプリケーションが提供する XML ファイルは XXE を許可しており、これは攻撃者に Tomcat 内部を公開するために使用される可能性がありました。この脆弱性は、Tomcat が共有ホスティング環境のような信頼できないソースから Web アプリケーションを実行している場合にのみ発生します。
これはリビジョン 1549528 で修正されました。
この問題は、2013年10月29日に Apache Tomcat セキュリティチームによって特定され、2014年2月25日に公開されました。
影響を受けるバージョン: 8.0.0-RC1 から 8.0.0-RC5
アルファ版、2013年9月23日 Apache Tomcat 8.0.0-RC3 で修正済み
注記: 以下の問題は Apache Tomcat 8.0.0-RC2 で修正されましたが、8.0.0-RC2 のリリース投票は可決されませんでした。したがって、この問題の修正を含むバージョンを入手するには 8.0.0-RC3 をダウンロードする必要がありますが、バージョン 8.0.0-RC2 は影響を受けるバージョンの一覧には含まれていません。
重要: 情報漏洩 CVE-2013-4286
CVE-2005-2090 の修正は不完全でした。以下のケースはカバーしていませんでした。
- 任意の HTTP コネクタを介したチャンクエンコーディングを伴うコンテンツ長ヘッダー
- 任意の AJP コネクタを介した複数のコンテンツ長ヘッダー
複数のコンテンツ長ヘッダーを持つリクエスト、またはチャンクエンコーディングが使用されている場合にコンテンツ長ヘッダーを持つリクエストは、無効として拒否されるべきです。複数のコンポーネント (ファイアウォール、キャッシュ、プロキシ、Tomcat) が、1つ以上のリクエストが複数のコンテンツ長ヘッダーまたはチャンクエンコーディングが使用されている場合にコンテンツ長ヘッダーを含み、いくつかのコンポーネントがリクエストを拒否せず、どのコンテンツ長ヘッダーを使用するかについて異なる決定を下す場合、攻撃者は Web キャッシュを汚染し、XSS 攻撃を実行し、自分のものではないリクエストから機密情報を取得することができます。Tomcat は現在、複数のコンテンツ長ヘッダーを持つリクエスト、またはチャンクエンコーディングが使用されている場合にコンテンツ長ヘッダーを持つリクエストを拒否します。
これはリビジョン 1521829 で修正されました。
この問題は、2013年8月15日に Apache Tomcat セキュリティチームによって特定され、2014年2月25日に公開されました。
影響を受けるバージョン: 8.0.0-RC1
Tomcat の脆弱性ではありません
重要: サービス拒否 (Denial of Service) CVE-2017-6056
2015年2月に、一人のユーザーが高い CPU 使用率 (57544) を報告し、それがタイトループに起因することが判明しました。しかし、ループに入るために必要な条件がどのように作成されたかは不明でした。ループがユーザーによってトリガー可能であることを示す証拠はありませんでした。コード検査によって特定された唯一の潜在的なパスは、アプリケーションのバグ (リクエストオブジェクトへの参照を保持し、リクエスト完了後にアクセスすること) に依存していました。
アプリケーションのバグが最も可能性の高い根本原因であると信じられていました (そして現在も信じられています)。したがって、57544 は DoS 脆弱性として扱われませんでした。
2016年11月、CVE-2016-6816 が公表されました。Debian をはじめとするダウンストリームディストリビューションが CVE-2016-6816 の修正をバックポートした際に、不注意にもユーザーが 57544 のタイトループを簡単にトリガーできるようにしてしまいました。これにより、DoS 攻撃が容易になり、60578 や 60581 など複数の問題が報告されました。
Apache Software Foundation からの Tomcat リリースは影響を受けませんでした。ASF は CVE-2016-6816 の修正は含まれるが 57544 の修正は含まれないバージョンをリリースしなかったためです。
この問題は2017年2月13日に最初に発表されました。
影響を受けるバージョン: Debian、Ubuntu、およびその他潜在的なダウンストリームディストリビューション。
重要: リモートメモリ読み取り CVE-2014-0160 (別名 "Heartbleed")
OpenSSL の特定のバージョンにおけるバグにより、認証されていないリモートユーザーがサーバーメモリの特定の内容を読み取ることが可能になります。tcnative 1.1.24 - 1.1.29 のバイナリバージョンには、この脆弱なバージョンの OpenSSL が含まれています。tcnative 1.1.30 以降は、パッチ適用済みの OpenSSL バージョンと共に出荷されています。
この問題は2014年4月7日に最初に発表されました。
影響を受けるバージョン: OpenSSL 1.0.1-1.0.1f、tcnative 1.1.24-1.1.29
Tomcat の脆弱性ではありません
重大: log4j を介したリモートコード実行 CVE-2021-44228
Apache Tomcat 8.5.x は、いかなるバージョンの log4j にも依存していません。
Apache Tomcat に展開された Web アプリケーションが log4j に依存している場合があります。この場合、アプリケーションベンダーにサポートを求める必要があります。
Apache Tomcat 8.5.x を Tomcat の内部ロギングに log4j 2.x を使用するように設定することは可能です。これには明示的な設定と log4j 2.x ライブラリの追加が必要です。Tomcat の内部ロギングを log4j 2.x に切り替えたユーザーは、この脆弱性に対処する必要がある可能性が高いです。
8.5.x の最初のいくつかのリリース (8.5.3 以前) は、Tomcat の内部ロギングを log4j 1.x に切り替えるオプションのサポートを提供していました。これらの非常に古い (5年以上前)、サポートされていないバージョンの Tomcat を使用しており、log4j 1.x の使用に切り替えたユーザーは、log4j 1.x が一部の (おそらくめったに使用されない) 設定で影響を受ける可能性があるため、この脆弱性に対処する必要があるかもしれません。いずれにせよ、彼らはこの5年以上にわたって公開されてきた Tomcat の脆弱性に対処する必要があります。
ほとんどの場合、問題のある機能を無効にすることが最も簡単な解決策となるでしょう。具体的な方法は、使用している log4j 2.x の正確なバージョンによって異なります。詳細は log4j 2.x セキュリティページ に記載されています。