En bref

  • CVE-2026-42779 (CVSS 9.8) : exécution de code arbitraire dans Apache MINA via une bypass de l'allowlist de classes lors de la désérialisation.
  • Versions affectées : Apache MINA 2.1.0 à 2.1.11 et 2.2.0 à 2.2.6 — toute application appelant IoBuffer.getObject() sur des données non fiables est exposée.
  • Action urgente : passer immédiatement à Apache MINA 2.1.12 ou 2.2.7, auditer les dépendances transitives et bloquer toute désérialisation provenant de réseaux non maîtrisés.

Les faits

Le 1er mai 2026, l'Apache Software Foundation a publié un avis de sécurité concernant une nouvelle vulnérabilité critique de désérialisation dans Apache MINA, identifiée sous l'ID CVE-2026-42779 et dotée d'un score CVSS de 9.8. La faille touche directement les versions 2.1.0 à 2.1.11 et 2.2.0 à 2.2.6 du framework, et permet à un attaquant non authentifié d'exécuter du code arbitraire dès lors qu'une application consomme un objet sérialisé provenant d'un canal non maîtrisé via la méthode IoBuffer.getObject(). Selon l'advisory officielle, l'exploit ne requiert ni privilège ni interaction utilisateur, ce qui place la vulnérabilité au plus haut niveau d'urgence pour toutes les organisations exposant des services réseau bâtis sur MINA.

Le détail technique publié par les chercheurs et repris par CCB Belgium et l'Apache Software Foundation montre que CVE-2026-42779 est en réalité une régression — un correctif incomplet d'une faille déjà connue, CVE-2026-41635. Cette dernière concernait la méthode AbstractIoBuffer.resolveClass(), qui comporte plusieurs branches d'exécution selon le type d'objet traité. L'une de ces branches, dédiée aux classes statiques ou aux types primitifs, n'appliquait aucun contrôle sur le nom de la classe résolue. Concrètement, l'allowlist censée filtrer les classes acceptables était purement et simplement contournée pour ce chemin de code, ouvrant la voie à l'instanciation de n'importe quelle classe Java disponible dans le classpath de l'application victime.

Le correctif initial de CVE-2026-41635, livré dans les versions 2.0.28, 2.1.11 et 2.2.6 selon l'avis de la fondation, devait neutraliser ce contournement en appliquant l'allowlist plus tôt dans le processus de reconstruction d'objet. Toutefois, l'analyse menée par les équipes ZDI et publiée sur la liste oss-security le 27 avril 2026 a révélé que le patch n'avait pas été correctement propagé sur l'ensemble des branches du projet. Les versions 2.1.11 et 2.2.6 comportaient toujours un chemin d'exécution vulnérable, donnant naissance à CVE-2026-42779. La correction définitive figure dans Apache MINA 2.1.12 et 2.2.7, publiées le 1er mai 2026.

Pour comprendre l'impact, il faut rappeler le rôle d'Apache MINA dans l'écosystème Java. Le framework est utilisé pour bâtir des serveurs réseau hautes performances en TCP, UDP, SSL ou SSH, et sert de socle à des projets majeurs comme Apache Directory Server, Apache FtpServer ou Apache SSHD. De nombreuses applications d'entreprise embarquent MINA via des dépendances transitives sans que les équipes opérationnelles en aient pleinement conscience. Toute logique métier qui désérialise un message reçu sur le réseau via les API MINA est donc potentiellement exposée, y compris dans des produits propriétaires construits sur ces socles.

Le scénario d'exploitation suit le schéma classique des chaînes Java unsafe deserialization : l'attaquant forge un objet sérialisé contenant une classe malveillante choisie parmi les gadgets disponibles dans le classpath cible (Commons Collections, Spring, Groovy, etc.), puis l'envoie à un endpoint qui appelle IoBuffer.getObject(). Lorsque la branche vulnérable de resolveClass() est empruntée, l'allowlist est contournée et la classe est chargée puis instanciée. Selon les gadgets disponibles, l'effet va de la lecture de fichiers arbitraires à l'exécution de commandes shell complètes avec les privilèges du processus Java hôte. Aucun PoC public n'a été observé au moment de l'avis, mais les chercheurs estiment qu'une preuve d'exploitation devrait apparaître très rapidement compte tenu de la similarité avec les chaînes déjà publiées pour CVE-2024-52046 et CVE-2026-41409.

L'avis CCB belge (Centre for Cybersecurity Belgium) a immédiatement classé la vulnérabilité en niveau Warning et recommande aux opérateurs critiques de patcher dans les 48 heures. CERT-EU rappelle que les frameworks Java de bas niveau, souvent oubliés des inventaires, doivent faire l'objet d'une chasse active dès qu'une faille de désérialisation est annoncée. Côté NVD/NIST, la fiche CVE-2026-42779 mentionne un vecteur AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H, soit le profil maximaliste pour une RCE pré-authentification réseau.

