コンテンツ
Apache Tomcat 7.x の脆弱性
このページでは、リリースされた Apache Tomcat® 7.x のバージョンで修正されたすべてのセキュリティ脆弱性について説明します。各脆弱性には、Apache Tomcat セキュリティチームによるセキュリティ影響度評価が付与されています。この評価はプラットフォームによって異なる場合があることにご注意ください。また、この欠陥が影響を与えることが判明している Apache Tomcat のバージョンも記載し、欠陥が検証されていない場合は疑問符付きでバージョンを記載しています。
注:Tomcat の脆弱性ではなく、Tomcat に対して誤って報告された、または Tomcat が回避策を提供している脆弱性は、このページの最後に記載されています。
Tomcat 7.0.x はサポート終了となり、もはやサポートされません。7.0.x ブランチにおけるこれ以上の脆弱性は修正されません。セキュリティ修正を取得するには、ユーザーは 8.5.x 以降にアップグレードする必要があります。
バイナリパッチは提供されないことにご注意ください。ソースコードパッチを適用する必要がある場合は、使用している Apache Tomcat のバージョンに応じたビルド手順を使用してください。Tomcat 7.0 の場合は、building.html
および BUILDING.txt
です。どちらのファイルも、バイナリ配布物のwebapps/docs
サブディレクトリにあります。ドキュメントのセキュリティに関する考慮事項のページも確認することをお勧めします。
Tomcat のビルドや設定に関するヘルプ、またはここに記載されている既知の脆弱性を軽減するための手順に従うその他のヘルプが必要な場合は、公開されているTomcat ユーザーメーリングリストに質問を送信してください。
未記載のセキュリティ脆弱性やセキュリティに影響を及ぼす予期せぬ動作に遭遇した場合、またはここでの説明が不完全な場合は、Tomcat セキュリティチームに非公開で報告してください。ありがとうございます。
目次
2021年4月26日 Apache Tomcat 7.0.109 で修正済み
低:認証の脆弱性 CVE-2021-30640
JNDI Realm によるクエリは、常にパラメータを正しくエスケープするわけではありませんでした。パラメータの値は、ユーザーが提供したデータ(ユーザー名など)および管理者が提供した設定データから取得される可能性がありました。限定された状況では、ユーザーがユーザー名のバリエーションを使用して認証したり、LockOut Realm によって提供される保護の一部をバイパスしたりすることが可能でした。
これはコミットe21eb476で修正されました。
この問題は、65224として公開されました。
影響を受けるバージョン:7.0.0 から 7.0.108
2021年2月5日 Apache Tomcat 7.0.108 で修正済み
低:CVE-2020-9484 の修正が不完全でした CVE-2021-25329
CVE-2020-9484 の修正は不完全でした。非常にまれな設定のエッジケースを使用した場合、Tomcat インスタンスは依然としてCVE-2020-9484 に対して脆弱でした。以前に公開されたCVE-2020-9484 の前提条件と、以前に公開されたCVE-2020-9484 の非アップグレードの軽減策もこの問題に適用されることに注意してください。
これはコミット74b10565で修正されました。
この問題は、2021年1月12日にViettel Cyber Security の Trung Pham 氏によって Apache Tomcat Security team に報告されました。この問題は2021年3月1日に公開されました。
影響を受けるバージョン:7.0.0 から 7.0.107
2020年11月11日 Apache Tomcat 7.0.107 で修正済み
重要:情報漏洩 CVE-2021-24122
NTFS ファイルシステムを使用してネットワークロケーションからリソースを配信している場合、いくつかの設定でセキュリティ制約をバイパスしたり、JSP のソースコードを閲覧したりすることが可能でした。根本原因は、JRE API のFile.getCanonicalPath()
の予期せぬ動作であり、これは特定の状況における Windows API (FindFirstFileW
) の一貫性のない動作によって引き起こされました。
これはコミット800b0314で修正されました。
この問題は、2020年10月26日に Ilja Brander 氏によって Apache Tomcat Security team に報告されました。この問題は2021年1月14日に公開されました。
影響を受けるバージョン:7.0.0 から 7.0.106
2020年7月7日 Apache Tomcat 7.0.105 で修正済み
重要:WebSocket DoS CVE-2020-13935
WebSocket フレームのペイロード長が正しく検証されていませんでした。無効なペイロード長は無限ループを引き起こす可能性がありました。複数の無効なペイロード長の要求により、サービス拒否が発生する可能性がありました。
これはコミットf9f75c14と4c049828で修正されました。
この問題は、2020年6月28日に Apache Bugzilla インスタンスを介して公開され、高い CPU 使用率に関する言及はありましたが、サービス拒否に関する具体的な言及はありませんでした。関連する DoS リスクは、同日に Apache Tomcat Security Team によって特定されました。この問題は2020年7月14日に公開されました。
影響を受けるバージョン:7.0.27 から 7.0.104
2020年5月16日 Apache Tomcat 7.0.104 で修正済み
高:セッション永続化を介したリモートコード実行 CVE-2020-9484
もし
- 攻撃者がサーバー上のファイルのコンテンツと名前を制御できる場合、かつ
- サーバーが
FileStore
を伴う PersistenceManager
を使用するように構成されている場合、かつ
PersistenceManager
が sessionAttributeValueClassNameFilter="null"
(SecurityManager
が使用されていない場合のデフォルト) または、攻撃者が提供したオブジェクトが逆直列化されることを許可する十分に緩いフィルターで構成されている場合、かつ
- 攻撃者が
FileStore
が使用するストレージの場所から、攻撃者が制御するファイルへの相対ファイルパスを知っている場合、
特別に作成されたリクエストを使用することで、攻撃者は自身の制御下にあるファイルの逆直列化を介してリモートコード実行をトリガーできるようになります。
注:攻撃が成功するためには、上記のすべての条件が真である必要があります。
7.0.104 以降にアップグレードする代わりに、ユーザーは PersistenceManager
を sessionAttributeValueClassNameFilter
の適切な値で設定し、アプリケーション提供の属性のみが直列化および逆直列化されるようにすることも可能です。
これはコミット53e30390で修正されました。
この問題は、2020年4月12日に pdd security research の jarvis threedr3am 氏によって Apache Tomcat Security Team に報告されました。この問題は2020年5月20日に公開されました。
影響を受けるバージョン:7.0.0 から 7.0.103
2020年2月14日 Apache Tomcat 7.0.100 で修正済み
高:AJP リクエストインジェクションおよび潜在的なリモートコード実行 CVE-2020-1938
Apache JServ Protocol (AJP) を使用する場合、Apache Tomcat への受信接続を信頼する際には注意が必要です。Tomcat は AJP 接続を、例えば同様の HTTP 接続よりも高い信頼性を持つものとして扱います。このような接続が攻撃者に利用可能である場合、驚くべき方法で悪用される可能性があります。Tomcat 7.0.100 より前では、Tomcat はデフォルトで AJP コネクタを有効にして出荷されており、設定されたすべての IP アドレスでリッスンしていました。必要ない場合は、このコネクタを無効にすることが期待されていました(セキュリティガイドでも推奨されていました)。
この脆弱性報告以前に、攻撃者が AJP ポートに直接アクセスできる既知のリスクは次のとおりでした。
- クライアント IP アドレスに基づくセキュリティチェックのバイパス
- Tomcat がリバースプロキシによって提供された認証データを信頼するように設定されている場合、ユーザー認証のバイパス
この脆弱性報告は、次のことを可能にするメカニズムを特定しました。
- WEB-INF および META-INF ディレクトリ内、または ServletContext.getResourceAsStream() を介して到達可能なその他の場所を含む、Web アプリケーション内の任意のファイルからの任意のファイルの返却
- Web アプリケーション内の任意のファイルを JSP として処理すること
さらに、Web アプリケーションがファイルアップロードを許可し、それらのファイルを Web アプリケーション内に保存した場合(または攻撃者がその他の手段で Web アプリケーションのコンテンツを制御できた場合)、これはファイルを JSP として処理する機能と相まって、リモートコード実行を可能にしました。
緩和策は、AJP ポートが信頼できないユーザーからアクセス可能である場合にのみ必要となることに注意することが重要です。防御を深めるアプローチを取り、任意のファイルを返し、JSP として実行することを許可するベクトルをブロックしたいユーザーは、Apache Tomcat 9.0.31 以降にアップグレードしてください。ユーザーは、7.0.100 でデフォルトの AJP コネクタ設定に多数の変更が加えられ、デフォルト設定が強化されたことに注意する必要があります。その結果、7.0.100 以降にアップグレードするユーザーは、設定にわずかな変更を加える必要がある可能性があります。
これはコミット0d633e72、40d5d93b、b99fba5b、およびf7180bafで修正されました。
この問題は、2020年1月3日に Apache Tomcat Security Team に報告されました。この問題は2020年2月24日に公開されました。
影響を受けるバージョン:7.0.0 から 7.0.99
低:HTTP リクエストスマグリング CVE-2020-1935
HTTP ヘッダの解析コードは、行末 (EOL) 解析に特定のアプローチを使用しており、一部の無効な HTTP ヘッダが有効として解析されることを許容していました。これにより、Tomcat が特定のやり方で無効な Transfer-Encoding ヘッダを誤って処理するリバースプロキシの背後にある場合、HTTP リクエストスマグリングの可能性が生じました。そのようなリバースプロキシは考えにくいとされています。
これはコミット702bf15bで修正されました。
この問題は、2019年12月25日に @ZeddYu 氏によって Apache Tomcat Security Team に報告されました。この問題は2020年2月24日に公開されました。
影響を受けるバージョン:7.0.0 から 7.0.99
低:HTTP リクエストスマグリング CVE-2019-17569
7.0.98 でのリファクタリングにより、リグレッションが発生しました。その結果、無効な Transfer-Encoding ヘッダーが誤って処理され、Tomcat が特定のやり方で無効な Transfer-Encoding ヘッダーを誤って処理するリバースプロキシの背後に配置されている場合、HTTP リクエストスマグリングの可能性が生じました。このようなリバースプロキシは考えにくいとされています。
これはコミットb191a0d9で修正されました。
この問題は、2019年12月12日に @ZeddYu 氏によって Apache Tomcat Security Team に報告されました。この問題は2020年2月24日に公開されました。
影響を受けるバージョン:7.0.98 から 7.0.99
2019年12月17日 Apache Tomcat 7.0.99 で修正済み
低:セッション固定 CVE-2019-17563
FORM 認証を使用している場合、攻撃者がセッション固定攻撃を実行できる狭い窓が存在しました。この窓は、攻撃が実用的であるには狭すぎると考えられましたが、念のため、この問題はセキュリティ脆弱性として扱われました。
これはコミットab72a106で修正されました。
この問題は、2019年11月19日に William Marlow (IBM) 氏によって Apache Tomcat Security Team に報告されました。この問題は2019年12月18日に公開されました。
影響を受けるバージョン:7.0.0 から 7.0.98
注:以下の問題は Apache Tomcat 7.0.98 で修正されましたが、7.0.98 リリース候補のリリース投票は通過しませんでした。したがって、ユーザーはこの問題の修正を含むバージョンを取得するために 7.0.99 をダウンロードする必要がありますが、バージョン 78.0.98 は影響を受けるバージョンリストに含まれていません。
中:ローカル権限昇格 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にも注意する必要があります。
これはコミットbef3f404で修正されました。
この問題は、2019年10月10日に Viettel Cyber Security の An Trinh 氏によって Apache Tomcat Security Team に報告されました。この問題は2019年12月18日に公開されました。
影響を受けるバージョン:7.0.0 から 7.0.97
2019年4月12日 Apache Tomcat 7.0.94 で修正済み
重要:Windows 上でのリモートコード実行 CVE-2019-0232
Windows で enableCmdLineArguments が有効になっている場合、JRE がコマンドライン引数を Windows に渡す方法のバグにより、CGI サーブレットがリモートコード実行に対して脆弱になります。CGI サーブレットはデフォルトで無効になっています。JRE の動作に関する詳細な説明については、Markus Wulftange のブログと、アーカイブされたこちらのMSDN ブログを参照してください。
これはコミット7f0221b9で修正されました。
この問題は Nightwatch Cybersecurity Research によって特定され、EU FOSSA-2 プロジェクトが後援するバグバウンティプログラムを介して2019年3月3日に Apache Tomcat security team に報告されました。この問題は2019年4月10日に公開されました。
影響を受けるバージョン:7.0.0 から 7.0.93
低:SSI printenv における XSS CVE-2019-0221
SSI の printenv コマンドは、ユーザーが提供したデータをエスケープせずにエコーするため、XSS に対して脆弱です。SSI はデフォルトで無効です。printenv コマンドはデバッグ用であり、本番ウェブサイトに存在することはほとんどありません。
これはコミット44ec74c4で修正されました。
この問題は Nightwatch Cybersecurity Research によって特定され、EU FOSSA-2 プロジェクトが後援するバグバウンティプログラムを介して2019年3月7日に Apache Tomcat security team に報告されました。この問題は2019年5月17日に公開されました。
影響を受けるバージョン:7.0.0 から 7.0.93
2018年9月19日 Apache Tomcat 7.0.91 で修正済み
中:オープンリダイレクト CVE-2018-11784
デフォルトサーブレットがディレクトリへのリダイレクトを返した場合(例:ユーザーが/foo
をリクエストしたときに/foo/
にリダイレクトする場合)、特別に細工されたURLを使用することで、攻撃者が選択した任意のURIにリダイレクトを生成させることが可能でした。
これはリビジョン1840057で修正されました。
この問題は2018年8月28日に Sergey Bobrov 氏によって Apache Tomcat Security Team に報告され、2018年10月3日に公開されました。
影響を受けるバージョン:7.0.23 から 7.0.90
2018年7月7日 Apache Tomcat 7.0.90 で修正済み
低:WebSocket クライアントでホスト名検証が欠落 CVE-2018-8034
WebSocket クライアントで TLS を使用する際のホスト名検証が欠落していました。現在はデフォルトで有効になっています。
これはリビジョン1833760で修正されました。
この問題は2018年6月11日に公開され、2018年7月22日に脆弱性として正式に発表されました。
影響を受けるバージョン:7.0.25 から 7.0.88
未リリース Apache Tomcat 7.0.89 で修正済み
低:CORS フィルターのデフォルトが安全ではない CVE-2018-8014
CORS フィルターのデフォルト設定は安全ではなく、すべてのオリジンに対して supportsCredentials
を有効にしています。CORS フィルターのユーザーは、デフォルト設定ではなく、自身の環境に合わせて適切に設定していることが期待されます。したがって、ほとんどのユーザーはこの問題の影響を受けないと予想されます。
これはリビジョン1831730で修正されました。
この問題は2018年5月1日に公開され、2018年5月16日に脆弱性として正式に発表されました。
2018年5月16日 Apache Tomcat 7.0.88 で修正済み
重要:UTF-8 デコーダーのバグが DoS を引き起こす可能性 CVE-2018-1336
補助文字を含む UTF-8 デコーダーでオーバーフローが不適切に処理されると、デコーダーで無限ループが発生し、サービス拒否を引き起こす可能性があります。
これはリビジョン1830376で修正されました。
この問題は2018年4月6日に公開され、2018年7月22日に脆弱性として正式に発表されました。
影響を受けるバージョン:7.0.28 から 7.0.88
2018年2月13日 Apache Tomcat 7.0.85 で修正済み
重要:セキュリティ制約アノテーションの適用が遅すぎる CVE-2018-1305
サーブレットのアノテーションによって定義されたセキュリティ制約は、サーブレットがロードされて初めて適用されました。このように定義されたセキュリティ制約はURLパターンとその下のすべてのURLに適用されるため、サーブレットがロードされる順序によっては、一部のセキュリティ制約が適用されない可能性がありました。これにより、リソースへのアクセスを許可されていないユーザーにリソースが公開される可能性がありました。
これはリビジョン1823322と1824360で修正されました。
この問題は2018年2月1日に Apache Tomcat Security によって特定され、2018年2月23日に公開されました。
影響を受けるバージョン:7.0.0 から 7.0.84
重要:コンテキストルートにマッピングされたセキュリティ制約が無視される CVE-2018-1304
コンテキストルートに正確にマッピングされる "" (空文字列) の URL パターンが、セキュリティ制約定義の一部として使用された場合に正しく処理されませんでした。これにより、制約が無視されました。その結果、保護されるべきウェブアプリケーションリソースに、許可されていないユーザーがアクセスできるようになる可能性がありました。影響を受けたのは、空文字列の URL パターンを持つセキュリティ制約のみでした。
これはリビジョン1823309で修正されました。
この問題は2018年1月31日に62067として公開され、同日に Apache Tomcat Security Team によってセキュリティ上の影響が特定されました。2018年2月23日に公開されました。
影響を受けるバージョン:7.0.0 から 7.0.84
2018年1月24日 Apache Tomcat 7.0.84 で修正済み
低:CGI 検索アルゴリズムの文書化が不正確 CVE-2017-15706
注:以下の問題は Apache Tomcat 7.0.83 で修正されましたが、7.0.83 リリース候補のリリース投票は通過しませんでした。したがって、ユーザーはこの問題の修正を含むバージョンを取得するために 7.0.84 をダウンロードする必要がありますが、バージョン 7.0.83 は影響を受けるバージョンリストに含まれていません。
バグ61201の修正の一部として、CGI サーブレットがどのスクリプトを実行するかを特定するために使用する検索アルゴリズムの記述が更新されました。この更新は正確ではありませんでした。結果として、一部のスクリプトが予期したとおりに実行されず、他のスクリプトが予期せず実行された可能性があります。この点に関して、CGI サーブレットの動作は変更されていないことに注意してください。動作の文書化のみが誤っていたものであり、修正されました。
これはリビジョン1814828で修正されました。
この問題は2017年9月17日に Jan Michael Greiner 氏によって Apache Tomcat Security Team に報告され、2018年1月31日に公開されました。
影響を受けるバージョン:7.0.79 から 7.0.82
2017年10月4日 Apache Tomcat 7.0.82 で修正済み
重要:リモートコード実行 CVE-2017-12617
HTTP PUT が有効になっている場合(例えば、Default サーブレットの readonly
初期化パラメータを false に設定するなど)、特別に細工されたリクエストを介して JSP ファイルをサーバーにアップロードすることが可能でした。この JSP はその後リクエストされ、含まれる任意のコードがサーバーによって実行される可能性がありました。
これはリビジョン1809978、1809992、1810014、および1810026で修正されました。
この問題は、最初に公開され、その後2017年9月20日に Apache Tomcat Security Team に複数の報告が寄せられました。
影響を受けるバージョン:7.0.0 から 7.0.81
2017年8月16日 Apache Tomcat 7.0.81 で修正済み
重要:情報漏洩 CVE-2017-12616
VirtualDirContext を使用している場合、特別に細工されたリクエストを使用して、VirtualDirContext によって提供されるリソースのセキュリティ制約をバイパスしたり、JSP のソースコードを閲覧したりすることが可能でした。
これはリビジョン1804729で修正されました。
この問題は2017年8月10日に Tomcat Security Team によって特定され、2017年9月19日に公開されました。
影響を受けるバージョン:7.0.0 から 7.0.80
重要:リモートコード実行 CVE-2017-12615
注:以下の問題は Apache Tomcat 7.0.80 で修正されましたが、7.0.81 リリース候補のリリース投票は通過しませんでした。したがって、ユーザーはこの問題の修正を含むバージョンを取得するために 7.0.81 をダウンロードする必要がありますが、バージョン 7.0.80 は影響を受けるバージョンリストに含まれていません。
Windows で HTTP PUT が有効になっている場合(例えば、Default の readonly
初期化パラメータを false に設定するなど)、特別に細工されたリクエストを介して JSP ファイルをサーバーにアップロードすることが可能でした。この JSP はその後リクエストされ、含まれる任意のコードがサーバーによって実行される可能性がありました。
これはリビジョン1804604と1804729で修正されました。
この問題は、2017年7月26日に 360-sg-lab (360观星实验室) の iswin 氏によって Apache Tomcat Security Team に責任をもって報告され、2017年9月19日に公開されました。
影響を受けるバージョン:7.0.0 から 7.0.79
2017年7月1日 Apache Tomcat 7.0.79 で修正済み
中:キャッシュポイズニング CVE-2017-7674
CORS フィルターは、Origin によってレスポンスが異なることを示す HTTP Vary ヘッダーを追加しませんでした。これにより、特定の状況でクライアント側およびサーバー側のキャッシュポイズニングが可能になりました。
これはリビジョン1795816で修正されました。
この問題は2017年5月16日にバグ61101として報告されました。この問題の完全な影響は、同日に Tomcat Security Team によって特定されました。この問題は2017年8月10日に公開されました。
影響を受けるバージョン:7.0.41 から 7.0.78
2017年5月16日 Apache Tomcat 7.0.78 で修正済み
重要:セキュリティ制約バイパス CVE-2017-5664
Java Servlet Specification のエラーページメカニズムでは、エラーが発生し、発生したエラーに対してエラーページが設定されている場合、元のリクエストとレスポンスがエラーページに転送されることが要求されます。これは、リクエストが元の HTTP メソッドでエラーページに提示されることを意味します。
エラーページが静的ファイルである場合、期待される動作は、実際の HTTP メソッドに関わらず、GET リクエストを処理するかのようにファイルのコンテンツを提供することです。Tomcat の Default Servlet はこれを行いませんでした。元のリクエストによっては、DefaultServlet が書き込みを許可するように設定されている場合、カスタムエラーページの置換または削除を含む、静的エラーページに対して予期せぬ、望ましくない結果につながる可能性がありました。
その他のユーザー提供のエラーページに関する注意
- 明示的にコード化されていない限り、JSP は HTTP メソッドを無視します。エラーページとして使用される JSP は、実際のメソッドに関わらず、すべてのエラーディスパッチを GET リクエストとして処理することを保証する必要があります。
- デフォルトでは、サーブレットによって生成されるレスポンスは HTTP メソッドに依存します。エラーページとして使用されるカスタムサーブレットは、実際のメソッドに関わらず、すべてのエラーディスパッチを GET リクエストとして処理することを保証する必要があります。
これはリビジョン1793471と1793491で修正されました。
この問題は、2017年4月21日にインドのムンバイにある Tata Consultancy Services Ltd の Aniket Nandkishor Kulkarni 氏によって、OPTIONS および TRACE リクエストの制限をバイパスできる脆弱性として Apache Tomcat Security Team に責任をもって報告されました。この問題の完全な影響は、2017年4月24日に Tomcat Security Team によって特定されました。この問題は2017年6月6日に公開されました。
影響を受けるバージョン:7.0.0 から 7.0.77
2017年4月2日 Apache Tomcat 7.0.77 で修正済み
重要:情報漏洩 CVE-2017-5647
send file が使用された場合のパイプライン化されたリクエストの処理におけるバグにより、前のリクエストの send file 処理が完了すると、パイプライン化されたリクエストが失われました。これにより、応答が誤ったリクエストに対して送信されているように見える可能性がありました。たとえば、リクエスト A、B、C を送信したユーザーエージェントは、リクエスト A の正しい応答、リクエスト B のリクエスト C の応答、およびリクエスト C の応答なしを目にする可能性がありました。
これはリビジョン1789008で修正されました。
この問題は2017年3月20日に Apache Tomcat Security Team によって特定され、2017年4月10日に公開されました。
影響を受けるバージョン:7.0.0 から 7.0.76
2017年3月16日 Apache Tomcat 7.0.76 で修正済み
低:情報漏洩 CVE-2017-5648
バグ 60718 を調査中に、アプリケーションリスナーへのいくつかの呼び出しが適切なファサードオブジェクトを使用していないことが判明しました。SecurityManager の下で信頼されていないアプリケーションを実行している場合、その信頼されていないアプリケーションがリクエストまたはレスポンスオブジェクトへの参照を保持し、それによって別のウェブアプリケーションに関連する情報にアクセスしたり変更したりすることが可能でした。
これはリビジョン1785777で修正されました。
この問題は2017年3月20日に Apache Tomcat Security Team によって特定され、2017年4月10日に公開されました。
影響を受けるバージョン:7.0.0 から 7.0.75
2017年1月24日 Apache Tomcat 7.0.75 で修正済み
重要:情報漏洩 CVE-2016-8745
注:以下の問題は Apache Tomcat 7.0.74 で修正されましたが、7.0.74 リリース候補のリリース投票は通過しませんでした。したがって、ユーザーはこの問題の修正を含むバージョンを取得するために 7.0.75 をダウンロードする必要がありますが、バージョン 7.0.74 は影響を受けるバージョンリストに含まれていません。
NIO HTTP コネクタの send file コードのエラー処理にバグがあり、現在のプロセッサオブジェクトがプロセッサキャッシュに複数回追加される結果となりました。これにより、同じプロセッサが同時リクエストに使用される可能性がありました。プロセッサを共有すると、セッション ID やレスポンスボディを含む(ただしこれらに限定されない)リクエスト間の情報漏洩が発生する可能性があります。
これはリビジョン1777471で修正されました。
この問題は2016年1月3日に Apache Tomcat Security Team によって 7.0.x に影響があることが特定され、2017年1月5日に公開されました。
影響を受けるバージョン:7.0.0 から 7.0.73
2016年11月14日 Apache Tomcat 7.0.73 で修正済み
重要:リモートコード実行 CVE-2016-8735
JmxRemoteLifecycleListener
は、Oracle のCVE-2016-3427の修正を考慮するように更新されていませんでした。そのため、このリスナーを使用する Tomcat インストールは、同様のリモートコード実行の脆弱性に対して脆弱なままでした。この問題は、このリスナーを使用するインストールの数が少なく、リスナーが使用されている場合でも JMX ポートが攻撃者からアクセス可能であることは非常に稀であるため、クリティカルではなく重要として評価されています。
これはリビジョン1767676で修正されました。
この問題は2016年10月19日に Apache Tomcat Security Team に報告され、2016年11月22日に公開されました。
影響を受けるバージョン:7.0.0 から 7.0.72
重要:情報漏洩 CVE-2016-6816
HTTP リクエストラインを解析するコードが、無効な文字を許可していました。これは、無効な文字を許可するが異なる解釈をするプロキシと組み合わせて悪用され、HTTP レスポンスにデータを注入する可能性がありました。HTTP レスポンスを操作することで、攻撃者はウェブキャッシュをポイズニングしたり、XSS 攻撃を実行したり、自身のリクエスト以外のリクエストから機密情報を取得したりすることが可能でした。
これはリビジョン1767675で修正されました。
この問題は2016年10月11日に Apache Tomcat Security Team に報告され、2016年11月22日に公開されました。
影響を受けるバージョン:7.0.0 から 7.0.72
2016年9月19日 Apache Tomcat 7.0.72 で修正済み
注:以下の問題は Apache Tomcat 7.0.71 で修正されましたが、7.0.71 リリース候補のリリース投票は通過しませんでした。したがって、ユーザーはこれらの問題の修正を含むバージョンを取得するために 7.0.72 をダウンロードする必要がありますが、バージョン 7.0.71 は影響を受けるバージョンリストに含まれていません。
低:グローバルリソースへの無制限アクセス CVE-2016-6797
ResourceLinkFactory は、Web アプリケーションのグローバル JNDI リソースへのアクセスを、明示的に Web アプリケーションにリンクされたリソースに限定していませんでした。そのため、Web アプリケーションが、明示的な ResourceLink が設定されているかどうかにかかわらず、任意のグローバル JNDI リソースにアクセスすることが可能でした。
これはリビジョン1757275で修正されました。
この問題は2016年1月18日に Apache Tomcat Security Team によって特定され、2016年10月27日に公開されました。
影響を受けるバージョン:7.0.0 から 7.0.70
低:セキュリティマネージャーバイパス CVE-2016-6796
悪意のあるウェブアプリケーションは、JSP サーブレットの設定パラメータを操作することで、設定された SecurityManager をバイパスすることが可能でした。
これはリビジョン1758495と1763236で修正されました。
この問題は2015年12月27日に Apache Tomcat Security Team によって特定され、2016年10月27日に公開されました。
影響を受けるバージョン:7.0.0 から 7.0.70
低:システムプロパティの開示 CVE-2016-6794
SecurityManager が設定されている場合、Web アプリケーションがシステムプロパティを読み取る能力は SecurityManager によって制御されるべきです。Tomcat の設定ファイルにおけるシステムプロパティ置換機能は、悪意のある Web アプリケーションによって SecurityManager をバイパスし、表示されるべきでないシステムプロパティを読み取るために使用される可能性がありました。
これはリビジョン1754728で修正されました。
この問題は2015年12月27日に Apache Tomcat Security Team によって特定され、2016年10月27日に公開されました。
影響を受けるバージョン:7.0.0 から 7.0.70
低:セキュリティマネージャーバイパス CVE-2016-5018
悪意のあるウェブアプリケーションは、ウェブアプリケーションからアクセス可能な Tomcat ユーティリティメソッドを介して、設定された SecurityManager をバイパスすることが可能でした。
これはリビジョン1754902と1760309で修正されました。
この問題は、HP Enterprise Security Team の Alvaro Munoz と Alexander Mirosh によって発見され、2016年7月5日に Apache Tomcat Security Team に報告されました。2016年10月27日に公開されました。
影響を受けるバージョン:7.0.0 から 7.0.70
低:タイミング攻撃 CVE-2016-0762
Realm の実装は、提供されたユーザー名が存在しない場合、提供されたパスワードを処理しませんでした。これにより、有効なユーザー名を特定するためのタイミング攻撃が可能になりました。デフォルトの設定には LockOutRealm が含まれており、この脆弱性の悪用を困難にしていることに注意してください。
これはリビジョン1758502で修正されました。
この問題は2016年1月1日に Apache Tomcat Security Team によって特定され、2016年10月27日に公開されました。
影響を受けるバージョン:7.0.0 から 7.0.70
2016年6月20日 Apache Tomcat 7.0.70 で修正済み
中:サービス拒否 CVE-2016-3092
Apache Tomcat は、サーブレット仕様のファイルアップロード要件を実装するために、パッケージ名を変更した Apache Commons FileUpload のコピーを使用しています。Commons FileUpload でサービス拒否の脆弱性が特定されました。これは、マルチパート境界の長さがアップロードされるファイルを読み取るために使用されるバッファ(4096バイト)のサイズをわずかに下回る場合に発生しました。これにより、ファイルアップロードプロセスが、境界が一般的な数十バイトの長さである場合よりも、数桁長くかかりました。
これはリビジョン1743742で修正されました。
この問題は TERASOLUNA フレームワーク開発チームによって特定され、JPCERT を介して2016年5月9日に Apache Commons チームに報告されました。2016年6月21日に公開されました。
影響を受けるバージョン:7.0.0 から 7.0.69
2016年2月16日 Apache Tomcat 7.0.68 で修正済み
低:ディレクトリの開示 CVE-2015-5345
セキュリティ制約によって保護されたディレクトリに、スラッシュで終わらない URL でアクセスした場合、Tomcat は末尾にスラッシュが付いた URL にリダイレクトし、セキュリティ制約を処理する前にディレクトリの存在を確認していました。そのため、ユーザーはディレクトリの閲覧が許可されていなくても、ディレクトリが存在するかどうかを判断することが可能でした。この問題はウェブアプリケーションのルートでも発生し、その場合、ユーザーがアクセス権を持っていなくてもウェブアプリケーションの存在が確認されました。
解決策は、DefaultServlet でリダイレクトを実装し、セキュリティ制約やセキュリティ強制フィルターがリダイレクトの前に処理されるようにすることでした。Tomcat チームは、リダイレクトの移動がリグレッションを引き起こす可能性があることを認識していたため、2つの新しい Context 設定オプション (mapperContextRootRedirectEnabled
および mapperDirectoryRedirectEnabled
) が導入されました。初期のデフォルトは両方とも false
で、これがより安全でした。しかし、Bug 58765のようなリグレッションにより、mapperContextRootRedirectEnabled
のデフォルトは後に true
に変更されました。これは、リグレッションが特定のパスにウェブアプリケーションがデプロイされているかどうかを判断できるセキュリティリスクよりも深刻であると見なされたためです。
これはリビジョン1715213、1716860、および1717212で修正されました。
この問題は2015年10月12日に QCSec の Mark Koek 氏によって特定され、2016年2月22日に公開されました。
影響を受けるバージョン:7.0.0 から 7.0.67
中:CSRF トークン漏洩 CVE-2015-5351
Manager および Host Manager アプリケーションのインデックスページには、ウェブアプリケーションのルートに対する認証されていないリクエストの結果としてリダイレクトを発行する際に、有効な CSRF トークンが含まれていました。攻撃者が Manager または Host Manager アプリケーションにアクセスできる場合(通常、これらのアプリケーションは内部ユーザーのみがアクセス可能で、インターネットに公開されていません)、このトークンは攻撃者によって CSRF 攻撃を構築するために使用される可能性がありました。
これはリビジョン1720661と1720663で修正されました。
この問題は2015年12月8日に Tomcat security team によって特定され、2016年2月22日に公開されました。
影響を受けるバージョン:7.0.1 から 7.0.67
低:セキュリティマネージャーバイパス CVE-2016-0706
この問題は、セキュリティマネージャーの下で信頼されていないウェブアプリケーションを実行しているユーザーのみに影響します。
セキュリティマネージャーが設定されている場合、内部の StatusManagerServlet は悪意のあるウェブアプリケーションによってロードされる可能性がありました。このサーブレットは、悪意のあるウェブアプリケーションに、デプロイされているすべてのアプリケーションのリストと、現在処理中のすべてのリクエストの HTTP リクエストラインのリストを提供する可能性があります。これにより、セッションIDなどの他のウェブアプリケーションからの機密情報がウェブアプリケーションに公開される可能性があります。
これはリビジョン1722801で修正されました。
この問題は2015年12月27日に Tomcat security team によって特定され、2016年2月22日に公開されました。
影響を受けるバージョン:7.0.0 から 7.0.67
中:セキュリティマネージャーバイパス CVE-2016-0714
この問題は、セキュリティマネージャーの下で信頼されていないウェブアプリケーションを実行しているユーザーのみに影響します。
Tomcat はいくつかのセッション永続化メカニズムを提供します。StandardManager
は再起動時にセッションを永続化します。PersistentManager
はセッションをファイル、データベース、またはカスタムStore
に永続化できます。クラスタ実装は、クラスタ内の1つ以上の追加ノードにセッションを永続化します。これらのメカニズムのすべてが悪用され、セキュリティマネージャーをバイパスする可能性がありました。セッション永続化は、Tomcat 内部コードに割り当てられた権限で Tomcat コードによって実行されます。セッションに慎重に作成されたオブジェクトを配置することで、悪意のあるウェブアプリケーションは任意のコードの実行をトリガーする可能性がありました。
これはリビジョン1726923と1727034で修正されました。
この問題は2015年11月12日に Tomcat security team によって特定され、2016年2月22日に公開されました。
影響を受けるバージョン:7.0.0 から 7.0.67
中:セキュリティマネージャーバイパス CVE-2016-0763
この問題は、セキュリティマネージャーの下で信頼されていないウェブアプリケーションを実行しているユーザーのみに影響します。
ResourceLinkFactory.setGlobalContext()
は公開メソッドであり、セキュリティマネージャーの下で実行されている場合でもウェブアプリケーションからアクセス可能でした。これにより、悪意のあるウェブアプリケーションは悪意のあるグローバルコンテキストを注入し、それが他のウェブアプリケーションを妨害したり、他のウェブアプリケーションが所有するデータを読み書きしたりするために使用される可能性がありました。
これはリビジョン1725931で修正されました。
この問題は2016年1月18日に Tomcat security team によって特定され、2016年2月22日に公開されました。
影響を受けるバージョン:7.0.0 から 7.0.67
2015年12月10日 Apache Tomcat 7.0.67 で修正済み
注:以下の問題は Apache Tomcat 7.0.66 で修正されましたが、7.0.66 リリース候補のリリース投票は通過しませんでした。したがって、ユーザーはこの問題の修正を含むバージョンを取得するために 7.0.67 をダウンロードする必要がありますが、バージョン 7.0.66 は影響を受けるバージョンリストに含まれていません。
低:セッション固定 CVE-2015-5346
新しいリクエストに使用するためにRequest
オブジェクトをリサイクルする際、requestedSessionSSL
フィールドがリサイクルされませんでした。これは、リサイクルされたRequest
オブジェクトを使用して処理される次のリクエストで提供されたセッションIDが、本来使用されるべきではない状況で、使用される可能性があることを意味しました。これにより、クライアントはセッションIDを制御する能力を得ました。理論的には、これはセッション固定攻撃の一部として使用される可能性がありましたが、攻撃者が犠牲者に「正しい」Request
オブジェクトを使用させることを強制できなかったため、達成は困難であったでしょう。また、少なくとも1つのウェブアプリケーションがSSLセッションIDをHTTPセッションIDとして使用するように構成されている必要がありました。これは一般的な設定ではありません。
これはリビジョン1713187で修正されました。
この問題は2014年6月22日に Tomcat security team によって特定され、2016年2月22日に公開されました。
影響を受けるバージョン:7.0.5 から 7.0.65
2015年10月19日 Apache Tomcat 7.0.65 で修正済み
低:限定的なディレクトリトラバーサル CVE-2015-5174
この問題は、セキュリティマネージャーの下で信頼されていないウェブアプリケーションを実行しているユーザーのみに影響します。
ServletContext
メソッドのgetResource()
、getResourceAsStream()
、およびgetResourcePaths()
を介してリソースにアクセスする場合、パスは現在のウェブアプリケーションに限定されるべきでした。しかし、検証が正しくなく、"/.."
形式のパスが拒否されませんでした。なお、"/../"
で始まるパスは正しく拒否されました。このバグにより、セキュリティマネージャーの下で実行されている悪意のあるウェブアプリケーションが、ウェブアプリケーションがデプロイされたディレクトリのディレクトリリストを取得することが可能になりました。これはセキュリティマネージャーの下で実行されている場合には不可能であるべきです。通常、公開されるディレクトリリストは$CATALINA_BASE/webapps.
になります。
これはリビジョン1696284と1700898で修正されました。
この問題は2015年8月12日に Tomcat security team によって特定され、2016年2月22日に公開されました。
影響を受けるバージョン:7.0.0 から 7.0.64
2015年2月4日 Apache Tomcat 7.0.59 で修正済み
注:以下の問題は Apache Tomcat 7.0.58 で修正されましたが、7.0.58 リリース候補のリリース投票は通過しませんでした。したがって、ユーザーはこの問題の修正を含むバージョンを取得するために 7.0.59 をダウンロードする必要がありますが、バージョン 7.0.58 は影響を受けるバージョンリストに含まれていません。
中:セキュリティマネージャーバイパス CVE-2014-7810
悪意のあるウェブアプリケーションは、式言語を使用して Security Manager の保護をバイパスすることができました。これは、式が特権コードセクション内で評価されたためです。
これはリビジョン1644019と1645644で修正されました。
この問題は2014年11月2日に Tomcat security team によって特定され、2015年5月14日に公開されました。
影響を受けるバージョン:7.0.0 から 7.0.57
2014年7月27日 Apache Tomcat 7.0.55 で修正済み
重要:リクエストスマグリング CVE-2014-0227
チャンク化されたリクエストの一部として、不正な形式のチャンクを作成することが可能であり、これにより Tomcat がリクエストボディの一部を新しいリクエストとして読み込んでしまう事象が発生しました。
これはリビジョン1601333で修正されました。
この問題は2014年5月30日に Tomcat security team によって特定され、2015年2月9日に公開されました。
影響を受けるバージョン:7.0.0 から 7.0.54
低:サービス拒否 CVE-2014-0230
リクエストボディを持つリクエストの応答が、リクエストボディが完全に読み取られる前にユーザーエージェントに返される場合、デフォルトでは Tomcat は残りのリクエストボディを破棄し、接続上の次のリクエストを処理できるようにします。Tomcat が破棄するリクエストボディのサイズには制限がありませんでした。これにより、Tomcat が接続を閉じず、処理スレッドが接続に割り当てられたままになるため、限定的なサービス拒否が発生する可能性がありました。
これはリビジョン1603781で修正され、リビジョン1603811、1609176、および1659295で改善されました。
この問題は2014年6月4日に Baidu Security Team の AntBean@secdig 氏によって Tomcat security team に開示され、2015年4月9日に公開されました。
影響を受けるバージョン:7.0.0 から 7.0.54
2014年5月22日リリース Apache Tomcat 7.0.54 で修正済み
低:情報漏洩 CVE-2014-0119
限られた状況で、悪意のあるウェブアプリケーションが、Tomcat がデフォルトサーブレット、JSP ドキュメント、タグライブラリ記述子 (TLD)、およびタグプラグイン設定ファイルの XSLT を処理するために使用する XML パーサーを置き換えることが可能でした。注入された XML パーサーは、XML 外部エンティティに課せられた制限をバイパスしたり、同じ Tomcat インスタンスにデプロイされた他のウェブアプリケーション用に処理された XML ファイルを閲覧したりすることが可能でした。
これはリビジョン1588199、1589997、1590028、および1590036で修正されました。
この問題は2014年4月12日に Tomcat security team によって特定され、2014年5月27日に公開されました。
影響を受けるバージョン:7.0.0-7.0.53
2014年3月30日リリース Apache Tomcat 7.0.53 で修正済み
重要:サービス拒否 CVE-2014-0075
チャンクされたリクエストの一部として、不正な形式のチャンクサイズを作成することが可能であり、これにより無限の量のデータがサーバーにストリーミングされ、リクエストに課せられた様々なサイズ制限をバイパスすることができました。これにより、サービス拒否攻撃が可能になりました。
これはリビジョン1578341で修正されました。
この問題は2014年2月28日に Red Hat Security Response Team の David Jorm 氏によって Tomcat security team に報告され、2014年5月27日に公開されました。
影響を受けるバージョン:7.0.0-7.0.52
重要:情報漏洩 CVE-2014-0096
デフォルトのサーブレットは、ウェブアプリケーションが(複数のレベルで)ディレクトリリストをフォーマットするために使用される XSLT を定義することを許可します。セキュリティマネージャーの下で実行されている場合、これらの処理はウェブアプリケーションと同じ制約を受けませんでした。これにより、悪意のあるウェブアプリケーションは、外部 XML エンティティの使用を介して、セキュリティマネージャーによって課せられたファイルアクセス制約をバイパスすることが可能になりました。
これはリビジョン1578637と1578655で修正されました。
この問題は2014年2月27日に Tomcat security team によって特定され、2014年5月27日に公開されました。
影響を受けるバージョン:7.0.0-7.0.52
重要:情報漏洩 CVE-2014-0099
リクエストのコンテンツ長ヘッダーを解析するコードは、結果のオーバーフローをチェックしませんでした。これにより、Tomcat がコンテンツ長ヘッダーを正しく処理するリバースプロキシの背後に配置されている場合に、リクエストスマグリングの脆弱性が露出しました。
これはリビジョン1578814で修正されました。
解析バグを示すテストケースは2014年3月13日に Tomcat security team に送信されましたが、コンテキストは提供されませんでした。セキュリティ上の影響は、報告が受領された日に Tomcat security team によって特定され、2014年5月27日に公開されました。
影響を受けるバージョン:7.0.0-7.0.52
2014年2月17日リリース Apache Tomcat 7.0.52 で修正済み
注:以下の問題は Apache Tomcat 7.0.51 で修正されましたが、7.0.51 リリース候補のリリース投票は通過しませんでした。したがって、ユーザーはこの問題の修正を含むバージョンを取得するために 7.0.52 をダウンロードする必要がありますが、バージョン 7.0.51 は影響を受けるバージョンリストに含まれていません。
重要:サービス拒否 CVE-2014-0050
マルチパートリクエストの Content-Type ヘッダを不正に細工することで、Apache Tomcat が無限ループに陥る可能性がありました。したがって、悪意のあるユーザーは、サービス拒否を引き起こす不正なリクエストを作成することができました。
このエラーの根本原因は Apache Commons FileUpload のバグでした。Tomcat 7 は、Servlet 3.0 仕様の mime-multipart リクエスト処理の要件を実装するために、パッケージ名を変更した Apache Commons FileUpload のコピーを使用しています。したがって、Tomcat 7 はこの問題の影響を受けました。
これはリビジョン1565169で修正されました。
この問題は2014年2月4日に Apache Software Foundation に報告され、2014年2月6日に誤って公開されました。
影響を受けるバージョン:7.0.0-7.0.50
2014年1月8日リリース Apache Tomcat 7.0.50 で修正済み
注:以下の問題は Apache Tomcat 7.0.48 で修正されましたが、7.0.48 から 7.0.49 までのリリース投票は通過しませんでした。したがって、ユーザーはこれらの問題の修正を含むバージョンを取得するために 7.0.50 をダウンロードする必要がありますが、バージョン 7.0.48 から 7.0.49 は影響を受けるバージョンリストに含まれていません。
重要:サービス拒否 CVE-2013-4322
CVE-2012-3544 の修正は不完全でした。以下のケースをカバーしていませんでした。
- チャンク拡張が制限されていなかった
- トレーリングヘッダーのコロンの後の空白が制限されていなかった
これはリビジョン1521864と1549523で修正されました。
この問題の最初の部分は2013年8月27日に Apache Tomcat security team によって特定され、2番目の部分は2013年11月5日に TELUS Security Labs の Saran Neti 氏によって特定されました。2014年2月25日に公開されました。
影響を受けるバージョン:7.0.0 から 7.0.47
低:情報漏洩 CVE-2013-4590
web.xml、context.xml、*.tld、*.tagx、*.jspx などのアプリケーション提供の XML ファイルは XXE を許可しており、これを利用して攻撃者が Tomcat の内部情報を公開することができました。この脆弱性は、Tomcat が共有ホスティング環境などの信頼できないソースからウェブアプリケーションを実行している場合にのみ発生します。
これはリビジョン1549529で修正されました。
この問題は2013年10月29日に Apache Tomcat security team によって特定され、2014年2月25日に公開されました。
影響を受けるバージョン:7.0.0 から 7.0.47
2013年10月24日リリース Apache Tomcat 7.0.47 で修正済み
注: 下記の問題は Apache Tomcat 7.0.43 で修正されましたが、7.0.43 から 7.0.46 までのリリース投票は通過しませんでした。したがって、この問題の修正を含むバージョンを入手するにはユーザーは 7.0.47 をダウンロードする必要がありますが、7.0.43 から 7.0.46 までのバージョンは影響を受けるバージョンのリストに含まれていません。
重要: 情報漏えい CVE-2013-4286
CVE-2005-2090 の修正は完全ではありませんでした。以下のケースに対応していませんでした。
- あらゆる HTTP コネクタでのチャンクエンコーディングを伴う content-length ヘッダー
- あらゆる AJP コネクタでの複数の content-length ヘッダー
複数の content-length ヘッダーを持つリクエスト、またはチャンクエンコーディングが使用されている場合に content-length ヘッダーを持つリクエストは、無効として拒否されるべきです。複数のコンポーネント(ファイアウォール、キャッシュ、プロキシ、Tomcat)が、1つ以上のリクエストが複数の content-length ヘッダーを含むか、またはチャンクエンコーディングが使用されている場合に content-length ヘッダーを含み、かつ複数のコンポーネントがそのリクエストを拒否せず、どの content-length ヘッダーを使用するかについて異なる決定をするような一連のリクエストを処理する場合、攻撃者はウェブキャッシュを汚染したり、XSS 攻撃を実行したり、自分のものではないリクエストから機密情報を取得したりする可能性があります。Tomcat は現在、複数の content-length ヘッダーを持つリクエスト、またはチャンクエンコーディングが使用されている場合に content-length ヘッダーを持つリクエストを拒否します。
これはリビジョン 1521854 で修正されました。
この問題は Apache Tomcat セキュリティチームによって2013年8月15日に特定され、2014年2月25日に公開されました。
影響範囲: 7.0.0 から 7.0.42
2013年5月9日リリース Apache Tomcat 7.0.40 で修正済み
中程度: 情報漏えい CVE-2013-2071
バグ 54178 は、以前のリクエストの要素が現在のリクエストに公開される可能性があるシナリオについて説明していました。これは意図的に悪用することは非常に困難でしたが、アプリケーションが RuntimeExceptions をスローする AsyncListeners を使用している場合、予期せず発生する可能性はかなりありました。
これはリビジョン 1471372 で修正されました。
問題の根本原因は、2013年4月2日に Tomcat のバグとして特定されました。Tomcat セキュリティチームは2013年4月24日にセキュリティ上の影響を特定し、2013年5月10日にそれらの詳細を公開しました。
影響範囲: 7.0.0-7.0.39
重要: リモートコード実行 CVE-2013-4444
ごく限られた状況において、攻撃者が悪意のある JSP を Tomcat サーバーにアップロードし、その JSP の実行をトリガーすることが可能でした。リモートコード実行は通常、重大な脆弱性と見なされますが、Tomcat セキュリティチームの見解では、これが可能となる状況は十分に限定されており、この脆弱性は重要と見なされています。
この攻撃を成功させるには、以下のすべての要件を満たす必要があります
- Oracle Java 1.7.0 update 25 以前(または java.io.File がヌルバイトインジェクションに対して脆弱なその他の Java 実装)を使用していること。
- ウェブアプリケーションが脆弱なバージョンの Tomcat にデプロイされていること。
- ウェブアプリケーションが Servlet 3.0 ファイルアップロード機能を使用していること。
- デプロイされたウェブアプリケーション内のファイルロケーションが、Tomcat プロセスが実行されているユーザーによって書き込み可能であること。Tomcat セキュリティドキュメントでは、これは推奨されていません。
- JMX 接続用のカスタムリスナー(例: デフォルトで有効になっていない JmxRemoteListener)が設定されており、Tomcat の共通クラスローダーからクラスをロードできること(つまり、カスタム JMX リスナーが Tomcat の lib ディレクトリに配置されていること)。
- カスタム JMX リスナーが、リモート攻撃のために localhost 以外のアドレスにバインドされていること(デフォルトでは localhost にバインドされています)。カスタム JMX リスナーが localhost にバインドされている場合でも、ローカル攻撃は可能です。
要件2と3は、以下の要件に置き換えることができることに注意してください
- Apache Commons File Upload 1.2.1 以前を使用するウェブアプリケーションがデプロイされていること。
この場合(要件1、4、5、6、7が満たされている場合)、Apache Tomcat だけでなく、任意の Servlet コンテナで同様の脆弱性が存在する可能性があります。
これはリビジョン 1470437 で修正されました。
この問題は VMware Security Engineering, Communications and Response group (vSECR) の Pierre Ernst によって特定され、Pivotal セキュリティチームを介して2014年9月5日に Tomcat セキュリティチームに報告されました。2014年9月10日に公開されました。
影響範囲: 7.0.0 から 7.0.39
2012年11月21日リリース Apache Tomcat 7.0.33 で修正済み
重要: セッション固定 CVE-2013-2067
FORM 認証は、認証を必要とする最新のリクエストを現在のセッションに関連付けます。被害者がログインフォームを完了している間に、認証されたリソースへのリクエストを繰り返し送信することで、攻撃者は被害者の資格情報を使用して実行されるリクエストを注入することができました。
これはリビジョン 1408044 で修正されました。
この問題は Tomcat セキュリティチームによって2012年10月15日に特定され、2013年5月10日に公開されました。
影響範囲: 7.0.0-7.0.32
2012年10月9日リリース Apache Tomcat 7.0.32 で修正済み
重要: CSRF 対策フィルターのバイパス CVE-2012-4431
リクエストにセッション識別子が存在しない状態で保護されたリソースへのリクエストが行われた場合、CSRF 対策フィルターをバイパスすることが可能でした。
これはリビジョン 1393088 で修正されました。
この問題は Tomcat セキュリティチームによって2012年9月8日に特定され、2012年12月4日に公開されました。
影響範囲: 7.0.0-7.0.31
2012年9月6日リリース Apache Tomcat 7.0.30 で修正済み
重要: サービス拒否 CVE-2012-3544
チャンク転送エンコーディングを使用して送信されたリクエストを処理する際、Tomcat は含まれる拡張を無視しましたが、制限しませんでした。これにより、クライアントは無制限のデータをサーバーにストリーミングすることで、限定的な DOS を実行することができました。
これはリビジョン 1378702 および 1378921 で修正されました。
この問題は2011年11月10日に Tomcat セキュリティチームに報告され、2013年5月10日に公開されました。
影響範囲: 7.0.0-7.0.29
中程度: DIGEST 認証の脆弱性 CVE-2012-3439
Tomcat の DIGEST 認証の実装における3つの脆弱性が特定され、解決されました
- Tomcat はサーバーノンスとノンスカウントではなく、クライアントを追跡していました。
- セッション ID が存在する場合、認証がバイパスされました。
- ノンスが古いことを示す前に、ユーザー名とパスワードがチェックされませんでした。
これらの問題により、DIGEST 認証のセキュリティが低下し、特定の状況でリプレイ攻撃が可能になりました。
これはリビジョン 1377807 で修正されました。
最初の問題は Tilmann Kuhn によって2012年7月19日に Tomcat セキュリティチームに報告されました。2番目と3番目の問題は、結果として行われたコードレビュー中に Tomcat セキュリティチームによって発見されました。これら3つの問題はすべて2012年11月5日に公開されました。
影響範囲: 7.0.0-7.0.29
重要: セキュリティ制約のバイパス CVE-2012-3546
FORM 認証を使用している場合、他のコンポーネント(シングルサインオンバルブなど)が FormAuthenticator#authenticate()
の呼び出し前に request.setUserPrincipal()
を呼び出していた場合、URL の末尾に /j_security_check
を追加することで、FORM 認証器のセキュリティ制約チェックをバイパスすることが可能でした。
これはリビジョン 1377892 で修正されました。
この問題は Tomcat セキュリティチームによって2012年7月13日に特定され、2012年12月4日に公開されました。
影響範囲: 7.0.0-7.0.29
2012年6月19日リリース Apache Tomcat 7.0.28 で修正済み
重要: サービス拒否 CVE-2012-2733
HTTP NIO コネクタの場合、リクエストヘッダーの許容サイズを制限するチェックが、リクエスト解析プロセスのあまりにも遅い段階で実装されていました。これにより、悪意のあるユーザーが非常に大きなヘッダーを持つ単一のリクエストを送信することで、OutOfMemoryError を引き起こすことが可能になりました。
これはリビジョン 1350301 で修正されました。
これは Josh Spiewak によって2012年6月4日に Tomcat セキュリティチームに報告され、2012年11月5日に公開されました。
影響範囲: 7.0.0-7.0.27
重要: サービス拒否 CVE-2012-4534
sendfile と HTTPS が有効な NIO コネクタを使用している場合、クライアントが応答の読み取り中に接続を切断すると、無限ループに入り、サービス拒否につながります。これは当初、バグ 52858 として報告されました。
これはリビジョン 1340218 で修正されました。
このバグのセキュリティ上の影響は、Red Hat Security Response Team の Arun Neelicattu によって2012年10月3日に Tomcat セキュリティチームに報告され、2012年12月4日に公開されました。
影響範囲: 7.0.0-7.0.27
2011年11月25日リリース Apache Tomcat 7.0.23 で修正済み
重要: サービス拒否 CVE-2012-0022
最近のハッシュ衝突脆弱性の分析により、Apache Tomcat の多数のパラメーターおよびパラメーター値の処理における無関係な非効率性が特定されました。これらの非効率性により、攻撃者は特別に細工されたリクエストを介して大量の CPU を使用させ、その結果サービス拒否を引き起こす可能性がありました。この問題は、Tomcat のパラメーター処理コードを修正し、多数のパラメーターとパラメーター値を効率的に処理するようにすることで対処されました。
これはリビジョン 1189899, 1190372, 1190482, 1194917, 1195225, 1195226, 1195537, 1195909, 1195944, 1195951, 1195977 および 1198641 で修正されました。
これは Tomcat セキュリティチームによって2011年10月21日に特定され、2012年1月17日に公開されました。
影響範囲: 7.0.0-7.0.22
2011年10月1日リリース Apache Tomcat 7.0.22 で修正済み
重要: 情報漏えい CVE-2011-3375
パフォーマンス上の理由から、リクエストから解析された情報は、内部リクエストオブジェクトと内部プロセッサーオブジェクトの2つの場所にキャッシュされることがよくあります。これらのオブジェクトは、まったく同時にリサイクルされるわけではありません。アクセスログに追加する必要がある特定のエラーが発生すると、アクセスログ処理は、リクエストオブジェクトがリサイクルされた後に、その再投入をトリガーします。しかし、リクエストオブジェクトは次のリクエストに使用される前にリサイクルされませんでした。これにより、以前のリクエストから次のリクエストへの情報漏えい(例: リモート IP アドレス、HTTP ヘッダー)が発生しました。この問題は、必要なアクセスログエントリを生成するために、リクエストと応答オブジェクトが再投入された後にリサイクルされることを保証することで解決されました。
これは リビジョン 1176592 で修正されました。
これは Tomcat セキュリティチームによって2011年9月22日に特定され、2012年1月17日に公開されました。
影響範囲: 7.0.0-7.0.21
低: 権限昇格 CVE-2011-3376
この問題は、信頼できないウェブアプリケーションを実行している環境(共有ホスティング環境など)にのみ影響します。Apache Tomcat に同梱されている Manager アプリケーションの機能を実現するサーブレットは、特権としてマークされた Contexts(ウェブアプリケーション)のみが利用できるようにする必要があります。しかし、このチェックが行われていませんでした。これにより、信頼できないウェブアプリケーションが Manager アプリケーションの機能を使用することが可能になりました。これは、実行中のウェブアプリケーションに関する情報を取得したり、追加のウェブアプリケーションをデプロイしたりするために使用される可能性があります。
これは リビジョン 1176588 で修正されました。
これは Ate Douma によって2011年9月27日に特定され、2011年11月8日に公開されました。
影響範囲: 7.0.0-7.0.21
2011年9月1日リリース Apache Tomcat 7.0.21 で修正済み
重要: 認証バイパスと情報漏えい CVE-2011-3190
Apache Tomcat は AJP プロトコルをサポートしており、これはリバースプロキシと組み合わせて、リクエストおよびリクエストに関連するデータをリバースプロキシから Tomcat に渡すために使用されます。AJP プロトコルは、リクエストにリクエストボディが含まれる場合、リクエストボディの最初の部分(または場合によってはすべて)を含む未承諾の AJP メッセージが Tomcat に送信されるように設計されています。特定の状況下で、Tomcat はこのメッセージをリクエストボディとしてではなく、新しいリクエストとして処理しました。これにより、攻撃者は AJP メッセージを完全に制御でき、認証バイパスと情報漏えいを引き起こすことが可能になりました。この脆弱性は、以下のすべてが真である場合にのみ発生します
- org.apache.jk.server.JkCoyoteHandler AJP コネクタが使用されていない
- POST リクエストが受け入れられる
- リクエストボディが処理されない
これは リビジョン 1162958 で修正されました。
これは2011年8月20日に公開されました。
影響範囲: 7.0.0-7.0.20
緩和オプション
- Tomcat 7.0.21 にアップグレード
- 適切な パッチ を適用
- Tomcat とリバースプロキシの両方を共有シークレットを使用するように設定します。
(AJP <Connector> では「requiredSecret
」属性、mod_jk では「worker.workername.secret
」ディレクティブです。mod_proxy_ajp モジュールは現在、共有シークレットをサポートしていません)。
参照
2011年8月11日リリース Apache Tomcat 7.0.20 で修正済み
重要: 情報漏えい CVE-2011-2729
機能コードのバグにより、jsvc(Commons Daemon プロジェクトの一部である Linux 用のサービスラッパー)が機能を破棄せず、アプリケーションがスーパーユーザーが所有するファイルやディレクトリにアクセスできるようになっていました。この脆弱性は、以下のすべてが真である場合にのみ発生します
- Tomcat が Linux オペレーティングシステムで動作している
- jsvc が libcap でコンパイルされている
- -user パラメータが使用されている
影響を受ける Tomcat バージョンには、この脆弱性を含む jsvc のソースファイルが同梱されていました。
これは リビジョン 1153379 で修正されました。
これは Wilfried Weissmann によって2011年7月20日に特定され、2011年8月12日に公開されました。
影響範囲: 7.0.0-7.0.19
2011年7月19日リリース Apache Tomcat 7.0.19 で修正済み
低: 情報漏えい CVE-2011-2526
Tomcat は HTTP NIO および HTTP APR コネクタで sendfile をサポートしています。sendfile は DefaultServlet を介して提供されるコンテンツに対して自動的に使用され、デプロイされたウェブアプリケーションはリクエスト属性を設定することで直接使用できます。これらのリクエスト属性は検証されていませんでした。セキュリティマネージャーの下で実行されている場合、この検証不足により、悪意のあるウェブアプリケーションが、通常セキュリティマネージャーによって防止される以下の1つまたは複数を実行することが可能になりました
- セキュリティマネージャーがアクセス不能にするべきファイルをユーザーに返す
- JVM を終了させる(クラッシュさせる)
さらに、これらの脆弱性は以下のすべてが真である場合にのみ発生します
- 信頼できないウェブアプリケーションが使用されている
- SecurityManager が信頼できないウェブアプリケーションを制限するために使用されている
- HTTP NIO または HTTP APR コネクタが使用されている
- コネクタで sendfile が有効になっている(これはデフォルトです)
これはリビジョン 1145383, 1145489, 1145571, 1145694 および 1146005 で修正されました。
これは Tomcat セキュリティチームによって2011年7月7日に特定され、2011年7月13日に公開されました。
影響範囲: 7.0.0-7.0.18
注: 下記の問題は Apache Tomcat 7.0.17 で修正されましたが、7.0.17 および 7.0.18 のリリース候補版のリリース投票は通過しませんでした。したがって、これらの問題の修正を含むバージョンを入手するにはユーザーは 7.0.19 をダウンロードする必要がありますが、7.0.17 および 7.0.18 のバージョンは影響を受けるバージョンのリストに含まれていません。
低: 情報漏えい CVE-2011-2204
MemoryUserDatabase (tomcat-users.xml に基づく) を使用し、JMX 経由でユーザーを作成する際、ユーザー作成プロセス中に例外が発生すると、JMX クライアントにユーザーのパスワードを含むエラーメッセージが表示される可能性があります。このエラーメッセージは Tomcat のログにも書き込まれます。ユーザーのパスワードは、JMX アクセス権を持つ管理者や、tomcat-users.xml ファイルの読み取りアクセス権を持つ管理者には表示されます。これらの権限を持たないがログファイルを読み取れるユーザーは、ユーザーのパスワードを発見できる可能性があります。
これは リビジョン 1140070 で修正されました。
これは Polina Genova によって2011年6月14日に特定され、2011年6月27日に公開されました。
影響範囲: 7.0.0-7.0.16
低: 情報漏えい CVE-2011-2481
Tomcat 7.0.x の XML 検証のリファクタリングにより、以前 CVE-2009-0783 として報告された脆弱性が再導入されました。これは当初、メモリリークとして報告されました。ウェブアプリケーションが最初にロードされるウェブアプリケーションである場合、このバグにより、そのウェブアプリケーションが Tomcat インスタンスにデプロイされた他のウェブアプリケーションの web.xml、context.xml、および tld ファイルを潜在的に表示したり変更したりすることが可能になります。
これは最初に リビジョン 1137753 で修正されましたが、リビジョン 1138776 で元に戻され、最終的に リビジョン 1138788 で修正されました。
これは Tomcat セキュリティチームによって2011年6月20日に特定され、2011年8月12日に公開されました。
影響範囲: 7.0.0-7.0.16
2011年5月12日リリース Apache Tomcat 7.0.14 で修正済み
重要: セキュリティ制約のバイパス CVE-2011-1582
CVE-2011-1088/CVE-2011-1183 の修正に誤りがあったため、Servlet への最初のリクエストでアノテーションを介して設定されたセキュリティ制約が無視されました。以降のリクエストは正しく保護されていました。
これは リビジョン 1100832 で修正されました。
これは Tomcat セキュリティチームによって2011年4月13日に特定され、2011年5月17日に公開されました。
影響範囲: 7.0.12-7.0.13
2011年4月6日リリース Apache Tomcat 7.0.12 で修正済み
重要: 情報漏えい CVE-2011-1475
HTTP BIO コネクタに導入された Servlet 3.0 非同期リクエストをサポートするための変更は、HTTP パイプラインを完全に考慮していませんでした。その結果、HTTP パイプラインを使用すると、リクエスト間で応答が混在するなど、さまざまな予期せぬ動作が発生しました。応答の混在は同じユーザーからのリクエスト間でのみ観測されましたが、異なるユーザーからのリクエスト間での応答の混在も可能性がありました。
これはリビジョン 1086349 および 1086352 で修正されました。(注: HTTP パイプラインリクエストは HTTP BIO コネクタでは依然として失敗する可能性がありますが、安全な方法で失敗します。)
これは2011年3月22日に Tomcat Bugzilla の課題トラッカーで公開報告されました。
影響範囲: 7.0.0-7.0.11
中程度: HTTP DIGEST 認証の複数の脆弱性 CVE-2011-1184
注: Mitre はこの問題を複数の問題に分割し、この問題の一部に以下の追加参照を割り当てています: CVE-2011-5062、CVE-2011-5063、および CVE-2011-5064。Apache Tomcat セキュリティチームは引き続き、参照 CVE-2011-1184 を使用してこれを単一の問題として扱います。
HTTP DIGEST 認証の実装にいくつかの脆弱性が発見されました
- リプレイ攻撃が許可されていた
- サーバーノンスがチェックされていなかった
- クライアントノンスカウントがチェックされていなかった
- qop 値がチェックされていなかった
- レルム値がチェックされていなかった
- サーバーシークレットが既知の文字列にハードコードされていた
これらの脆弱性の結果、DIGEST 認証は BASIC 認証と同じくらいしか安全ではありませんでした。
これは リビジョン 1087655 で修正されました。
これは Tomcat セキュリティチームによって2011年3月16日に特定され、2011年9月26日に公開されました。
影響範囲: 7.0.0-7.0.11
重要: セキュリティ制約のバイパス CVE-2011-1183
CVE-2011-1088 の修正におけるリグレッションにより、web.xml にログイン設定が存在せず、ウェブアプリケーションがメタデータ完了としてマークされている場合、セキュリティ制約が無視されました。
これは リビジョン 1087643 で修正されました。
これは Tomcat セキュリティチームによって2011年3月17日に特定され、2011年4月6日に公開されました。
影響範囲: 7.0.11
2011年3月11日リリース Apache Tomcat 7.0.11 で修正済み
重要: セキュリティ制約のバイパス CVE-2011-1088
ウェブアプリケーションが起動されると、ServletSecurity
アノテーションが無視されました。これにより、アプリケーションのいくつかの領域が期待通りに保護されない可能性がありました。これは Apache Tomcat 7.0.10 で部分的に修正され、7.0.11 で完全に修正されました。
これはリビジョン 1076586, 1076587, 1077995 および 1079752 で修正されました。
これは2011年3月2日に Tomcat ユーザーメーリングリストで公開報告されました。
影響範囲: 7.0.0-7.0.10
2011年2月5日リリース Apache Tomcat 7.0.8 で修正済み
注: 下記の問題は Apache Tomcat 7.0.7 で修正されましたが、7.0.7 リリース候補版のリリース投票は通過しませんでした。したがって、この問題の修正を含むバージョンを入手するにはユーザーは 7.0.8 をダウンロードする必要がありますが、7.0.7 のバージョンは影響を受けるバージョンのリストに含まれていません。
重要: リモートサービス拒否 CVE-2011-0534
NIO コネクタは、リクエストライン処理中にバッファを無限に拡張します。この動作は、巧妙に作成されたリクエストを使用してサービス拒否攻撃に利用される可能性があります。
これは リビジョン 1065939 で修正されました。
これは Tomcat セキュリティチームによって2011年1月27日に特定され、2011年2月5日に公開されました。
影響範囲: 7.0.0-7.0.6
2011年1月14日リリース Apache Tomcat 7.0.6 で修正済み
低: クロスサイトスクリプティング CVE-2011-0013
HTML Manager インターフェースは、ウェブアプリケーションから提供されるデータ(表示名など)をフィルタリングせずに表示していました。悪意のあるウェブアプリケーションは、管理ユーザーがマネージャーページを表示する際にスクリプトの実行をトリガーする可能性がありました。
これは リビジョン 1057279 で修正されました。
これは Tomcat セキュリティチームによって2010年11月12日に特定され、2011年2月5日に公開されました。
影響範囲: 7.0.0-7.0.5
2010年12月1日リリース Apache Tomcat 7.0.5 で修正済み
低: クロスサイトスクリプティング CVE-2010-4172
Manager アプリケーションは、ユーザーが提供するパラメータ sort と orderBy をフィルタリングせずに直接使用していたため、クロスサイトスクリプティングを許可していました。デフォルトで有効になっている CSRF 保護により、攻撃者がこれを悪用することは防止されます。
これは リビジョン 1037778 で修正されました。
これは2010年11月15日に Tomcat セキュリティチームに初めて報告され、2010年11月22日に公開されました。
影響範囲: 7.0.0-7.0.4
2010年10月21日リリース Apache Tomcat 7.0.4 で修正済み
低: SecurityManager ファイル権限バイパス CVE-2010-3718
SecurityManager の下で実行されている場合、ファイルシステムへのアクセスは制限されますが、ウェブアプリケーションには作業ディレクトリへの読み書き権限が付与されます。このディレクトリは、JSP をサーブレットにコンパイルする際に生成される中間ファイルなど、様々な一時ファイルに使用されます。作業ディレクトリの場所は、ウェブアプリケーションに対して読み取り専用であるべき ServletContext 属性によって指定されます。しかし、コーディングエラーにより、読み取り専用の設定が適用されていませんでした。したがって、悪意のあるウェブアプリケーションは、Tomcat がファイル権限を適用する前に属性を変更する可能性があります。これは、ファイルシステムの任意の領域に読み書き権限を付与するために使用され、悪意のあるウェブアプリケーションがそれを悪用する可能性があります。この脆弱性は、共有ホスティング環境など、信頼できないソースからウェブアプリケーションをホストしている場合にのみ適用されます。
これは リビジョン 1022134 で修正されました。
これは Tomcat セキュリティチームによって2010年10月12日に発見され、2011年2月5日に公開されました。
影響範囲: 7.0.0-7.0.3
2010年8月11日リリース Apache Tomcat 7.0.2 で修正済み
注: 下記の問題は Apache Tomcat 7.0.1 で修正されましたが、7.0.1 リリース候補版のリリース投票は通過しませんでした。したがって、この問題の修正を含むバージョンを入手するにはユーザーは 7.0.2 をダウンロードする必要がありますが、7.0.2 のバージョンは影響を受けるバージョンのリストに含まれていません。
重要: リモートサービス拒否および情報漏えいの脆弱性 CVE-2010-2227
'Transfer-Encoding' ヘッダーの処理にいくつかの欠陥が見つかり、バッファのリサイクルが妨げられていました。リモートの攻撃者はこの欠陥をトリガーすることができ、その結果、後続のリクエストが失敗したり、リクエスト間で情報が漏えいしたりする可能性がありました。この欠陥は、Tomcat がリバースプロキシ(Apache httpd 2.2 など)の背後にある場合、プロキシが無効な転送エンコーディングヘッダーを拒否するため、緩和されます。
これは リビジョン 958911 で修正されました。
これは2010年6月14日に Tomcat セキュリティチームに初めて報告され、2010年7月9日に公開されました。
影響範囲: 7.0.0
Tomcat の脆弱性ではありません
重要: サービス拒否 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-2012-5568
HTTP リクエストを1バイトずつ送信すると、BIO または APR/native HTTP コネクタを使用している場合、リクエストが完全に処理されるまで接続プールからスレッドが消費されます。複数のリクエストを使用すると、接続プール内のすべてのスレッドが消費され、サービス拒否が発生する可能性があります。
クライアント側のリソースとサーバー側のリソースの関係は線形であるため、この問題は Tomcat セキュリティチームが脆弱性と見なすものではありません。これは一般的な DoS 問題であり、魔法のような解決策はありません。この問題は Tomcat メーリングリストで何度か議論されています。これらの議論を確認するのに最適な出発点は、バグ 54236 のレポートです。
これは2009年6月19日に公開の Tomcat ユーザーメーリングリストで最初に議論されました。
影響範囲: 7.0.0-7.0.x
重要: リモートサービス拒否 CVE-2010-4476
JVM のバグにより、フォームベースのセキュリティ制約のあるページ、または javax.servlet.ServletRequest.getLocale() または javax.servlet.ServletRequest.getLocales() を呼び出すページにアクセスする際に、Double 変換によって JVM がハングアップする可能性がありました。特別に細工されたリクエストを使用して、サービス拒否をトリガーすることができました。
この JVM バグの回避策は、リビジョン 1066244 で提供されました。
これは2011年2月1日に Tomcat セキュリティチームに初めて報告され、2011年1月31日に公開されました。
影響範囲: 7.0.0-7.0.6
中程度: TLS SSL 中間者攻撃 CVE-2009-3555
TLS プロトコルには脆弱性が存在し、攻撃者が再ネゴシエーション中に任意の要求を TLS ストリームに挿入することができます。
Tomcat が使用する TLS 実装はコネクタによって異なります。ブロッキング IO (BIO) および非ブロッキング (NIO) コネクタは、JVM が提供する JSSE 実装を使用します。APR/native コネクタは OpenSSL を使用します。
使用されている JSSE のバージョンが脆弱な場合、BIO コネクタは脆弱です。脆弱なバージョンの JSSE を回避するには、コネクタ属性 allowUnsafeLegacyRenegotiation
を使用してください。この脆弱性から保護するためには、false
(デフォルト) に設定する必要があります。
7.0.10 より前の NIO コネクタは再ネゴシエーションをサポートしていないため、脆弱ではありません。
NIO コネクタはバージョン 7.0.10 以降で、使用されている JSSE のバージョンが脆弱な場合に脆弱です。脆弱なバージョンの JSSE を回避するには、コネクタ属性 allowUnsafeLegacyRenegotiation
を使用してください。この脆弱性から保護するためには、false
(デフォルト) に設定する必要があります。
APR/native の回避策は APR/native コネクタセキュリティページ に詳述されています。
ユーザーは、再ネゴシエーションを無効にすることの影響がアプリケーションとクライアントの両方で異なることを認識しておく必要があります。状況によっては、再ネゴシエーションを無効にすると、一部のクライアントがアプリケーションにアクセスできなくなる場合があります。
これは リビジョン 891292 で回避策が講じられました。
このセキュリティ問題がない新しい TLS 再ネゴシエーションプロトコル (RFC 5746) のサポート
- JVM が提供する JSSE 実装を使用するコネクタの場合: Tomcat 7.0.8 で追加されました。
RFC 5746 をサポートする JRE が必要です。Oracle JRE の場合、既知のバージョンは 6u22 以降です。
- APR と OpenSSL を使用するコネクタの場合
TBD. APR/native コネクタセキュリティページ を参照してください。
重要: リモートメモリ読み取り 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