現在表示中:

概要


アドビの AEM チームは、オープンソースプロジェクト NotSoSerial と緊密に連携して CVE-2015-7501 に記載されている脆弱性の軽減に努めています。NotSoSerial は Apache 2 ライセンスでライセンスが付与され、BSD に似た独自のライセンスでライセンスが付与される ASM コードが含まれます。

このパッケージに含まれるエージェント JAR は、アドビが変更を加えて配布する NotSoSerial です。詳しくは、以下のリビジョン履歴の節を参照してください。

NotSoSerial は Java レベルの問題を解決する Java レベルのソリューションであり、AEM に固有のものではありません。これはオブジェクトのシリアル化を解除するときに、プリフライトのチェックを追加します。このチェックでは、ファイアウォールスタイルのホワイトリストおよびブラックリストに対してクラス名をテストします。デフォルトのブラックリストのクラス数は限られているので、システムやコードに影響が及ぶことはありません。

デフォルトでは、エージェントは現在の既知の脆弱なクラスに対してブラックリストのチェックをおこないます。このブラックリストの目的は、現在リストに掲載されているこの種類の脆弱性を利用する攻撃からユーザーを保護することです。

ブラックリストとホワイトリストは、この記事のエージェントの設定の手順に従って設定できます。

エージェントの目的は、最新の既知のクラスの脆弱性を軽減することです。プロジェクトで信頼されないデータのシリアル化を解除している場合でも、サービス拒否攻撃、メモリ不足攻撃および未知のシリアル化解除による攻撃に対しては脆弱なままであることがあります。

アドビは Java 6、7 および 8 を正式にサポートしていますが、NotSoSerial は Java 5 もサポートしています。

エージェントのインストール

注意:

以前に AEM 6.1 向けのシリアル化のホットフィックスをインストールした場合は、Java を実行する行からエージェントの開始コマンドを削除してください。

  1. com.adobe.cq.cq-serialization-tester バンドルをインストールします。

  2. バンドルの Web コンソール(http://server:port/system/console/bundles)に移動します。

  3. シリアル化のバンドルを探して開始します。これにより、NotSoSerial エージェントが動的にオートロードされます。

アプリケーションサーバーへのエージェントのインストール

NotSoSerial エージェントは、アプリケーションサーバーの AEM の標準配布版には含まれていません。ただし、それを AEM JAR 配布版から抽出して、アプリケーションサーバーの設定に使用できます。

  1. まず、AEM クイックスタートファイルをダウンロードして展開します。

    java -jar aem-quickstart-6.2.0.jar -unpack
  2. AEM クイックスタートを展開した場所に移動し、crx-quickstart/opt/notsoserial/ フォルダーを AEM アプリケーションサーバーのインストールの crx-quickstart フォルダーにコピーします。

  3. /opt の所有者を、サーバーを実行しているユーザーに変更します。

    chown -R opt <user running the server>
  4. この記事の続きの節に示すようにエージェントを設定し、エージェントが正しくアクティベートされていることを確認してください。

エージェントの設定

ほとんどのインストールにおいて、デフォルトの設定で十分機能します。これには既知のリモート実行の脆弱なクラスのブラックリストや、信頼されたデータのシリアル化解除が比較的安全なパッケージのホワイトリストが含まれます。


ファイアウォールの設定は動的であり、次の手順でいつでも変更できます。

  1. Web コンソール(http://server:port/system/console/configMgr)に移動します

  2. Deserialization Firewall Configuration」を探してクリックします

    注意:

    次の URL から設定ページに直接アクセスすることもできます。

    • http://server:port/system/console/configMgr/com.adobe.cq.deserfw.impl.DeserializationFirewallImpl

この設定にはホワイトリスト、ブラックリストおよびシリアル化解除のログが含まれています。

Whitelisting

このホワイトリストのセクションには、シリアル化の解除が許可されるクラスやパッケージのプレフィックスが表示されます。独自のクラスのシリアル化を解除している場合は、このホワイトリストにクラスまたはパッケージのいずれかを追加する必要があります。

Blacklisting

このブラックリスティングのセクションには、シリアル化解除が許可されないクラスが表示されます。これらのクラスの初期セットは、リモート実行の攻撃に脆弱であると見なされるクラスに限定されています。ブラックリストはホワイトリストのエントリに先立って適用されます。

Diagnostinc Logging

この診断ログのセクションでは、シリアル化の解除が実行されているときにログに記録する内容を、複数のオプションから選択できます。これらは最初の使用時にログに記録され、後続の使用では記録されません。

デフォルトの class-name-only は、シリアル化が解除されるクラスを示します。

full-stack オプションを選択すると、最初にシリアル化の解除が試行されたときの Java スタックがログに記録され、シリアル化の解除がおこなわれている場所を示します。これは、自身の環境からシリアル化が解除されたクラスを探して削除するときに便利です。

エージェントのアクティベートの検証

次の URL にアクセスしてシリアル化を解除するエージェントの設定を確認できます。

  • http://サーバー:ポート/system/console/healthcheck?tags=deserialization

URL にアクセスすると、エージェントに関連するヘルスチェックのリストが表示されます。ヘルスチェックに合格しているかを確認することで、エージェントが正しくアクティベートされているか判断できます。不合格の場合は、エージェントを手動で読み込む必要がある場合があります。

エージェントの問題のトラブルシューティングについて詳しくは、以下の動的なエージェントの読み込みによるエラー処理を参照してください。

注意:

org.apache.commons.collections.functors をホワイトリストに追加すると、ヘルスチェックは必ず失敗します。

動的なエージェントの読み込みによるエラー処理

ログにエラーがある場合や、検証ステップでエージェントの読み込み時に問題が検出された場合は、エージェントを手動で読み込む必要がある場合があります。これは、JDK(Java Development Toolkit)ではなく、動的な読み込みをおこなうツールがない JRE(Java Runtime Environment)を使用している場合にも推奨されます。

エージェントを手動で読み込むには、以下の手順に従います。

  1. 次のオプションを追加して、CQ JAR の JVM スタートアップパラメーターを変更します。

    -javaagent:<aem-installation-folder>/crx-quickstart/opt/notsoserial/notsoserial.jar

    注意:

    エージェントはフォークされた JVM では有効にできないので、CQ/AEM の -nofork オプションを、適切な JVM メモリ設定で使用する必要があります。

    注意:

    アドビ配布版の NotSoSerial エージェント JAR は、AEM インストールの crx-quickstart/opt/notsoserial/ フォルダーにあります。

  2. JVM を停止して再開します。

  3. 前述のエージェントのアクティベートの検証のステップに従って、エージェントのアクティベートをもう一度検証します。

その他の考慮事項

IBM JVM 上で実行している場合は、こちらの Java Attach API のサポートに関するドキュメントを参照してください。

本作品は Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License によってライセンス許可を受けています。  Twitter™ および Facebook の投稿には、Creative Commons の規約内容は適用されません。

リーガルノーティス   |   プライバシーポリシー