Tomcat 9.0.98 のリリースノート

このドキュメントは 2024 年 12 月 9 日にリリースされた Tomcat 9.0.98 のリリースノートの日本語訳です。
ダウンロードは Tomcat ダウンロードより行えます。
以下はリリースの詳細と、最新情報およびドキュメントを補足するその他情報について記載しています。

脆弱性修正

* 以前の CVE-2024-50379 に対する緩和策は不完全でした。9.0.98 以降にアップグレードすることに加えて、デフォルトのサーブレット書き込みが有効になっている大文字と小文字を区別しないファイルシステムで Tomcat を実行しているユーザーは、使用している Java のバージョンに応じて追加の構成が必要になる場合があります。本件は 2024/12/20 に公開されています。(CVE-2024-56337)

  • Java 8 または Java 11 を使用している場合: システムプロパティsun.io.useCanonCachesを明示的にfalseに設定する必要があります。(デフォルトは true です)
  • Java 17 を使用している場合: システムプロパティsun.io.useCanonCaches が設定されている場合、それを false に設定する必要があります。(デフォルトは false です)
  • Java 21 以降を使用している場合: 追加の設定は不要です。(このシステムプロパティおよび問題のあるキャッシュは削除されています)

* 複数の Web アプリケーションサンプルでは、アップロードされたデータに制限が設けられておらず、OutOfMemoryError がトリガーされてサービス拒否が発生する可能性がありました。本件は 2024/12/17 に公開されています。(CVE-2024-54677)

* 大文字と小文字を区別しないファイル システムに対して、デフォルトのサーブレットが書き込み可能 (readonly 初期化パラメータがデフォルト以外の値である false に設定) になっている場合、同じファイルの読み込み中に読み取りとアップロードを同時に実行すると、Tomcat の大文字と小文字の区別のチェックがバイパスされ、アップロードされたファイルが JSP として扱われ、リモートコード実行につながる可能性がありました。本件は 2024/12/17 に公開されています。(CVE-2024-50379)

不具合修正(Catalina)

* storeconfig の SSLHostConfig の protocols 属性に特別な処理が追加されました。

* リクエストパラメータを解析する際の content-type での大文字と小文字を区別するチェックが修正されました。(69442)

* コンストラクターまたはプロパティ関連のメソッドがチェック済み例外をスローするコンポーネントと、生成された埋め込みコードの互換性が修正されました。

* 同時読み取りおよび書き込み中のリソースメタデータの不一致に対する以前の修正は不完全でした。この問題が修正されました。

* アプリケーション定義のエラーページが呼び出されるときに、jakarta.servlet.error.message リクエスト属性が設定されていることを確認するように修正されました。(69444)

* ステータスサーブレットによって生成された JSON 内の数値に引用符を使用しないように修正されました。

* ディレクトリリストにクライアントロケールを使用するように修正されました。

* ExpiresFilter の複数の Cache-Control ヘッダーの処理が改善されました。(69439)

* 外部リポジトリからロードされたクラスを考慮し、Web アプリケーションのクラスローダーが見つけられないクラスのキャッシュサポートが更新されました。この修正が行われる前は、これらのクラスは誤って見つからないとマークされる可能性がありました。(69447)

* HEAD リクエストの処理が見直されました。ユーザーが明示的に設定したヘッダーは削除されず、HEAD リクエストに存在するヘッダーは同等の GET リクエストにも存在します。RFC 9110 のセクション 9.3.2 に従って、GET リクエストに存在するが同等の HEAD リクエストには存在しないヘッダーがいくつかある可能性がありました。(69466)

* ApplicationDispatcher.invoke() によってキャッチされた CloseNowException のインスタンスが、クライアントの切断や同様の I/O の問題によって発生した可能性が高いため、エラーレベルではなくデバッグレベルでログに記録するように変更されました。(69471)

* DefaultServlet で PUT の失敗を報告しようとするときに、考えられる ISE をキャッチするように変更されました。(69476)

