13-year-old bug in ActiveMQ lets hackers remotely execute commands

セキュリティ研究者は、Apache ActiveMQ Classicに13年間発見されなかったリモート・コード実行(RCE)の脆弱性を発見し、これを悪用して任意のコマンドを実行できる可能性があることを明らかにした。

この欠陥は、独立して開発されたコンポーネントがどのように相互作用するかを分析することで悪用経路を特定するAIアシスタント「Claude」を使って発見された。

CVE-2026-34197として追跡されたこのセキュリティ問題は、深刻度スコアが8.8と高く、Apache ActiveMQ/Brokerの5.19.4より前のバージョン、および6.0.0から6.2.3までのすべてのバージョンに影響する。

Wiz

これが、10年以上も見過ごされてきた理由でもある。

Apache ActiveMQはJavaで書かれたオープンソースのメッセージ・ブローカーで、メッセージ・キューやトピックを介して非同期通信を処理する。

ActiveMQは、パフォーマンスが向上した新しい「Artemis」ブランチをリリースしているが、CVE-2026-34197の影響を受ける「Classic」エディションは、Javaで構築された企業、ウェブバックエンド、政府、企業システムで広く導入されている。

Horizon3の研究者であるNaveen Sunkavally氏は、Claudeで「2、3の基本的なプロンプト以上のものは何もない」問題を発見した。「これは80%のクロードと20%の人間によるギフトラッピングだった」と彼は言う。

Sunkavally氏は、Claudeが複数の個々のコンポーネント(Jolokia、JMX、ネットワーク・コネクター、VMトランスポート)を調査した結果、この問題を指摘したと述べている。

「各機能はそれぞれ単独では想定された機能を果たしますが、それらが一緒になると危険なのです。クロードは、思い込みのない明晰な頭で、この経路を端から端まで効率的につなぎ合わせたのです」。

研究者は3月22日にApacheのメンテナにこの脆弱性を報告し、開発者は3月30日にActiveMQ Classicのバージョン6.2.3と5.19.4で対処した

Horizon3からの報告に よると、この欠陥はActiveMQのJolokia管理APIが、外部設定を読み込むために悪用できるブローカー関数(addNetworkConnector)を公開していることに起因している。

攻撃者は、特別に細工したリクエストを送信することで、ブローカーにリモートのSpring XMLファイルを取得させ、その初期化中に任意のシステムコマンドを実行させることができる。

この問題は Jolokia 経由での認証が必要だが、バージョン 6.0.0 から 6.1.1 では、アクセス制御なしで API を公開する別のバグ CVE-2024-32114 のために認証されなくなる。

Unauthenticated RCE on specific ActiveMQ versions
特定の ActiveMQ バージョンで認証されない RCE
Source:Horizon3

Horizon3の研究者は、ハッカーが実際の攻撃で標的とした他のActiveMQのCVEを引用しながら、新たに公開された欠陥がもたらすリスクを強調した。

“Horizon3は、「ActiveMQは現実世界の攻撃者の度重なる標的となっており、ActiveMQの悪用と悪用後の手法はよく知られているため、ActiveMQを運用している組織はこれを最優先事項として扱うことを推奨する。

「Webコンソールに影響を及ぼす認証されたRCEであるCVE-2016-3088と、ブローカー・ポートに影響を及ぼす認証されていないRCEであるCVE-2023-46604の両方が、CISAのKEVリストに掲載されている」。

CVE-2026-34197は積極的に悪用されているとは報告されていないが、研究者によれば、悪用の兆候はActiveMQブローカーのログにはっきりと見られるという。彼らは、内部トランスポートプロトコルVMとbrokerConfig=xbean:http://クエリパラメータを使用する疑わしいブローカー接続を探すことを推奨している。

コマンドの実行は、複数の接続試行中に発生する。コンフィギュレーションの問題についての警告メッセージが表示された場合、ペイロードはすでに実行されていると研究者は言う。

.ia_ad { background-color:#width: 95%; max-width: 800px; margin: 15px auto; border-radius: 8px; border:1px solid #d6ddee; display: flex; align-items: stretch; padding: 0; overflow: hidden; }:0; overflow: hidden; } .ia_lef { flex: 1; max-width: 200px; height: auto; display: flex; align-items: stretch; } .ia_lef a { display: flex; width: 100%; height: 100%; } .ia_lef a img { width: 100%; height: 100%; border-radius: 8px 0 0 8px; margin: 0; display: block; } .ia_rig { flex: 2; padding:display: flex; flex-direction: column; justify-content: center; } .ia_rig h2 { font-size: 17px !important; font-weight: 700; color:#line-height: 1.4; font-family:margin: 0 0 14px 0; } .ia_rig p { font-weight: bold; font-size: 14px; margin: 0 0 clamp(6px, 2vw, 14px) 0; } .ia_button { background-color:#border:1px solid #3b59aa; color: black; text-align: center; text-decoration: none; border-radius: 8px; display: inline-block; font-size: 16px; font-weight: bold; cursor: pointer; padding:width: fit-content; } .ia_button a { text-decoration: none; color: inherit; display: block; } @media (max-width: 600px) { .ia_ad { flex-direction: column; align-items: center; } .ia_lef { max-width: 100%; } .ia_lef a img { border-radius: 8px 8px 0 0; } .ia_rig { padding:15px;
width: 100%;
}

.ia_button {
width: 100%;
margin: 0px auto;
}
}

自動ペンテストは6面のうち1面のみをカバーする。

自動ペンテストはパスの存在を証明する。BASは、あなたのコントロールがそれを止めるかどうかを証明します。ほとんどのチームは、一方を実行し、もう一方を実行しない。

このホワイトペーパーは、6つの検証サーフェスをマッピングし、どこでカバーが終了するかを示し、実務者にあらゆるツール評価のための3つの診断質問を提供します。