Tomcat 8.5.83 のリリースノート

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

脆弱性修正

* Apache Tomcat リクエストスマグリング CVE-2022-42252: Tomcat は、rejectIllegalHeader を false に設定する(デフォルト設定ではありません)ことで不正な HTTP ヘッダを無視するように設定されていた場合、不正な Content-Length ヘッダを含むリクエストを拒絶しないため、Tomcat が、やはり、不正なヘッダがあるリクエストを拒絶するのに失敗するリバースプロキシの背後に置かれている場合、リクエストスマグリング攻撃が可能となっていました。この問題が修正されました。(CVE-2022-42252)

不具合修正(Catalina)

* Cookie 値をアクセスログ valve にログ出力し、同名の複数の Cookie がある場合、最初の Cookie 値だけでなく全ての Cookie 値がログ出力されるようになりました。(66183)

* JULI の root logger がデフォルトのレベル INFO となることが保証されました。(66184)

* SSI 式のパーシングの際のスタックオーバーフローエラーの処理が改善されました。

* 認証の処理中にセッションの保持と復元が発生した場合に FORM 認証が正しく動作するようになりました。(66120)

* リクエストの持つ Cookie が多すぎる時の 400 応答を送付する際、エラーメッセージもふくめられるようになりました。(66233)

* JAR が重複したフラグメント名を持つことにより、Web アプリケーションのデプロイメントに失敗した場合、重複が含まれている JAR の一覧を示すようにエラーメッセージが改善されました。

* JULI の AsyncFileHandler 用のログ出力スレッドが、ログ出力の失敗に対して保護を行う executor に置き換えられました。

* URL がエンコードされた行末記号を含む場合の想定外の動作を回避するため、RewriteValve が更新され、dotall モードを使ってパターン照合が行われるようになりました。

不具合修正(Coyote)

* Content-Disposition ヘッダ中の不正なファイル名のディレクティブのパーシングがより堅牢になりました。不正なファイル名のディレクティブは 500 応答を発生させるのではなく無視されるようになりました。

* HTTP/2 ストリームのクローズ(通常クライアントのエラーにより引き起こされる)を UserDataHelper 経由でログ出力する動作が、パーシングの問題や制限超えについての HTTP/1.1 の動作に概ね揃えられました。(66194)

* TLS リネゴシエーションと共に使用される Connector の maxSavePostSize を設定する際の特別な値ゼロと -1 のサポートが実装されました。(66236)

* オクテットをパーシングする際の int のオーバーフローが、最大値を 255 に制限することで回避されました。(66240)

* Servlet が、リクエスト本体を読むことなしに 2xx 応答を返すことを期待してリクエストに応答する場合が正しく処理されるようになりました。(#550)

* HTTP/2 プリフェイスとの照合の際の誤ったチェックを修正することで、潜在的な IndexOutOfBoundsException が回避されました。(#551)

* HTTP/2 ストリームの派生を追加する際の誤ったクラスのキャストが修正されました。(66276)

* HTTP/2 と NIO2 を使用している場合のクライアントの切断として発生する想定外のタイムアウトが修正されました。(66281)

* 不正な content-length ヘッダを持つリクエストは常に 400 応答で拒絶すべきであるという RFC 7230 以降の要件が強制的に適用されるようになりました。

不具合修正(Jasper)

* EL 式をパーシングする際のスタックオーバーフローエラーの処理が改善されました。

* EL 式中の整数と浮動小数点のリテラルのパーシングが修正され、より大きな値がそれぞれ、BigInteger と BigDecimal に正しくパースされるようになりました。

* Expression Language 実装の ImportHandler の性能が改善されました。この改善では、役に立つどころか有害になってしまった以前の最適化は削除されています。

* EL のエラーメッセージの処理が改善され、Number のインスタンスが予期しない仕方でフォーマットされることがなくなりました。

* EL 算術演算中に型変換に失敗した場合、IllegalArgumentException ではなく ELException を使うように切り換えられました。これは、EL のエラーなので ELException がより適切です。

* MethodExpression の処理のバグが修正されました。このバグは、static メソッドを直接クラスに対して起動するのではなく、クラスのインスタンスに対して起動したときにエラーを引き起こしていました。

* EL 式の一部として BigInteger のインスタンスに対する剰余演算を行う場合、BigInteger.mod() ではなく BigInteger.remainder() が使われるようになりました。

* Stack ArrayDeque のリファクタリングでのリグレッションが修正されました。(66277)

不具合修正(Cluster)

* 将来、新たな機能が追加された場合に備えて、DeltaRequest に認識できないアクションタイプが渡された場合、IllegalArgumentException を投げるのではなく、警告メッセージがログ出力されるようになりました。

* 認証の処理中にセッションの保持と復元が発生した場合に FORM 認証が正しく動作するようになりました。(66120)

不具合修正(Web applications)

* CsrfPreventionFilter の nonceRequestParameterName 属性の説明が記載されました。

不具合修正(Other)

* Zip アーカイブがファイル変更時刻として UTC を使用することが保証され、これにより、タイムゾーンが異なっても同じビルドになることが保証されました。

機能追加・改良(Catalina)

* HTML ではなく JSON でレスポンスを返す ErrorReportValve を拡張した JsonErrorReportValve が追加されました。

機能追加・改良(Jasper)

* JSP コンパイラがコード生成用の出力ディレクトリを作成することができない場合のエラーメッセージをログ出力するようになりました。(66203)

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

機能追加・改良(WebSocket)

* 認証を必要とするフォワードプロキシ経由で WebSocket エンドポイントに接続を確立する際の、WebSocket クライアントの HTTP フォワードプロキシとの認証がサポートされました。(62312)

機能追加・改良(Other)

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

* チェコ語翻訳が改善されました。

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

* ドイツ語翻訳が改善されました。

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

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

* ロシア語翻訳が改善されました。

* スペイン語翻訳が改善されました。

* ビルドプロセスの自動化が進められ、リリースマネージャが行わなければならない手動操作のステップ数が削減されました。

* Objenesis のバージョンが 3.2 に更新されました。

* UnboundID のバージョンが 6.0.6 に更新されました。

* Checkstyle のバージョンが 10.3.4 に更新されました。

* JaCoCo のバージョンが 0.8.8 に更新されました。

* SpotBugs のバージョンが 4.7.2 に更新されました。

* JSign のバージョンが 4.2 に更新されました。

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

https://tomcat.apache.org/security-8.html#Fixed_in_Apache_Tomcat_8.5.83
https://tomcat.apache.org/tomcat-8.5-doc/changelog.html#Tomcat_8.5.83_(markt)