* デフォルトサーブレットは、要求された範囲が2つ以上重複している場合に HTTP 範囲要求を拒否するようになりました。

* デフォルトサーブレットによって処理される部分的な PUT 要求のコンテンツ範囲検証が強化されました。

* グローバルリソースでの DataSourceStore ルックアップを調整し、通常使用されない comp/env プレフィックスを省略できるようになりました。

* RFC 9110 で要求されているように、HTTP Range ヘッダーは GET 要求に対してのみ処理されるようになりました。

* デフォルトサーブレットの useAcceptRanges 初期化パラメータが廃止されました。このパラメータは Tomcat 12 以降で削除され、実質的に true にハードコードされます。

不具合修正(Coyote)

* encodedSolidusHandling がサーブレット仕様に合わせて調整されました。パススルーモードが使用されている場合、アプリケーションがパスをデコードするときにエラーや破損を回避するために、%25 シーケンスもパススルーされるようになりました。

不具合修正(Jasper)

* メソッドパラメータの EL 評価がさらに最適化されました。

* 69381 の修正に続き、式言語でのメソッドルックアップパフォーマンスの最適化が追加の場所にも適用されました。

不具合修正(Web applications)

* ドキュメント: ResourceParams 要素への参照が削除されました。Tomcat 5.5.x では、ResourceParams のサポートが削除されました。

* ドキュメント: RemoteIPFilter の属性名が修正されました。属性は allowedInternalProxies ではなく internalProxies です。(69477)

* 例:サーブレットリクエスト情報の例が、pathInfo コンポーネントを含む URL 経由で呼び出された場合に発生するリンク切れが修正されました。

* 例:リクエストヘッダーの例でのセッションクッキー値の難読化が JSONレスポンスにも拡張されました。

* 例:JSP カレンダーの例が削除されました。

不具合修正(Other)

* Tomcat 組み込み JAR を使用したネイティブイメージコンパイル中の警告が修正されました。(69465)

機能追加・改良(Catalina)

* DefaultServlet と同様に、WebDAV サーブレットでサブパスからのみリソースを提供するオプションが追加されました。

* content-type からメディアタイプとサブタイプを抽出するための重複コードを1つのメソッドにリファクタリングされました。

* WebDAV およびデフォルトサーブレットに強力な ETag サポートが追加されました。これは、値を true に設定した useStrongETags 初期化パラメータを使用して有効にできます。生成される ETag は、リソースコンテンツの SHA-1 チェックサムになります。

* 69442 の修正のテストケースが追加されました。また、application/x-www-form-urlencoded への参照がリファクタリングされました。

* RateLimitFilter で HTTP の RateLimit ヘッダーフィールド (ドラフト) のサポートが追加されました。

* 69478 の回帰テストが追加されました。

* WebdavServlet に DataSource ベースのプロパティストレージが追加されました。

機能追加・改良(Web applications)

* 例:サーブレットセッションの例でセッション属性を削除する機能が追加されました。

* 例:サーブレットセッションの例でセッションごとに属性の最大数を 10 にハードコードで制限するようになりました。

* 例:JSP フォーム認証の例に、セッション属性を削除する機能が追加され、セッションごとに属性の最大数を 10 にハードコードで制限するようになりました。

* 例:ショッピングカートの例で、事前に定義されたアイテムのみをカートに追加できるように制限されました。

機能追加・改良(Other)

* Tomcat の Commons DBCP フォークが 2.13.0 に更新されました。

* EasyMock が 5.5.0 に更新されました。

* Checkstyle が 10.20.2 に更新されました。

* BND が 7.1.0 に更新されました。

* フランス語翻訳が改善されました。

* 韓国語翻訳が改善されました。

* 中国語翻訳が改善されました。

* 日本語翻訳が改善されました。

詳細は以下をご覧ください。

https://tomcat.apache.org/tomcat-9.0-doc/changelog.html#Tomcat_9.0.98_(remm)
https://tomcat.apache.org/security-9.html#Fixed_in_Apache_Tomcat_9.0.98