Aller au contenu

CVE-2026-67593 : suppression de file pré-authentification dans Apache ActiveMQ artemis via openwire

HERMES

SCORE DE MENACE HERMES & PERTURBATION CRITIQUE DU COURTIER D'ENTREPRISE

Cible : Apache ActiveMQ Artemis — Gestionnaire de protocole Openwire et gestionnaire de files
Confiance : 96%
92 / 100
CRITIQUE

Mesure la pertinence opérationnelle réelle, la militarisation de l'exploit et la posture de menace active.

Décomposition des dimensions
Exploitabilité 19 / 20
Activité de menace 18 / 20
Militarisation 18 / 20
Exposition 19 / 20
Prévalence 18 / 20
Impact 19 / 20
Maturité de l'exploit 18 / 20
Potentiel d'attaque en chaîne 19 / 20
⚖️ Divergence & Justification opérationnelle

Le standard CVSS v3.1 attribue à la CVE-2026-67593 un score de 9.1 critique (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:H) en considérant un impact nul sur la confidentialité. Dans les architectures distribuées d'entreprise et les chaînes de traitement asynchrones pour agents IA, le score Hermes Threat Score évalue cette menace à 92 (CRITIQUE). Les files Artemis constituent le socle transactionnel persistant des échanges de données, des journaux d'audit et des tâches planifiées. La suppression de files sans authentification préalable permet à un attaquant distant d'effacer silencieusement des flux métier vitaux sans déclencher d'alerte d'échec d'authentification.

HASS

SÉVÉRITÉ AGENTIQUE HASS & DÉNI DE SERVICE DES PIPELINES MULTI-AGENTS

Cible : Files de tâches des agents autonomes, bus de télémétrie et coordination distribuée
Confiance : 94%
82 / 100
ÉLEVÉ

Mesure le risque systémique spécifique découlant de l'autonomie, de l'autorité des outils et de l'exécution en cascade.

Décomposition des dimensions
Autonomie décisionnelle 16 / 20
Accès aux outils & APIs 17 / 20
Privilege 12 / 15
Persistence 11 / 15
External Impact 14 / 15
Propagation 12 / 15
⚖️ Divergence & Justification opérationnelle

Dans les architectures multi-agents modernes, les courtiers de messages agissent comme le système nerveux central reliant les agents planificateurs, les orchestrateurs et les agents d'exécution d'outils. L'exploitation de la CVE-2026-67593 sectionne brutalement ces canaux de communication. La disparition des files durables plonge les workflows multi-agents dans un blocage d'état (deadlock) irrémédiable, rompant les boucles de rétroaction et provoquant une panne en cascade des microservices associés.

🕸️ Graphe de connaissances connecté & Provenance

CVE-2026-67593: Apache ActiveMQ Artemis Pre-Authentication Queue Deletion via OpenwireVULNÉRABILITÉ

Nœuds connectés : 0

Le protocole OpenWire est un protocole binaire optimisé permettant l’échange de trames structurées. En fonctionnement nominal, l’authentification est exigée lors du traitement de la trame ConnectionInfo :

