ElasticsearchおよびLiferay Enterprise Searchのセキュリティアドバイザリ:2021年12月11日(Log4j2、CVE-2021-44228、CVE-2021-45046、CVE-2021-45105)
公開日: 2021年12月11日 更新日: 2021年12月13日 (詳細はこちらをクリック):
-
Elastic Security Alertの更新に従い、Elasticsearch 6.8の修正版を6.8.22から6.8.21に更新しました。
-
バージョン6.8.21と7.16.1のリリース予定日(12月13日)に関する情報を追加しました。
-
Liferay Enterprise Search(LES)の加入者にとってのElasticソフトウェアの影響に関する詳細情報を提供する関連記事への参照を追加しました。
-
Elasticsearch 6/7コネクタに関する影響についての記述を追加しました。 更新日:2021年12月15日(詳細はこちらをクリック):
-
Elasticsearch 7.16.x が Liferay の 検索エンジン互換性マトリックス (DXP 7.1-7.4) に追加されました。 更新日:2021年12月16日(詳細はこちらをクリック):
-
Elasticがセキュリティアラートに対して最近行った編集に基づき、脆弱性情報を更新しました。 更新日:2021年12月19日(詳細はこちらをクリック):
-
CVE-2021-45105 に関する情報を追加しました。 ElasticsearchにはCVE-2021-45105に対する既知の脆弱性はありませんが、Elastic社は12月19日に最新バージョンのlog4j(2.17.0)を含む7.16.2および6.8.22をリリースする準備を進めています。 ( Elastic Security Alert経由) 更新日: 2021年12月20日 (詳細はこちらをクリック):
-
Elastiscsearch 7.16.2 と 6.8.22 が利用可能になりました。 これらのリリースには、Log4jの最新バージョン(2.17.0)が含まれています。 更新日:2022年4月5日(詳細はこちらをクリック):
-
Sidecar Elasticsearch のバージョンは DXP 7.4 Update 17 で 7.17.0 にアップグレードされました。 詳細については、 https://issues.liferay.com/browse/LPS-145631 を参照してください。
以下の問題は、Liferay DXP、Liferay Enterprise Search環境、およびElastic Stackの機能に影響を与える可能性があります。
影響を受ける可能性のある展開
- Elasticsearchのバージョン6.8.22および7.16.2より前のバージョン
脆弱性情報
Elasticsearch 6および7は、Java Security Managerを使用しているため、この脆弱性によるリモートコード実行の影響を受けません。 JDK8以前のバージョンで動作するElasticsearchは、DNSを介した情報漏洩の脆弱性を抱えていますが、これは以下のJVMオプションで修正可能です。 このオプションは、Elasticsearch バージョン 5.6.11 以降、6.4 以降、および 7.0 以降で有効です。
2021年12月13日現在、Elasticsearch 6.8.21および7.16.1をリリースしました。これらのバージョンでは、下記に示すJVMオプションが設定され、万全を期すため、Log4jから脆弱性のあるJndiLookupクラスが削除されています。 6.4.0 より前の 6.x バージョンを使用しており、アップグレードが不可能な場合は、ここの手順 に従うことができます 184。
Elasticsearch 5は、リモートコード実行とDNSを介した情報漏洩の両方に対して脆弱です。 バージョン5.6.11~5.6.16では、JVMオプションを設定することでこの問題を軽減できます。 5.xの以前のバージョンを使用しているユーザーは、5.6.16にアップグレードすることをお勧めします。 5.6.11より前の5.xバージョンを使用しており、アップグレードができない場合は、こちらの手順に従ってください。 これらの対策は提供していますが、Elasticsearch 5はサポート対象外のバージョンですので、常に最新リリースへのアップデートをお勧めします。
Elasticsearch 2以前のバージョンは、今回新たに発見された脆弱性の影響を受けないLog4jバージョンを使用していた。 Elasticsearch 2はサポート対象外のバージョンですので、常に最新リリースへのアップデートをお勧めします。
Elastic Cloud上で動作するユーザーの場合、バージョン7.2以降は既にJDK11以上で動作しているため、リモートコード実行(RCE)や情報漏洩の影響を受けることはありません。 Elasticsearchのバージョン7.2より前のバージョンを使用しているユーザーは、できるだけ早くクラスターを再起動することをお勧めします。下記に示すJVMオプションが自動的に適用され、再起動時にクラスターが完全に保護されます。 新規にデプロイされるクラスターはすべて、JVMオプションを含めた状態で展開されます。 詳細については、Elastic Cloud の発表を参照してください。**[更新 - 2022 年 4 月 5 日]** Sidecar Elasticsearch のバージョンが DXP 7.4 Update 17 で 7.17.0 に更新されました。 詳細については、 https://issues.liferay.com/browse/LPS-145631を参照してください。
影響を受けるバージョン:
Elasticsearchのバージョン5.0.0以降には、脆弱性のあるバージョンのLog4jが含まれています。 Elasticsearch 5は、リモートコード実行とDNSを介した情報漏洩の両方に対して脆弱です。 Security ManagerがElasticsearch 6および7におけるリモートコード実行攻撃を軽減することを確認しました。
解決策と緩和策:
最も簡単な修復方法は、 JVM オプション -Dlog4j2.formatMsgNoLookups=true を設定し、クラスタの各ノードを再起動することです。
Elasticsearch 5.6.11以降、6.4以降、および7.0以降では、RCE攻撃と情報漏洩攻撃に対する完全な保護が提供されます。
ユーザーは、2021 年 12 月 13 日にリリースされた Elasticsearch 7.16.1 または 6.8.21 にアップグレードできます。 これらのリリースでは Log4j パッケージはアップグレードされませんが、 JVM オプション -Dlog4j2.formatMsgNoLookups=true を設定することで脆弱性を軽減し、Log4j パッケージから脆弱な JndiLookup クラスを削除します。
注:これらのシナリオのいずれにおいても、一部の脆弱性スキャナーは、Log4jのバージョンのみに基づいて、Elasticsearchをこの脆弱性と関連付けて警告表示し続ける可能性があります。 しかし、上記の対策はいずれも、リモートコード実行と情報漏洩の両方を十分に保護する。
[12月14日更新] CVE-2021-45046 に対処するため、Log4j 2.16.0 がリリースされました。 これは、上記で説明したElasticsearchの緩和策に関するガイダンスを変更するものではなく、Log4j 2.16.0へのアップデートは必要ありません。 Elastic社のガイダンスでは、上記で説明したJVMオプションを適用してすべてのノードを再起動するか、Elasticsearchを7.16.1または6.8.21にアップグレードするかのいずれかを選択するよう指示されています。
Elasticsearch が ECK によって管理されている場合は、Elasticsearch カスタム リソース podTemplate 仕様 で JVM オプションを設定します。
ElasticsearchがECEによって管理されている場合、バージョン6.xおよび <7.2については、JVMオプションの緩和策を含むようにパッチが適用されたスタックパックを再インストールすることをお勧めします。 関連するスタックパックを再インストールした後、デプロイメントを再開することをお勧めします。 5.x シリーズの場合、脆弱性を軽減するプロパティを追加するように JVM オプションをオーバーライドし、変更を反映させるためにクラスタを再起動することをお勧めします。詳細およびガイダンスについては、Elastic サポートにお問い合わせください。
Elasticsearchの情報漏洩に関する詳細
Log4jの情報漏洩脆弱性により、攻撃者はDNSを介して特定の環境データを外部に持ち出すことができますが、Elasticsearchクラスタ内のデータへのアクセスは許可されません。 漏洩する可能性のあるデータは、Log4jの「ルックアップ」を通じて取得できるものに限定され、これにはシステム環境変数と、他のソースからの限られた環境データが含まれます。 完全なリストについては、 Log4j ルックアップのドキュメント を参照してください。
最新のJavaバージョンにRCEを拡張するPoCに関するメモ
私たちは、このエクスプロイトが適用される JDK とシナリオを拡大しようとする 74など、セキュリティ コミュニティの動向を積極的に監視しています。 Elasticsearch 6および7に実装されているJava Security Managerは、JDK9以降と組み合わせることで、既知のすべてのPoC(概念実証)攻撃から引き続き保護します。 これらの取り組みは、com.sun.jndi.ldap.object.trustURLCodebase=false (最近の JDK のように) の場合でも実行可能な RCE を提供しようとするものですが、当社のセキュリティマネージャはプロセスの早い段階で攻撃を遮断し、リモートおよびローカル (クラスパス上) の両方の攻撃を防止します。
[12月18日更新] ElasticsearchにはCVE-2021-45105に対する既知の脆弱性はありません。 現在、最新バージョンのLog4j(2.17.0)を含むバージョン7.16.2と6.8.22を準備中です。
追加情報
Liferay の CVE-2021-44228 (Log4j の脆弱性) に関する一般的な声明は、こちら を参照してください。 Liferayの検索チームは現在、Liferay DXP 7.1~7.4とElasticsearch 7.16の互換性を確認するための通常のテスト手順を実施しており、その後、検索エンジン互換性マトリックスに追加する予定です。 この記事は、テストが完了次第更新されます。
LiferayのElasticsearch 6およびElasticsearch 7コネクタには、この脆弱性の影響を受けるlog4j2バージョンが含まれていますが、このライブラリは脆弱性が露呈するような方法では使用されていません。 Liferayは、影響を受けるコネクタのlog4j2バージョンを更新する作業を進めています。
Liferay Enterprise Search (LES) のお客様は、Elastic ソフトウェアの影響に関する詳細情報をこちら で確認できます。
[更新 - 2022 年 4 月 5 日] Sidecar Elasticsearch のバージョンが DXP 7.4 Update 17 で 7.17.0 に更新されました。 詳細については、 https://issues.liferay.com/browse/LPS-145631を参照してください。
検索エンジン互換性マトリックス
互換性のあるコネクタのバージョンや必要なパッチレベルなど、Elasticsearchとの詳細な互換性については、こちらの情報 を参照してください。
更新(2021年12月15日):Elasticsearch 7.16.xが互換性マトリックスに追加されました。
ベンダー紹介
Elastic、Elasticsearch、およびX-Packは、米国で登録されたElasticsearch BVの商標です。 そして他の国々でも。