今週2021年12月13日の Java 総まとめでは、JDK 19、Log4Shell 脆弱性の更新、製品に関連した Log4Shell のベンダーの声明、さまざまな Spring 関連プロジェクトと Hibernate のポイントリリース、WildFly 26、Payara Platform、Quarkus 2.5.3.Final、Apache Camel 3.14.0、Piranha 21.11.0、および Apache Tika 2.2.0 からのニュースを特集している。
JDK 18
JDK 18 がランプダウンフェーズ1に移行して1週間後、JDK 18 ビルドアクティビティは静かな週だった。ビルド 27 の詳細については、リリースノートに記載されている。
JDK 19
JDK 19 早期アクセスビルドのビルド 2 も先週利用可能になった。さまざまな問題の修正を含むビルド 1 から更新を行った。
JDK 18 および JDK 19 では、開発者は Java Bug Database を通じてバグを報告することが奨励されている。
Log4Shell 脆弱性の更新
CVE に2つの追加があった。CVE-2021-4104 と CVE-2021-45046 だ。元の Log4Shell 脆弱性である CVE-2021-44228 に関連して更新された情報を提供するためにリリースされた。
Log4Shell 脆弱性である CVE-2021-44228 に対応したバージョンである Log4j 2.15.0 は、特定のデフォルト構成以外で脆弱性がまだ存在しているため、不完全であると判断された。CVE-2021-45046 で説明されている:
これにより、攻撃者は、Context Lookup (たとえば、
$${ctx:loginId}
) または Thread Context Map パターン (たとえば、%X
、%mdc
、または%MDC
) を使用するデフォルト以外の Pattern Layout を使用したロギングを構成した時に Thread Context Map (MDC) の入力データを制御して、JNDI Lookup パターンを使用する悪意のある入力データを作成し、サービス拒否攻撃 (DOS) を引き起こすことを可能にします。Log4j 2.15.0 は、JNDI LDAP ルックアップをデフォルトでローカルホストに制限するために最善を尽くします。Log4j 2.16.0 は、メッセージルックアップパターンのサポートを削除し、デフォルトで JNDI 機能を無効にすることで、この問題を修正します。
Log4Shell 脆弱性へのベンダーの声明
Red Hat の Quarkus のステートメント:
Quarkus は以前から、拡張機能、および依存関係で log4j バージョン 2 コアライブラリを使用していないため、この脆弱性の影響を受けません。ほとんどの場合、Quarkus が支援するプロジェクトでは修正措置の必要はありません。
Red Hat の WildFly のステートメント:
この脆弱性は、Log4j 2 の
org.apache.logging.log4j:log4j-core
アーティファクトのコードにあります。WildFly アプリケーションサーバプロジェクトはこのアーティファクトを同梱していません。したがって、WildFly で実行されているアプリケーションが CVE-2021-44228 脆弱性により脆弱になる唯一の原因は、ユーザ提供の JBoss Modules モジュールを通してか、または log4j-core をアプリケーションデプロイメントアーティファクトにパッケージ化したようなことによって、log4j-core アーティファクトがサーバインストールに追加された場合です。
Tomitribe のTomcat、TomEE と ActiveMQ のステートメント (脆弱性の詳細な説明とテスト方法が含まれている):
Tomcat、TomEE、および ActiveMQ 自体は log4j2 が同梱されていないため、デフォルト構成ですぐに実行しても、この問題に対する脆弱性はありません。
Hibernate の Hibernate プロジェクトのステートメント:
Hibernate プロジェクトは、CVE-2021-45046 および CVE-2021-44228 の脆弱性の影響を受けません。どの Hibernate プロジェクトも、Log4j コアに実行時依存関係はありません。
私たちは JBoss Logging を使用しています。これは、選択したロガーバックエンドに最小限の API ブリッジを提供し、JNDI ルックアップに依存する高度な機能を備えていません。
Object Computing, Inc. の Micronaut Framework のステートメント:
デフォルトでは、Micronaut アプリケーションは Logback を使用します。したがって、ほとんどの Micronaut アプリケーションは影響を受けません。
ただし、アプリケーションが信頼できないログメッセージの入力があり、推移的な依存関係として
log4j-core
をプルしている場合、アプリケーションは脆弱になります。
Apache Software Foundation の プロダクション環境での Apache Camel についてのステートメント:
Apache Camel は Log4j 2 に直接依存していないため、CVE-2021-44228 の影響を受けません。
もし、Log4j 2 への依存を自身のアプリケーションで明示的に追加した場合は、必ずアップグレードしてください。
IBM のステートメントでは、Open Liberty の Log4j CVE-2021-44228、CVE-2021-4104、および CVE-2021-45046 に関して、いくつかの FAQ を含むガイドを提供している:
Open Liberty は log4j を同梱しないため、OpenLiberty によってログに記録されたデータが危険にさらされることはありません。ただし、log4j は広く使用されているフレームワークであり、アプリケーションで Log4J を使用している可能性があります。その結果、アドバイスを求める開発者向けに次の Q&A を用意しました。
Spring Framework
プロジェクトの多くでポイントとマイルストーンリリースが行われたため、Spring は忙しい1週間だった。
Spring Framework 5.3.14 と 5.2.19 がリリースされ、それぞれ 36 のバグ修正と改善、11 のバグ修正と改善が行われた。
Spring Framework 6.0 への道のりで、JDK 17 以降と Jakarta EE 9 を必要とする基盤を構築する最初のマイルストーンリリースが利用可能になった。新しいインフラストラクチャの一部には、非推奨の廃止された機能のクリーンアップも含まれる。開発者はアップグレードページを確認することを推奨する。また、詳細については、この InfoQ ニュース記事に記載されている。
Spring Cloud 2020.0.5 (コード名 Ilford) がリリースされ、Spring Cloud Kubernetes、Spring Cloud Gateway、Spring Cloud Vault、Spring Cloud Config などの Spring Cloud サブプロジェクトのアップグレードが代表的なものだ。
Spring GraphQL 1.0.0 の4番目のマイルストーンリリースが利用可能になり、アノテーションプログラミングモデルが改善され、Spring GraphQL 1.0.0-M3 から Spring Data サポートが拡張された。Spring GraphQL 1.0.0-M4 の新機能には、インターフェースプロジェクションと GraphQL 引数の標準 Bean バリデーション、および Query by Example のサポートなどがある。
Spring Cloud Square 0.4.0-RC1 がバグ修正リリースとして利用可能になった。詳細については、リリースノートに記載されている。
WildFly
Red Hat は WildFly 26 と WildFly Preview 26 をリリースした。開発者が環境変数で管理属性値をオーバーライドできるようにすることによるクラウド構成の改善、Elytron サブシステムの新しい JAAS セキュリティレルムタイプだ。詳細については、問題リストに記載されている。
WildFly 26 Source-to-Image (S2I) Docker イメージが、コンテナイメージを構築、分析、および配布するための Red Hat のユーティリティである quay.io でリリースされた。これらのイメージで、quay.io/wildfly/wildfly-centos7 および quay.io/wildfly/wildfly-runtime-centos7 イメージは非推奨になった。
Payara
Payara は、Payara Platform の2021年12月版をリリースした。Payara Platform Community 5.2021.10 版には、6つの改善、1つのセキュリティ修正、7つのバグ修正、および2つのコンポーネントのアップグレードが含まれている。Payara Platform Enterprise 5.34.0 版には、7つの改善、1つのセキュリティ修正、8つのバグ修正、および1つのコンポーネントアップグレードが含まれている。
両者のセキュリティ修正は、KeyInfo
および KeyInfoReference
クラスの作成時に secureValidation
プロパティが誤って渡されるバージョン 2.2.3 および 2.1.7 より前の Apache Santuario で識別された脆弱性である CVE-2021-40690 に対処している。これは、攻撃者が XPath 変換を悪用して、RetrievalMethod
要素のローカル .xml
ファイルを抽出できるようにするものだ。
詳細については、Community と Enterprise エディションのリリースノートに記載されている。
Hibernate
Hibernate Reactive 1.1.1.Final がリリースされ、Hibernate ORM 5.6.2.Final がサポートされている。詳細については、問題リストに記載されている。
Hibernate Validator 6.2.1.Final および 7.0.2.Final のメンテナンスリリースが先週利用可能になった。すべての Hibernate プロジェクトに JBoss Logging を同梱しているという事実にもかかわらず、Log4j2 がテストでの依存関係に残されており、セキュリティスキャンが可能な限りのきめ細かさではないと判断された。
Quarkus
3番目のメンテナンスリリースである Quarkus 2.5.3.Final が Red Hatによって利用可能になった。多数のバグ修正とドキュメントの改善が行われた。詳細については、変更ログに記載されている。
Apache Camel
Apache Camel 3.14.0 は、111の新機能、改善、バグ修正で利用可能になった。これは、JDK 8 をサポートする最後のバージョンだ。詳細については、リリースノートに記載されている。
Piranha
Piranha 21.11.0 がリリースされた。「私たちはもうそこにいますか?」エディションに吹き替えられ、このリリースには、Piranha Micro および Piranha Server の Maven プラグインが備わっている。詳細については、ドキュメントと課題追跡システムがある。
Apache Tika
Apache Tika は、メタデータ抽出ツールキットのバージョン 2.2.0 をリリースした。以前は Apache Lucene のサブプロジェクトだったが、この最新バージョンでは、log4j 2.15.0 へのアップグレード、Office365 からダウンロードした OneNote ファイル用の新しいパーサ、JPEG XL、MARC、ICC プロファイルなどのファイル検出に対する多数の改善、tika-pipes
モジュールの改善などがある。