Tomcat 9.0.74 のリリースノート

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

脆弱性修正

* Apache Tomcat サービス妨害 CVE-2023-28709: CVE-2023-24998 についての修正が不充分でした。デフォルトではない HTTP コネクタ設定が、maxParameterCount がクエリ文字列パラメータを使うことで到達する可能性があり、クエリ文字列でちょうど maxParameterCount 個のパラメータが指定されるようにリクエストが投稿されるという使い方をされた場合、アップロード済みリクエストの一部がバイパスされ、サービス妨害が発生する可能性がありました。この問題が修正されました。(CVE-2023-28709)

不具合修正(Catalina)

* RFC 9239 が実装され、JavaScript のメディアタイプとして、application/javascript の代わりに text/javascript が使われるようになりました。(65995)

* Tomcat.addWebapp() メソッドの Javadoc が、docBase パラメータが相対パスであっても良いと誤って述べていた箇所が修正されました。(66527)

* WebResource キャッシュの追い出し順序が意図通りの LRU に修正されました。(66524)

* HTTP リクエストのヘッダのうち、機微情報であり、TRACE リクエストに対するレスポンスを生成する場合にスキップすべきもののセットが拡大されました。これは、Tomcat バージョン 11.0.x に合わせた対応です。

* カスタム URL スキームを使用するリソースに対する、キャッシュされたリソースの取り扱いが改善されました。スキーム固有の equals() および hashcode() のアルゴリズムが存在する場合は、これらのリソースの URL に対して使用されるようになりました。これにより、いくつかの OSGi カスタム URL スキームでの潜在的な性能の問題が解決されます。OSGi カスタム URL スキームでは、設定によっては時間のかかる DNS 検索を引き起こす可能性がありました。(66541)

* カスタムのセッションマネージャが Web アプリケーションの一部としてデプロイされている場合、リクエストから抽出したセッション ID の検証時に ClassNotFoundExceptions が発生する問題が回避されました。

* StandardContext#fireRequestDestroyEvent に対し、それ自身のログメッセージが与えられました。(66543)

* サーバ初期化中に Random が初期化されるようになり、いくつかのプラットフォームで WebApp のコンテキストで JVM のスレッドが作成される可能性が回避されるようになりました。(66554)

不具合修正(Coyote)

* JSON フィルターは、RFC 8259 で規定されているような良く使われる特殊文字について個別のエスケープ処理をサポートするべきでした。このエスケープ処理が実装されました。

* ダイレクトバッファと共に使用された場合の GzipOutputFilter (圧縮された HTTP レスポンスで使用されます) が修正されました。(66511)

* 不正な HTTP レスポンスヘッダの AJP による処理が HTTP の処理に揃えられました。不正なヘッダはレスポンスから削除されるようになっています。(66512)

* バグ 66442 の修正で入ったリグレッションが修正されました。このリグレッションでは、いくつかの接続で、ERR_HTTP2_SERVER_REFUSED_STREAM に先行して完了する場合に、レスポンスボディのないストリームがアクティブなストリーム数を減らしていませんでした。(66530)

不具合修正(Jasper)

* タグファイルのパーシングが修正されました。タグファイルによってはタグディレクティブが無視される可能性がありました。(66536)

不具合修正(Cluster)

* FarmWarDeployer の maxValidTime 属性が、転送がキャンセルされる前に転送されたファイルの部分を受信するのと付随するリソースの後始末処理の間で許される最大時間に再定義されました。ファイル転送がキャンセルされた場合、新たな警告メッセージがログ出力されます。(66535)

不具合修正(WebSocket)

* WebSocket を NIO2 と共に使用する場合、書き込み中に I/O エラーが発生した場合はクローズフレームを送出するまえにタイムアウトを待つことが回避されるようになりました。(66508)

不具合修正(Other)

* catalina.sh の version コマンドを呼び出す際に、catalina.sh 内で $JAVA_OPTS が JVM に渡されていなかった問題が修正されました。(66507)

* JRE_HOME あるいは JAVA_HOME が正しく設定されていない場合のエラーメッセージが改善されました。Windows では、起動スクリプトとサービスのインストールスクリプトで、JRE_HOME と JAVA_HOME の処理が揃えられました。

機能追加・改良(Catalina)

* JSON フォーマットを使用するアクセスログバルブが追加されました。

* FORM 認証プロセスがセッションを作る場合、セッションタイムアウトを短くすることで、DoS 攻撃に対して FORM 認証プロセスが強化されました。このタイムアウトの間隔は FORM オーセンティケータの authenticationSessionTimeout 属性で設定できます。

* server.xml を使って maxParameterCount のデフォルト値が 10,000 から 1,000 に減らされるようになりました。server.xml に設定がない場合は、デフォルトは 10,000 のままです。

* Digest 認証が更新され、RFC 7616 に準拠するようになりました。これにより、新たな設定属性、アルゴリズムが、DigestAuthenticator にデフォルトを SHA-256,MD5 として追加されました。

* RealmBase にカスタムユーザ属性のサポートコードが追加されました。

* サーバのユーティリティエグゼキュータが、org.apache.tomcat.util.threads.ScheduledThreadPoolExecutor という名前の Servlet コンテキスト属性を使用する WebApp から利用可能になりました。

機能追加・改良(Coyote)

* SocketWrapper をロックする同期ブロックがリファクタリングされ、ReentrantLock を使ってプロジェクト Loom を試してみたいユーザがサポートされるようになりました。

機能追加・改良(Other)

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

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

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

* MD5Encoder を使用するコードがリファクタリングされ、HexUtils.toHexString() を使用するようになりました。

* Commons DBCP の内部フォークが f131286 (2023-03-08, 2.10.0-SNAPSHOT) に更新されました。これにより、9.0.71 で入ったリグレッションが修正されました。

* UnboundID が 6.0.8 に更新されました。

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

* Jacoco が 0.8.9 に更新されました。

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

https://tomcat.apache.org/security-9.html#Fixed_in_Apache_Tomcat_9.0.74

https://tomcat.apache.org/tomcat-9.0-doc/changelog.html#Tomcat_9.0.74_(remm)