CVE-2023-50780: Apache ActiveMQ Artemis の Jolokia API を介してアクセス可能な危険な MBean
http://127.0.0.1:8161/console/jolokia の Jolokia API によって公開されている MBean を列挙・調査した結果、以下の攻撃ベクトルが特定されました:
- Log4J を利用した任意ファイル書き込み。間接的にリモートコード実行 (Remote Code Execution) に至る
- Log4J を利用した任意ファイル読み取り
- Artemis Broker MBean を利用した DoS
この脆弱性は、Artemis Web インターフェースで使用される基本認証情報を知っているローカル攻撃者によって悪用される可能性があります。
注記: サーバーが "--allow-anonymous" で設定されている場合、null 以外のユーザー名とパスワードの任意の組み合わせで認証できます。
ベンダー開示:
この脆弱性に関するベンダーの開示情報は こちら にあります。
必要条件:
この脆弱性には以下が必要です:
- "admin" ロールを持つユーザーの有効な認証情報 (認証が必要な場合)
概念実証:
複数の攻撃ベクトルが特定されているため、詳細と該当する悪用手順は以下の PDF のいずれかに記載されています:
- ベンダーに送信された最初のレポート: Apache Artemis - CVE-2023-50780 - Initial Report.pdf。RCE ベクトルには以下が必要です:
- Web サーバーを実行しているユーザーとして "broker.xml" ファイルを上書きできること
- "broker.xml" の変更を有効にするために Artemis アプリケーション全体を再起動すること (ただし、"forceFailover()" 関数を利用してアプリケーションを終了させることはできますが、再起動には管理者によるユーザー操作が依然として必要です)
- Apache Artemis - CVE-2023-50780 - WAR + Restart Vector.pdf。RCE ベクトルには以下が必要です:
- Web サーバーを実行しているユーザーとして Artemis によってロードされた WAR ファイルのいずれか (例: "activemq-branding.war"、"artemis-plugin.war"、"console.war") を上書きできること
- "restartEmbeddedWebServer()" 関数を介して組み込み Jetty Web サーバーを再起動すること (この関数は攻撃者が Artemis Broker MBean を介して直接呼び出すことができるため、ユーザー操作は不要です)
- Apache Artemis - CVE-2023-50780 - JAR + jvmtiAgentLoad.pdf。RCE ベクトルには以下が必要です:
- ファイルシステム上のどこか (例: "/tmp"、"/dev/shm"、"C:\Windows\Public" など) にファイルを書き込めること、および Log4J を利用して任意の JAR をその場所に書き込むこと
- 該当する JAR をロードし、"jvmtiAgentLoad([Ljava.lang.String;)" 関数を介して RCE を取得すること
追加リソース:
Xu "pyn3rd" Yuanzhen による ブログ記事 では、JAR の任意書き込みと Jolokia を組み合わせて RCE を取得する方法が説明されています
タイムライン:
- この脆弱性は 2023年2月14日に最初に [email protected] へ報告されました
- Apache は 2024年10月14日に CVE-2023-50780 を公開しました
- 2024年12月18日に最初のレポートとその他のベクトルを公開しました