エクスプロイト&脆弱性
不正な暗号資産マイナーやルートキットの感染を招く脆弱性「CVE-2023-46604(Apache ActiveMQ)」
Apache ActiveMQの脆弱性「CVE-2023-46604」を突いてマルウェア「Kinsing(別称:h2miner)」や暗号資産マイナーをインストールさせる攻撃活動について調査しました。本攻撃活動は現在も進行中であり、標的としてLinuxシステムが狙われています。
トレンドマイクロでは、ミドルウェア「Apache ActiveMQ」の脆弱性「CVE-2023-46604」を突いた攻撃活動について調査しました。現在も進行中の本活動は、標的のLinuxシステム上でマルウェア「Kinsing(別称:h2miner)」の暗号資産マイナーをダウンロードさせ、感染に至らせます。当該の脆弱性はリモートコード実行(RCE:Remote Code Execution)を誘発するものであり、Kinsingはそこを突く形でマルウェアのダウンロードやインストールを行います。本脆弱性の主因は、ActiveMQがOpenWireコマンドを処理する際にThrowableクラスの型チェックを正しく行っていなかった点にあり、これがRCEに繋がりました。
ActiveMQ(Java言語で作成)は、Apacheが開発したオープンソースのメッセージ指向ミドルウェア(MOM:Message-Oriented Middleware)であり、さまざまなアプリケーション間でのメッセージ送信をサポートします。また、STOMP、Jakarta Messaging(JMS)、OpenWireなどの各種仕様にも対応しています。
マルウェア「Kinsing」は、主にLinuxベースのシステムを標的として狙い、サーバ内に侵入して素早くネットワーク上に拡散するなど、大きな脅威をもたらしています。侵入の手段としては、Webアプリケーションの脆弱性やコンテナ環境の設定不備を利用します。
最近に入り、Kinsingの背後にいる攻撃グループは、「CVE-2023-4911(Looney Tunables)」などの有名な脆弱性を突いた活動を行っています。ひとたびKinsingがシステムに侵入すると、暗号資産マイニング用スクリプトが展開され、ビットコインなどのマイニングが不正に実行されます。そのために感染機器のリソースが食い潰され、システム性能に悪影響が生じ、インフラ全体の被害にまで発展します。
脆弱性を含むActiveMQのバージョン
脆弱性「CVE-2023-46604」を含むApache ActiveMQのバージョン一覧を下記に示します。
- 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 Legacy OpenWire Module 5.18.0から5.18.2
- Apache ActiveMQ Legacy OpenWire Module 5.17.0から5.17.5
- Apache ActiveMQ Legacy OpenWire Module 5.16.0から5.16.6
- Apache ActiveMQ Legacy OpenWire Module 5.8.0から5.15.15
ActiveMQをご利用の方は、Java OpenWireのbrokerとclient双方とも、当該脆弱性に対処済みのバージョン「5.15.16」、「5.16.7」、「5.17.6」、または「5.18.3」にアップデートすることを推奨します。
脆弱性「CVE-2023-46604」に対するパッチ修正の前後を比較
AMQ-9370によると、本脆弱性の根本的な要因は、OpenWireコマンドのアンマーシャリング(unmarshalling:形式変換したものを復元)に際し、Throwableクラスの型チェックを適切に行っていなかったためと判断できます。
OpenWireは、メッセージ指向ミドルウェア(MOM)で動作するバイナリデータ・プロトコルです。こうしたMOMの代表例がActiveMQであり、OpenWireをネイティブのメッセージング用フォーマットとして採用しています。当該フォーマットは、他のフォーマットと比べて帯域の使用効率に優れ、広範なメッセージ種別をサポートするなど、さまざまな長所を備えています。そのため、メッセージングシステムの性能や信頼性を追求する企業や組織にとっては、理想的な選択肢の1つとなっています。
脆弱性「CVE-2023-46604」に対するパッチ修正の前後でActiveMQのソースを比較すると、以下のクラスから
BaseDataStreamMarshaller
以下のメソッドを呼び出す処理が追加されたことが分かります。
validateIsThrowable(Throwableであるかをチェックする、という意味)
修正前のバージョンでは、マーシャリング関連機能において、Throwableクラス(Javaでのエラーや例外発生を示唆するオブジェクト)の型に異常がある場合にも、それをそのままインスタンス化して実行してしまう可能性があります。これがサーバやアプリケーションでのRCE脆弱性に繋がり、攻撃者によって任意のコードを実行される恐れがあります。そのため、セキュリティリスクを回避するためにはThrowableクラスの型チェックを行い、正常であるかを常に検証することが求められます。
検知
2023年11月初頭より、脆弱性「CVE-2023-46604」の不正利用に関する報告がいくつか上がっています。これらの報告では、主に当該脆弱性を利用する攻撃者(ランサムウェアファミリ「HelloKitty」の攻撃グループなど)や、不正利用の概念実証(MetasploitやNucleiなど)について述べられています。しかし、「CVE-2023-46604」のCVSSスコアが9.8と高めであるのに対し、全体的な検知数は依然として低いままと考えられます。
当該脆弱性を利用するKinsingの活動内容に基づき、トレンドマイクロでは、検知用のYARAルールとして下記を作成しました。
rule JAVA_ClassPathXmlApplicationContext_CVE_2023_46604_A
{
meta:
author = "Peter Girnus"
description = "Detects exploit variant used by Kinsing Malware for CVE-2023-46604 ClassPathXmlApplicationContext."
cve = "CVE-2023-46604"
hash = "d8f55bbbcc20e81e46b9bf78f93b73f002c76a8fcdb4dc2ae21b8609445c14f9"
strings:
$s1 = "<?xml"
$s2 = "<beans"
$s3 = "<bean id="
$s4 = "<constructor-arg"
$s5 = "<list>"
$r1 = /\bclass=["']java\.lang\.ProcessBuilder["']/ nocase
$r2 = /<value>[^<]+\.(exe|vbs|bat|ps1|psm|sh)/ nocase
condition:
all of them
}
CVE-2023-46604を不正利用するKinsingの手口
現在のところ、脆弱性「CVE-2023-46604」のあるシステム上でコマンドを実行する方式として、メソッド「ProcessBuilder」を用いる手口が知られています。Kinsingの場合、当該脆弱性を利用してマルウェアや暗号資産マイナーをダウンロード、実行します。
脆弱性を突くことに成功すると、マルウェアや暗号資産マイナーが不正なインストーラをダウンロードし、コマンド「bash」を介して不正なスクリプトを実行します。
bashスクリプトの実行後、マルウェア「Kinsing」は追加のバイナリやペイロードを各アーキテクチャに応じてコマンドコントロール(C&C:Command and Control)サーバからダウンロードします。
マルウェア「Kinsing」で目を引く挙動として、感染システムにおけるプロセスの一覧やアクティブなネットワーク接続の一覧を取得し、そこから競合関係にある別の暗号資産マイナーやマルウェア(Monero、またはLog4ShellやWebLogicの脆弱性を突くもの)を探し出そうとします。該当のプロセスやネットワーク接続が見つかった場合は、これを停止します。また、ジョブスケジュール表「crontabs」の内容もチェックし、該当する暗号資産マイナーやマルウェアがあれば、これを削除します。
この後、KinsingのバイナリがLinuxの環境変数に登録され、当該変数を介して起動されます。
最後にKinsingは、不正な自己起動型スクリプトが1分毎に実行されるように、スケジュール起動用ジョブ(cronjob)の設定を追加します。
以上の活動によってKinsingは感染端末上での永続化を図り、さらに、不正なバイナリを常に最新の状態に保とうとします。
追加の永続化および侵害の手段として、Kinsingは自身のルートキットを「/etc/ld.so.preload(プログラム開始前に読み込むライブラリ類を指定する設定情報)」に追加します。これにより、システムの深い領域にまで感染が進行します。トレンドマイクロでは、過去にも「/etc/ld.so.preload」を利用した手口について調査を行い、その結果を公表しました。
まとめ
脆弱性「CVE-2023-46604」は、今後も多岐に渡って、より多くの攻撃グループに利用され続けると考えられます。その代表例がKinsingであり、本脆弱性を突いて暗号資産マイニングをはじめとする不正な活動を行っています。こうした傾向は、世界各地の企業や組織に対して大きなセキュリティリスクをもたらすものです。
Apache ActiveMQを利用している企業や組織は、できる限り早く脆弱性「CVE-2023-46604」の修正パッチを適用し、Kinsingなどに感染するリスクを最小限に抑え込むことを推奨します。各種脆弱性を突いてネットワーク上に素早く拡散するKinsingの脅威に対抗する上では、最新版セキュリティパッチの適用、システム設定の定期的な審査と見直し、ネットワーク上での不審な挙動の監視を、継続的に実施していくことが重要です。こうした対策のいずれもが、包括的なサイバーセキュリティ戦略に必要不可欠なものです。
攻撃者の手口が巧妙に進化し続ける中、サイバーセキュリティチームでは、システムやデータを保護するために警戒態勢を維持し、「Trend Vision One™」などのソリューションによってセキュリティ対策を強化することが推奨されます。Trend Vision Oneは、多様なサイバー資産を継続的に監視することが可能であり、その種類は、既知や未知、マネージドや非マネージドを問いません。本ソリューションは、AIや高度な脅威リサーチ、インテリジェンスを駆使することで、包括的に脅威の阻止、検知、応答を行います。これにより、さらに迅速な検知、応答、処置の機能が可能となります。
企業や組織では、「Trend Micro™ Managed XDR」などの包括的なセキュリティソリューションを導入し、最先端の多層防御戦略を構築することについて、検討することを推奨します。本ソリューションは、最新の脅威にも対応し、不正なコンテンツを的確に検知、スキャン、ブロックすることが可能です。
脆弱性「CVE-2023-46604」への対策として有用なルールやフィルタを下記に挙げます。
「Trend Cloud One™ - Network Security」および「Trend Micro™ TippingPoint™」のProtectionフィルタ
- 43439: HTTP: Apache ActiveMQ OpenWire Protocol Remote Code Execution Vulnerability (Apache ActiveMQのOpenWireプロトコルにおけるリモートコード実行の脆弱性)
「Trend Cloud One™ - Workload Security」および「Trend Micro™ Deep Security™」のIPSルール
- 1011897 - Apache ActiveMQ Deserialization of Untrusted Data Vulnerability (CVE-2023-46604) (Apache ActiveMQで信頼性未確認のデータをデジリアライズする脆弱性:CVE-2023-46604)
侵入の痕跡(Indicators of Compromise、IoC)
侵入の痕跡(IoC)について、こちらで確認してください。
参考記事:
CVE-2023-46604 (Apache ActiveMQ) Exploited to Infect Systems With Cryptominers and Rootkits
By: Peter Girnus
翻訳:清水 浩平(Core Technology Marketing, Trend Micro™ Research)