Tomcat 8.5.75 のリリースノート

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

Tomcat 8.5.74 はリリースされませんでした。

8.5.75

不具合修正(Coyote)

* HTTP/2 サーバプッシュが動作しなくなる問題 65785 に対する修正でのリグレッションが修正されました。

8.5.74

脆弱性修正

* ローカルでの権限上昇 CVE-2022-23181: CVE-2020-9484 バグの修正により、検査時間、使用時間の脆弱性が入り込み、このために、ローカルの攻撃者は Tomcat プロセスを使用しているユーザの権限でアクションを実行することができました。この問題は、Tomcat が FileStore を使ってセッションを永続化するよう設定された場合のみ発現します。この問題が修正されました。(CVE-2022-23181)

不具合修正(Catalina)

* 提供されたクレディンシャルの期限が切れている場合の SPNEGO 認証がより強固になりました。

* JULI を使用した場合の潜在的な NullPointerException が修正されました。(65684)

* AprLifecycleListener を使って JVM のクラッシュを回避することが可能な場合の条件が記載されました。

* AsyncFileHandler がリファクタリングされ、シャットダウン時にログメッセージが失われる可能性が低くなりました。

* 入力ストリームと出力ストリームにリサイクルのチェック isReady が追加されました。これは、facade がリサイクルされた時により有用な ISE を提供しようと試みます。

* ファイルベースの永続的ストレージを使用している場合の、セッションストレージの位置の計算がより堅牢になりました。

不具合修正(Coyote)

* TLS 付で APR/Native コネクタを使用している場合の潜在的な JVM のクラッシュが修正されました。接続で TLS ハンドシェーク実行中にコネクタが停止するとクラッシュが発生する可能性がありました。

* NIO2 で HTTP/1.1 の読み込み時のエラーに対する例外処理が改善されました。(65677)

* APR/native コネクタのシャットダウンがリファクタリングされ、sendfile が使われている際のシャットダウンでの JVM クラッシュの潜在的な原因が取り除かれました。

* ストリームのリセットを引き起こすエラーが発生した場合、クライアントに送られる最初の RST フレームが、リセットを引き起こしたエラーに付随するものであることが保証されるようになりました。

* セキュリティマネージャが有効化されていて、かつ、起動後に受け取った最初のリクエストが TLS が有効化された NIO2 コネクタに対する HTTP リクエストである場合の例外が修正されました。(65714)

* リクエストがボディを含んでいる場合の HTTP/1.1 アップグレードのサポートが実装されました。ボディの許される最大サイズは maxSavePostSize で設定されます。(65726)

* 65454 に対する修正でなくなっていた minSpareThreads の事前起動が元に戻されました。

* Servlet コンテナの他のコンテナスレッドへのディスパッチの際に、最初の IO リスナ通知が送付されていませんでした。この問題が修正されました。(65757)

* 65757 に対する修正が展開され、単にプロセスがコンテナスレッドで処理が発生しているかをチェックするだけでなく、このリクエスト/レスポンスに現在割り当てられているコンテナスレッドで発生しているかどうかがチェックされるようになりました。

* ストリームに対する入ってくる HTTP/2 フレームの並列処理時の潜在的なデッドロックとそのストリームがリセットされるのが回避されました。

* HTTP/2 使用時の HTTP ヘッダの追加の検証が行われるようになりました。(65785)

* Connector や Endpoint が一時停止した場合、新しい接続や既存の接続上の新しいリクエストだけが停止し、進行中のリクエストは完了まで実行が継続されることが保証されるようになりました。

* NioEndpoint や Nio2Endpoint が停止する時、プールされたチャンネルに付随する ByteBuffer インスタンスが明示的に解放されるようになりました。

* 不正なクッキーヘッダのログ出力の範囲が狭められ、クッキーヘッダ全体ではなく、不正なクッキーそのものだけとなりました。

不具合修正(Jasper)

* リソース文字列に使用された名前のタイポにより発生していた、PropertyNotWritableExceptions のメッセージが欠けていることがあった問題が修正されました。(65724)

不具合修正(WebSocket)

* メッセージの書き込みが、メッセージを全部書き終える前にタイムアウトした場合の WebSocket 接続のクローズの処理が改善されました。(65763)

不具合修正(Other)

* コードカバレッジのツールが Cobertura から JaCoCo に切り替えられました。これは、Cobertura が Java 11 以降でコンパイルされたコードのコードカバレッジをサポートしていないためです。これにより、テストを実行するのにシングルスレッドを使う必要があるという制限も取り除かれました。

機能追加・改良(Catalina)

* AsyncFileHandler がリファクタリングされ、org.apache.juli.AsyncLoggerPollIntervalが不要となりました。設定された場合、このプロパティは何も効果を持たなくなりました。

* RestCsrfPreventionFilter にデバッグログ出力が追加されました。

* マルチパートのアップロードを使用し、かつ、アプリケーションがディスク上にキャッシュされたアップロードファイルの入力ストリームを明示的にクローズしない場合のファイル記述子の漏洩を引き起こす JVM のバグの回避策が実装されました。(65710)

* 非推奨となっていた JmxRemoteLifecycleListener が削除されました。

機能追加・改良(Coyote)

* アクセプタが一個の入ってくる接続について複数回レポートしてしまう問題を引き起こす、既知の OS のバグに対する保護策が提供されました。

* TLS として OpenSSL と共に NIO または NIO2 を使用した場合、信頼できる認証局が設定されておらず、全てのクライアント証明書を拒絶する場合、MacOS でも Linux や Windows 上で同様に振る舞うことが保証されました。

* PBES2 を使って暗号化された鍵を使用する証明書のサポートが追加されました。(65767)

* String が有効な HTTP トークンかどうかのテストがリファクタリングされました。

機能追加・改良(Jasper)

* コンパイラのソースや JSP コンパイルのコンパイラターゲットとして Java 18 を 18 という値を使って指定できるようになりました。この値をサポートしていないバージョンの Eclipse JDT コンパイラで使用した場合には、警告が出力され、デフォルトが使用されます。

機能追加・改良(WebSocket)

* POJO WebSocket エンドポイントに、アプリケーションが HTTP 接続を WebSocket にアップグレードすることを選択することができる、プログラマティックアップグレードのサポートが追加されました。

機能追加・改良(Other)

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

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

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

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

* NSIS インストーラが 3.08 に更新されました。

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

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

https://tomcat.apache.org/security-8.html#Fixed_in_Apache_Tomcat_8.5.75

https://tomcat.apache.org/tomcat-8.5-doc/changelog.html#Tomcat_8.5.75_(schultz)