QuarkusはLog4Jの脆弱性の影響を受けません。
多くの方がご存知のように、Java コミュニティは、Apache Log4J 2 のロギング・ライブラリに広範な脆弱性が存在することで揺れています。この脆弱性についての詳細は、https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-44228[CVE-2021-44228] に記載されています。
Quarkus、そのエクステンション、および依存関係は、log4jバージョン2のコアライブラリを使用していないため、この脆弱性の影響を受けることはありません。ほとんどの場合、Quarkusを使用したプロジェクトに修正措置は必要ありません。Quarkusはlog4j API jarを公開しており、それ自体は脆弱性ではありません。これは純粋に互換性と翻訳レイヤであり、異なるロギングバックエンド(JBoss Logging)への呼び出しをマッピングします。したがって、log4j APIを直接使用する場合は、影響を受けません。
セキュリティスキャンの誤検知について
セキュリティスキャンを行うツールは、推移的依存関係と、実際にアプリケーションにバンドルされたり設定されたりするものを区別するほど賢くはありません。
そのため、このようなツールから、Quarkusやそのエコシステム内の一部のエクステンションが影響を受けていると偽って報告されることがありますが、実際には影響を受けていません。
このような発見の例として、Camel NSQ、Camel Corda 、Vert.xがあり、 これらの依存関係にはlog4j-core.jarが含まれていますが、Quarkusを使用する際には決して使われず、いかなる形でも有効にはなりません。
QuarkusおよびQuarkusエクステンションでは、このような誤検出を減らすためのアップデートが行われていることが確認出来ます。Quarkusのユーザーおよび消費者として、アプリケーションはlog4jの脆弱性にさらされることはありません。
Red Hat 製品セキュリティ情報
Red Hatの製品セキュリティ情報 には、"Red]Hat Integration Camel Extensions for Quarkus" が影響を受けると記載されています。これは、Red Hatの製品化されたビルド中に、Maven依存関係の推移的な性質により、生成されたMavenリポジトリのZIPファイルにlog4j-core.jarが含まれたため、このように分類されています。つまり、Camel Quarkusを使用している場合は、log4jの脆弱性の影響を受けませんが、Red Hat製品は技術的にlog4j-core.jarを「出荷」しているので、影響を受けるとマークされています。
Camelチームは、このMavenリポジトリのZIPファイルからlog4jを削除するためのアップデートを行います。QuarkusまたはCamel Quarkusのユーザーとして、影響を受けることはありません。
推奨事項
Quarkus自体はLog4jコア実装ライブラリを使用または有効にしませんが、Quarkusまたは他の汎用Javaベースのフレームワークで構築されたアプリケーションは、カスタムコードでデフォルトのログ機能を回避することが常に可能です。
さらに、アプリケーションの依存関係を監査したり、 log4j2.formatMsgNoLookups
システムプロパティを true
に設定したりすることをお勧めします。後者は、この脆弱性が意図せずに含まれてしまうことを防ぎます。これを行う簡単な方法は、Quarkusのコマンドラインに -Dlog4j2.formatMsgNoLookups=true
を追加することです。
しかしながら、もし何らかの理由でクラスパスにlog4j-coreがあり、ログを取るように設定されているならば、最善の行動は、それがバージョン2.16以上にアップグレードされていることを確認することです。
この脆弱性の後、我々は他の同様の問題が現れるのを見てきました - log4jの脆弱性ほど深刻ではありませんが、我々は積極的に監視しており、状況が変わればこのブログとQuarkus公式Github Discussionsの発表トピックをアップグレードします。
この重大な問題に迅速に対応したJavaとセキュリティコミュニティ、特にLog4J 2のコントリビューターに賞賛を送ります。
特に、この脆弱性の影響を受けているプロジェクトを迅速に公開することを可能にした、SonatypeのOSSリポジトリホスティングに感謝いたします。