このドキュメントは 2022 年 02 月 23 日にリリースされた Tomcat 8.5.76のリリースノートの日本語訳です。
ダウンロードは Tomcat ダウンロードより行えます。
以下はリリースの詳細と、最新情報およびドキュメントを補足するその他情報について記載しています。
脆弱性修正
* リクエストの混合 CVE-2022-25762: Web アプリケーションが、WebSocket の接続をクローズするのに並行して WebSocket メッセージを送信した場合、アプリケーションはクローズされた後のソケットを使い続けることができていました。この場合にトリガされるエラー処理は、プールされていたオブジェクトを2回プールに置くことになります。その結果、後続の接続では同じオブジェクトを並行して使用することとなり、そのため、返されたデータが誤用や他のエラーとなってしまう可能性がありました。この問題が修正されました。(CVE-2022-25762)
不具合修正(Catalina)
* FIPS 準拠の設定の場合のように、SecureRandom (SHA1PRNG) に対するデフォルトのアルゴリズムを設定プロバイダがサポートしていない場合のセッション ID 生成処理が改善されました。(65806)
* スレッドコンテキストクラスローダが設定されていな場合に JULI をロードするのに使用したクラスローダが使われるようになりました。通常の Tomcat の設定では、これはシステムクラスローダになります。(#464)
* Tomcat が web application からロードしないクラスに Jakarata Annotations API が含まれるようになりました。(#469)
* コピーまたは削除中のエラーの後に WebDAV マルチステータス応答を生成する際の潜在的な StringIndexOutOfBoundsException 例外が修正されました。エラーの発生したどのリソースについてもサーバルートに対する相対パスが報告されるようになりました。
* WebDAV XML 応答のフォーマットが改善され、人が読みやすくなりました。今回の変更では、新しい要素の開始前に必ず改行が入るようになりました。
* WebDAV の MOVE と COPY リクエストの Destination ヘッダの検証が改善されました。
不具合修正(Coyote)
* サポート環境の変更に従い、ソケットのクローズのリファクタリングがバックポートされました。これにより、ソケットは一回だけクローズされることが確実になりました。ソケットに付随するプールされたオブジェクトは、ダミーのインスタンスに置き換えられます。これは、ソケットがクローズされた後も使い続けようとするアプリケーションに対する保護となります。
* 65454 に対する修正でのリグレッションが修正されました。このリグレッションでは、Connector が内部エグゼキュータを使用している場合に minSpareThreads と maxThreads の設定が無視されていました。
* Linux で “Duplicate accept detected” というエラーになるバグの検知が改善され、偽陽性となるインスタンスが少なくなりました。(65776)
* MacOS と Linux/Windows 間の TLS に対して OpenSSL を使用した NIO または NIO2 とのクライアント証明書認証の振る舞いを揃えることを試みた変更が元に戻されました。根本原因は設定の差異にあったことが判明したからです。(65848)
* システム時刻が過去に戻った時(たとえば時刻合わせの後など)に、HTTP ヘッダに使用される、フォーマットされた現在日時がこの変更に追従することが確実となりました。(#467)
* オブジェクトのキャッシュが無効化されているときは、それらの作成や使用が回避されるようになりました。
不具合修正(Jasper)
* タグファイルが呼び出しページの ELContext を破壊するのが抑止されるようになりました。(#474)
* プルリクエスト #476 に対する FunctionMapperImpl のシリアライゼーションの小さな最適化が行われました。
不具合修正(Web applications)
* アプレットは主要などのブラウザでもサポートされなくなったので、Examples Web Application からアプレットの例が削除されました。
* JNDIRealm の protocol 属性の説明が改善されました。
* Documentation Web Application で記述されている静的メンバーシップを使ってクラスタを設定するための設定方法の説明が明確になりました。
不具合修正(Other)
* Ant ビルドファイル中の個々のテストターゲットの依存関係が修正されました。
機能追加・改良(Catalina)
* Server 要素に portOffset 属性が追加されました。これは、設定された shutdown と Connector ポートに追加されます。(61171)
* graceful シャットダウン機能が強化されました。 StandardService に新たなオプション gracefulStopAwaitMillis が追加され、これにより、Container 階層が停止する前に、クライアントの接続とクローズが完了するのを待つ時間が指定可能になりました。(64080)
* TLD, Web 断片、アノーテーションをスキャンする際にスキップすべき JAR のリストに ha-api-*.jar と jaxws-rt-*.jar が追加されました。
* ServletResponse.setLocale() が使用するデフォルトマッピングが、ja ロケールから Shift_JIS エンコーディングへのマッピングを含むように拡張されました。
* TomcatPrincipal と GenericPrincipal に追加のユーザ属性のサポートが追加されました。(#471)
機能追加・改良(Coyote)
* NIO の pollerThreadCount Connector 属性が削除されました。ポーラスレッドは一つあれば十分だからです。
機能追加・改良(Web applications)
* Examples Web Application でいくつかのページがリファクタリングされ、Ant の zip 操作の際に異なるオペレーティングシステムの間でファイルの順番に違いがでるために発生する再現可能なビルドでの問題が回避されるようになりました。
* OpenSSLConf と OpenSSLConfCmd 要素についての情報が、Documentation Web Applications の HTTP SSL 設定ページに追加されました。
機能追加・改良(jdbc-pool)
* JAR 中のテキストファイルの行末に LF が使用されるようになり、異なるオペレーティングシステムでも再現可能なビルドがサポートされました。
機能追加・改良(Other)
* Java 11 でのビルドに切り替えられ、Java 8 をターゲットとする場合は –release が使われるようになりました。一旦、現在サポートされている全てのブランチにバックポートされれば、開発者が取り組まなければならない Java のバージョン数が少なくなります。
* JAR 中のテキストファイルの行末に LF が使用されるようになり、異なるオペレーティングシステムでも再現可能なビルドがサポートされました。
詳細は以下をご覧ください。
https://tomcat.apache.org/security-8.html#Fixed_in_Apache_Tomcat_8.5.76
https://tomcat.apache.org/tomcat-8.5-doc/changelog.html#Tomcat_8.5.76_(schultz)