Le timing de la divulgation pose également question pour les équipes de réponse. La répétition des correctifs incomplets sur la même surface — CVE-2024-52046, puis CVE-2026-41409, puis CVE-2026-41635, et désormais CVE-2026-42779 — illustre la difficulté à éradiquer la classe entière des bypass d'allowlist quand le mécanisme repose sur du blacklisting implicite plutôt que sur une refonte des chemins de désérialisation. Plusieurs voix dans la communauté Java appellent désormais à abandonner totalement ObjectInputStream au profit de formats explicitement typés (Protocol Buffers, JSON avec validation stricte) sur les surfaces réseau exposées.

Enfin, du point de vue de la défense, l'absence de PoC public ne doit pas inviter à temporiser. L'historique des chaînes Apache montre que la fenêtre entre l'avis et le premier exploit fonctionnel se compte généralement en jours, voire en heures, lorsqu'une faille reprend une mécanique déjà documentée. Les éditeurs intégrant MINA en dépendance transitive sont attendus dans les prochains jours pour publier leurs propres mises à jour ; en attendant, le filtrage réseau et l'isolation des services exposant des endpoints de désérialisation sont les seules mesures capables de réduire significativement la surface d'attaque.

Impact et exposition

L'exposition réelle de CVE-2026-42779 dépasse largement les déploiements directs d'Apache MINA. Toute application Java utilisant en transitif l'une des versions vulnérables et exposant un service réseau qui désérialise du contenu utilisateur est concernée. Les inventaires SBOM des grandes entreprises remontent fréquemment MINA dans des outils ETL, des connecteurs middleware, des serveurs de messagerie d'ancienne génération ou des appliances tierces — autant de surfaces qui ne sont pas toujours maintenues au rythme des advisories Apache.

Les conditions d'exploitation sont particulièrement favorables à l'attaquant : pas d'authentification requise, pas d'interaction utilisateur, vecteur réseau standard, et un profil de gadget Java désormais bien documenté grâce aux travaux antérieurs sur ysoserial. Dès qu'un endpoint MINA exposé sur Internet ou sur un réseau étendu accepte des objets sérialisés, l'exploitation peut être automatisée à l'échelle d'un parc entier.

L'exploitation in-the-wild n'est pas confirmée à la date de l'avis, mais les chercheurs anticipent une prolifération rapide des PoC dans les jours à venir, à l'image du scénario observé sur CVE-2024-52046 fin 2024. Les attaquants opportunistes (cryptominers, botnets) et les groupes spécialisés dans l'accès initial (initial access brokers) sont les premiers acteurs susceptibles d'industrialiser le scan et l'exploitation.

La surface d'attaque est aggravée par la difficulté à détecter les usages internes d'Apache MINA. Contrairement à un produit comme Log4j, MINA n'est pas embarqué de manière uniforme : il faut souvent inspecter manuellement les artefacts JAR ou s'appuyer sur un outil SCA (Software Composition Analysis) pour repérer les versions vulnérables. Les organisations sans gouvernance SBOM mature risquent de découvrir leurs expositions au moment de l'incident, pas avant.

Recommandations immédiates

  • Mettre à jour Apache MINA vers la version 2.1.12 ou 2.2.7 — advisory : Apache Software Foundation Security Advisory du 1er mai 2026 (sans lien externe).
  • Auditer les dépendances transitives via un outil SCA (Snyk, Dependency-Track, GitHub Dependabot) pour identifier toutes les applications embarquant une version vulnérable.
  • Si la mise à jour immédiate est impossible, isoler les services exposant des endpoints MINA derrière un WAF capable d'inspecter les flux binaires Java sérialisés, ou désactiver temporairement les fonctions appelant IoBuffer.getObject().
  • Activer la journalisation détaillée des appels à la désérialisation et envoyer ces logs vers le SIEM pour détecter les tentatives d'exploitation (signatures ysoserial, gadgets Commons Collections, classes inattendues).
  • Restreindre les flux réseau entrants vers les services MINA aux seules sources strictement nécessaires en attendant la mise à jour.

⚠️ Urgence

CVE-2026-42779 est une RCE non authentifiée exploitable à distance avec un score CVSS de 9.8. La répétition des correctifs incomplets sur le même composant et l'existence de gadgets Java publics rendent l'apparition d'un exploit in-the-wild quasi certaine dans les prochains jours. Patchez dans les 48 heures.

Comment savoir si je suis vulnérable ?

Listez vos artefacts Java avec une commande du type find / -name "mina-core-*.jar" ou utilisez mvn dependency:tree | grep mina dans vos projets Maven. Toute version 2.0.x antérieure à 2.0.28, 2.1.x antérieure à 2.1.12 ou 2.2.x antérieure à 2.2.7 est vulnérable. Auditez aussi les appliances tierces et les produits propriétaires qui peuvent embarquer MINA en interne.

Votre infrastructure est-elle exposée ?

Ayi NEDJIMI réalise des audits ciblés pour identifier et corriger vos vulnérabilités.

Demander un audit