┌──────────────────┐ TCP:61616 OpenWire ┌──────────────────────────────┐
│ Attaquant distant│ ─────────────────────────────> │ Hôte Apache ActiveMQ Artemis │
│ (Socket brute │ │ │
│ non authentifiée│ ─── RemoveSubscriptionInfo ──> │ -> Démultiplexeur de trames │
│ │ (Contourne l'auth JAAS) │ -> Contourne SecurityManager │
│ │ │ -> Destruction de la file ! │
└──────────────────┘ └──────────────────────────────┘
ParamètreDétail techniqueImpact opérationnel
Identifiant CVECVE-2026-67593Bulletin de sécurité Apache / Liste OSS-Security
Classe de vulnérabilitéAbsence d’authentification (CWE-306)Suppression de file et déni de service à distance
Composant affectéOpenWireConnection.java & artemis-openwire-protocolTraitement des commandes wire format OpenWire
Port d’écoute par défautTCP 61616 (connecteur OpenWire)Passerelles réseau, maillages de services internes
Authentification requiseAucune (PR:N)Exploitation zéro-clic sans identifiants
Vecteur d’attaqueTrame RemoveSubscriptionInfo forgéePurge immédiate de la file cible et des messages
Version corrigéeApache Artemis 2.57.0Mise à jour officielle

La vulnérabilité découle d’un défaut de machine à états dans org.apache.activemq.artemis.core.protocol.openwire.OpenWireConnection. À l’ouverture d’un flux TCP, le courtier alloue une session pour traiter les commandes entrantes.

Faille dans le dispatching des commandes de souscription

Section intitulée « Faille dans le dispatching des commandes de souscription »

En temps normal, le client envoie ConnectionInfo, validant ses informations d’authentification auprès des modules JAAS. Cependant, le gestionnaire de paquets OpenWire traite la désinscription en dehors de cette validation :

// Modèle de code vulnérable dans OpenWireConnection.java
public Response processRemoveSubscriptionInfo(RemoveSubscriptionInfo info) throws Exception {
checkConnected(); // Vérifie uniquement que la socket TCP est ouverte, PAS l'authentification !
String subscriptionName = info.getSubscriptionName();
String clientId = info.getClientId();
// Appel direct de la suppression de file sur le serveur
server.destroyQueue(SimpleString.toSimpleString(subscriptionName), null, false, true);
return null;
}

Puisque checkConnected() n’évalue que la présence du canal physique sans vérifier l’état d’authentification de la session, l’ordre est immédiatement acheminé vers server.destroyQueue().

sequenceDiagram
autonumber
actor Attacker as "Attaquant distant"
participant Transport as "Connecteur TCP OpenWire (61616)"
participant Parser as "Démultiplexeur de trames"
participant SecMgr as "Gestionnaire de sécurité Artemis"
participant QMgr as "Gestionnaire de files (QueueManager)"
participant Storage as "Journal persistant sur disque"
Attacker->>Transport: "Négociation TCP (SYN -> SYN/ACK -> ACK)"
Attacker->>Transport: "Trame d'initialisation WireFormatInfo"
Transport->>Parser: "Décodage du flux binaire"
Note over Attacker,Parser: "Omission délibérée de la trame ConnectionInfo"
Attacker->>Transport: "Envoi RemoveSubscriptionInfo(targetQueue='orders.payments')"
Parser->>Parser: "checkConnected() validé (socket active)"
Note over Parser,SecMgr: "SecurityManager.checkPermission() TOTALEMENT CONTOURNÉ"
Parser->>QMgr: "server.destroyQueue('orders.payments')"
QMgr->>Storage: "Suppression des enregistrements et purge des messages"
Storage-->>QMgr: "File supprimée du journal"
QMgr-->>Parser: "Confirmation de destruction"
Note over QMgr,Storage: "Perte irréversible de l'ensemble des transactions en transit"

L’exploitation est directe et ne requiert aucune interaction utilisateur :

  1. Établissement du transport et négociation : l’attaquant se connecte sur le port TCP 61616 et émet la trame WireFormatInfo standard pour aligner la version du protocole OpenWire.
  2. Contournement de la phase d’authentification : en omettant sciemment la commande ConnectionInfo, l’attaquant forge directement une trame RemoveSubscriptionInfo.
  3. Ciblage de la file applicative : l’attaquant renseigne le champ subscriptionName ou clientId avec le nom de la file stratégique ciblée (par exemple agent.tasks.inbound, finance.transfers, audit.trail).
  4. Exécution de la commande non authentifiée : le courtier désérialise la trame et appelle immédiatement server.destroyQueue().
  5. Rupture opérationnelle : les consommateurs abonnés à la file subissent une déconnexion brutale. Les messages persistants sont effacés du disque et les transactions en vol sont perdues.

La détection de l’exploitation de la CVE-2026-67593 repose sur l’analyse des journaux d’audit du courtier et des flux réseau.

Dans les versions vulnérables d’Artemis, le journal audit.log consigne la suppression de files sans identité utilisateur associée :

2026-09-20 03:14:22,891 [audit] AMQ601004: User null is deleting queue 'finance.payments.dlq' on connection /198.51.100.44:48201
2026-09-20 03:14:23,102 [audit] AMQ221023: Queue finance.payments.dlq has been deleted

La mention User null précédant l’appel destroyQueue constitue un indicateur de compromission formel.

  • Surveillance des trames OpenWire sur le port 61616 contenant l’identifiant de commande RemoveSubscriptionInfo (COMMAND_TYPE = 9) sans trame préalable ConnectionInfo (COMMAND_TYPE = 3).
  • Alerte sur une chute brutale de la profondeur des files couplée à des erreurs côté consommateurs (AMQ229017: Queue does not exist).

title: Suppression de file ActiveMQ Artemis non authentifiée
id: e9c1a012-78d4-4f2b-91c2-67593cve2026
status: experimental
description: Détecte les destructions de files exécutées par un utilisateur nul ou non authentifié dans les journaux d'audit d'ActiveMQ Artemis.
logsource:
product: activemq_artemis
service: audit
detection:
selection:
message|contains:
- 'User null is deleting queue'
- 'is deleting queue'
filter_auth:
message|contains: 'User authenticated'
condition: selection and not filter_auth
level: critical
tags:
- attack.impact
- attack.t1499
- cve.2026-67593

  1. Mettre à jour le courtier : déployer immédiatement Apache Artemis 2.57.0 ou une version ultérieure. Le correctif contrôle l’état d’authentification de la session avant de traiter toute commande de souscription.
  2. Désactiver le connecteur OpenWire (si non indispensable) : si les clients communiquent via AMQP 1.0, MQTT ou STOMP, désactiver l’accepteur OpenWire dans broker.xml :
    <!-- Désactiver l'accepteur OpenWire si le protocole historique n'est pas requis -->
    <!-- <acceptor name="artemis">tcp://0.0.0.0:61616?protocols=OPENWIRE</acceptor> -->
  • Cloisonnement réseau : limiter l’accès au port 61616 exclusivement aux nœuds applicatifs autorisés via des pare-feux stricts ou des politiques de réseau Kubernetes. Ne jamais exposer d’accepteur de messages sur internet.
  • Authentification mutuelle TLS (mTLS) : exiger des certificats clients valides dès la couche transport (sslEnabled=true&needClientAuth=true) afin de bloquer les connexions non vérifiées avant tout décodage applicatif.