AEM Forms on JEE に関する Spring Framework の脆弱性の軽減
このドキュメントでは、AEM Forms on JEE に影響を与える 2 つの重要な Spring Framework の脆弱性に対処する際のガイダンスを提供します。
- CVE-2024-38819:関数型 web フレームワークでのパストラバーサルの脆弱性
- CVE-2024-38820:Spring Framework DataBinder の大文字と小文字を区別する一致例外
影響を受けるバージョン
- Adobe Experience Manager 6.5 Forms on JEE
- バージョン AEM 6.5 Forms GA ~6.5.22.0
解決策
バージョン固有の解決策
メモ:AEM Forms が公式にサポートしているサービスパックは、最新の 6 つのみです。 古いバージョンのユーザーは、まず最新のサービスパックにアップグレードしてから、必要なホットフィックスをインストールする必要があります。
デプロイメントに関する考慮事項
クラスター環境の場合
クラスター化されたデプロイメントを操作する場合:
- クラスター内の すべてのノード に JAR ファイルの置換(手順 4)を適用します
- すべてのサーバーで同一の JAR バージョンを使用して一貫性を維持します
- サービスの再起動を開始する前に、すべてのノードで更新を完了します
- システムのダウンタイムを最小限に抑えるために、調整された再起動戦略を実装します
単一ノード環境の場合
スタンドアロンデプロイメントを操作する場合:
- 管理するロケーターサーバーがないので、簡素化されたプロセスに従います
- ロケーターサーバーの設定や起動に関連する手順を省略します
- 指示に従って他のすべての手順、特に JAR の置換とマニフェストの更新を完了します。
- すべての変更を実装したら、アプリケーションサーバーを再起動します
手動の軽減手順
-
アプリケーションサーバーを停止します。
-
ロケーターサーバーを停止します。
-
コア EAR から Spring JAR を削除します。
[Adobe_Experience_Manager_Forms installation directory]/deploy
に移動します。- アーカイブマネージャーツールを使用して
adobe-core-<appserver>.ear
ファイルを開きます。<appserver>
は、環境に応じて JBoss、WebLogic または WebSphere のいずれかに指定できます。
- JBoss の場合:
ear/lib
フォルダーに移動し、次の JAR ファイルを削除します。
-
spring-core-<version>.jar
-
spring-web-<version>.jar
- **WebLogic または WebSphere の場合:**EAR のルートから次の JAR ファイルを削除します。
-
spring-core-<version>.jar
-
spring-web-<version>.jar
- すべてのアプリケーションサーバーの場合:
adobe-core-<appserver>.ear
のルートレベルでadobe-dscf.jar
ファイルを開き、META-INF/MANIFEST.MF
ファイルを編集して、次の JAR ファイルへの参照を削除します。
- すべてのアプリケーションサーバーの場合:
-
spring-core-<version>.jar
-
spring-web-<version>.jar
-
Geode 配布からの JAR ファイルを置き換えます。
<Adobe_Experience_Manager_Forms>/lib/caching/lib
に移動します。- 既存の JAR ファイルを更新されたバージョンに置き換えます。
spring-context-<version>.jar
→spring-context-6.1.14.jar
spring-beans-<version>.jar
→spring-beans-6.1.14.jar
spring-core-<version>.jar
→spring-core-6.1.14.jar
spring-jcl-<version>.jar
→spring-jcl-6.1.14.jar
spring-web-<version>.jar
→spring-web-6.1.14.jar
新しい JAR ファイルを取得するには、Adobe ソフトウェア配布から spring-6.1.14-jars.zip ファイルをダウンロードし、ZIP ファイルを抽出して、更新された Spring フレームワーク JAR ファイルにアクセスします。
- 次の JAR ファイル内の MANIFEST.MF ファイルを更新します。
geode-server-all-<version>.jar
gfsh-dependencies.jar
各 JAR の場合:
-
アーカイブマネージャーツールを使用して JAR を開きます
-
META-INF/MANIFEST.MF
ファイルを見つけて抽出します -
MANIFEST.MF ファイルをテキストエディターで編集します
-
「Class-Path」セクションを見つけて、すべての Spring フレームワーク参照を更新します。
spring-core-<version>.jar
コピー先:spring-core-6.1.14.jar
spring-web-<version>.jar
コピー先:spring-web-6.1.14.jar
spring-context-<version>.jar
コピー先:spring-context-6.1.14.jar
spring-beans-<version>.jar
コピー先:spring-beans-6.1.14.jar
spring-jcl-<version>.jar
コピー先:spring-jcl-6.1.14.jar
-
変更した MANIFEST.MF ファイルを保存します
-
JAR 内の元の MANIFEST.MF を更新されたバージョンに置き換えます
-
JAR ファイルを保存します
-
注意が必要な一般的な問題:
- マニフェストに重複エントリがないことを確認します
- 適切な行末を維持します
- 参照されているすべての JAR が指定した場所に存在することを検証します
-
検証手順:
- マニフェストが適切に更新されているかどうかを確認します
- すべての Spring 依存関係が正しく参照されていることを検証します
- 古いバージョンの参照が残っていないことを確認します
- アプリケーションをテストして、クラスの読み込みに問題がないことを確認します
-
Configuration Manager を実行します。
-
サーバーを再起動します。
- JDK 17 を使用してロケーターサーバーを起動します
- 以前使用したのと同じ JDK バージョン(JDK 8 または JDK 11)を使用して、アプリケーションサーバーを起動します。