CVE-2026-42779 : désérialisation RCE dans Apache MINA, correctif incomplet (CVSS 9.8)
Un patch incomplet sur CVE-2026-41635 laisse subsister un contournement de l'allowlist de classes dans Apache MINA 2.1.x/2.2.x, permettant l'exécution de code arbitraire sans authentification. Mise à jour vers 2.1.12 ou 2.2.7 requise.
Apache MINA, bibliothèque Java de communication réseau asynchrone utilisée notamment dans ActiveMQ, Apache Directory Server, des passerelles Syslog et de nombreux middlewares IoT, cumule les vulnérabilités de désérialisation depuis 2024. CVE-2024-52046 (CVSS 10.0) avait alerté la communauté Java en décembre 2024. CVE-2026-41635, divulguée via oss-security le 27 avril 2026, semblait clore le sujet — mais CVE-2026-42779, publiée le 1er mai 2026 (CVSS 9.8), révèle que le correctif était incomplet.
Mécanisme de la vulnérabilité
La faille réside dans AbstractIoBuffer.resolveClass(), la méthode qui détermine quelle classe charger lors de la désérialisation d'un objet via IoBuffer.getObject().
Le correctif de CVE-2026-41635 avait ajouté une vérification d'allowlist sur les classnames, mais oublié une branche dédiée aux classes statiques ou primitives. Cette branche ne procède à aucune vérification, permettant à un attaquant d'y faire aboutir la résolution d'une classe arbitraire :
IoBuffer.getObject()
→ AbstractIoBuffer.resolveClass(name)
if (isPrimitive || isStaticInitializer) {
return Class.forName(name); // ← branche non filtrée
}
checkAllowlist(name); // ← jamais atteint pour la branche ci-dessus
Un attaquant envoie un objet sérialisé crafté dont la classe cible déclenche cette branche. Résultat : chargement et exécution de classe arbitraire, sans authentification préalable.
CVE-2026-42778 couvre une variante similaire via le chemin des initialiseurs statiques, patchée dans le même release.
Versions affectées et correctif
| Branche | Vulnérable | Corrigée |
|---|---|---|
| 2.1.x | 2.1.0 – 2.1.11 | 2.1.12 |
| 2.2.x | 2.2.0 – 2.2.6 | 2.2.7 |
La mise à jour est disponible sur Maven Central. Vérifier les dépendances transitives :
mvn dependency:tree | grep mina
Surface d'attaque
Tout service Java qui reçoit des données réseau non-fiables via MINA est potentiellement exposé. Les cas les plus courants : serveurs Syslog over TCP, passerelles LDAP/RADIUS, connecteurs de messagerie et agents IoT. L'exploitation ne requiert aucun accès authentifié — seul l'accès réseau au port MINA suffit.
Apache MINA n'est pas omniprésent dans les applications modernes greenfield, mais reste implanté dans des projets Apache à longue durée de vie et dans des systèmes embarqués peu mis à jour. La combinaison CVE-2026-41635 + 42779 + 42778 sur une fenêtre de cinq jours est un signal fort : auditer les dépendances avant de supposer que le patch précédent suffisait.
Divulgation oss-security — CVE-2026-41635 (patch originel)