CVE-2026-67593 : suppression de file pré-authentification dans Apache ActiveMQ artemis via openwire
SCORE DE MENACE HERMES & PERTURBATION CRITIQUE DU COURTIER D'ENTREPRISE
Cible :Apache ActiveMQ Artemis — Gestionnaire de protocole Openwire et gestionnaire de files 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.
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 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.
CVE-2026-67593: Apache ActiveMQ Artemis Pre-Authentication Queue Deletion via OpenwireVULNÉRABILITÉ
1. Contexte technique et surface d’attaque
Section intitulée « 1. Contexte technique et surface d’attaque »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ètre | Détail technique | Impact opérationnel |
|---|---|---|
| Identifiant CVE | CVE-2026-67593 | Bulletin 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-protocol | Traitement des commandes wire format OpenWire |
| Port d’écoute par défaut | TCP 61616 (connecteur OpenWire) | Passerelles réseau, maillages de services internes |
| Authentification requise | Aucune (PR:N) | Exploitation zéro-clic sans identifiants |
| Vecteur d’attaque | Trame RemoveSubscriptionInfo forgée | Purge immédiate de la file cible et des messages |
| Version corrigée | Apache Artemis 2.57.0 | Mise à jour officielle |
2. Analyse de la cause racine et architecture
Section intitulée « 2. Analyse de la cause racine et architecture »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.javapublic 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"3. Déroulement chronologique de l’attaque
Section intitulée « 3. Déroulement chronologique de l’attaque »L’exploitation est directe et ne requiert aucune interaction utilisateur :
- Établissement du transport et négociation : l’attaquant se connecte sur le port TCP 61616 et émet la trame
WireFormatInfostandard pour aligner la version du protocole OpenWire. - Contournement de la phase d’authentification : en omettant sciemment la commande
ConnectionInfo, l’attaquant forge directement une trameRemoveSubscriptionInfo. - Ciblage de la file applicative : l’attaquant renseigne le champ
subscriptionNameouclientIdavec le nom de la file stratégique ciblée (par exempleagent.tasks.inbound,finance.transfers,audit.trail). - Exécution de la commande non authentifiée : le courtier désérialise la trame et appelle immédiatement
server.destroyQueue(). - 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.
4. Investigation forensique et télémétrie
Section intitulée « 4. Investigation forensique et télémétrie »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.
Signatures dans les journaux d’audit
Section intitulée « Signatures dans les journaux d’audit »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:482012026-09-20 03:14:23,102 [audit] AMQ221023: Queue finance.payments.dlq has been deletedLa mention User null précédant l’appel destroyQueue constitue un indicateur de compromission formel.
Télémétrie réseau
Section intitulée « Télémétrie réseau »- Surveillance des trames OpenWire sur le port 61616 contenant l’identifiant de commande
RemoveSubscriptionInfo(COMMAND_TYPE = 9) sans trame préalableConnectionInfo(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).
5. Ingénierie de la détection
Section intitulée « 5. Ingénierie de la détection »title: Suppression de file ActiveMQ Artemis non authentifiéeid: e9c1a012-78d4-4f2b-91c2-67593cve2026status: experimentaldescription: 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: auditdetection: selection: message|contains: - 'User null is deleting queue' - 'is deleting queue' filter_auth: message|contains: 'User authenticated' condition: selection and not filter_authlevel: criticaltags: - attack.impact - attack.t1499 - cve.2026-67593alert tcp any any -> any 61616 (msg:"HERMES - Tentative de suppression de file pré-auth ActiveMQ Artemis (CVE-2026-67593)"; flow:to_server,established; content:"|09|"; offset:4; depth:1; content:"ActiveMQ"; nocase; classtype:attempted-admin; sid:202667593; rev:1;)// Détection d'anomalies de suppression de file dans les journaux d'audit ArtemisApplicationEvents| where Application == "Artemis"| where RawData has "AMQ601004" or RawData has "User null is deleting queue"| extend RemoteIP = extract(@"connection /([0-9\.]+):", 1, RawData)| extend TargetQueue = extract(@"deleting queue '([^']+)'", 1, RawData)| summarize FirstSeen=min(TimeGenerated), LastSeen=max(TimeGenerated), TotalPurges=count() by RemoteIP, TargetQueue| order by TotalPurges desc6. Stratégie de remédiation et durcissement
Section intitulée « 6. Stratégie de remédiation et durcissement »Mesures immédiates
Section intitulée « Mesures immédiates »- 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.
- 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> -->
Durcissement en profondeur
Section intitulée « Durcissement en profondeur »- 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.
7. Corrélations stratégiques
Section intitulée « 7. Corrélations stratégiques »8. Sources et références
Section intitulée « 8. Sources et références »- Annonce OSS-security : secLists CVE-2026-67593 Openwire Queue Deletion
- Bulletin de sécurité Apache ActiveMQ : fil zlglnsg8s5xv8n56d15dm5mf00h2d8xs
- Base NVD du NIST : détail de la CVE-2026-67593
- Documentation officielle Apache artemis : guide de sécurisation des accepteurs de protocoles