En bref

  • CVE-2026-73098 (reflection injection, CVSS 10.0) et CVE-2026-96677 (XSS, CVSS 10.0) — plus CVE-2026-73100 et CVE-2026-73101 — affectent Apache Juneau jusqu'à la version 9.2.0 incluse
  • Framework Java open source largement utilisé pour construire des API REST, des microservices et des pipelines de données
  • Action urgente : mettre à jour Apache Juneau et la bibliothèque juneau-marshall vers la version 9.2.1 immédiatement

Les faits

Le 5 novembre 2026, l'Apache Software Foundation a publié un lot de quatre avis de sécurité concernant Apache Juneau, le framework Java polyvalent conçu pour simplifier la construction d'API REST, de microservices, de pipelines de sérialisation et d'applications de traitement de données. Les quatre CVE — CVE-2026-73098, CVE-2026-73100, CVE-2026-73101 et CVE-2026-96677 — portent chacun un score CVSS 4.0 de 10.0, le maximum absolu, ce qui en fait l'un des ensembles de vulnérabilités les plus sévères divulgués en novembre 2026.

CVE-2026-73098 — Reflection Injection (CVSS 10.0, CWE-470) : Cette vulnérabilité est la plus dangereuse du lot sur le plan technique. Elle réside dans la façon dont Apache Juneau désérialise les entrées utilisateur vers des propriétés de type java.lang.Class. Lorsqu'une telle propriété est présente dans un objet Java traité par le framework, Juneau instancie la classe nommée par l'utilisateur. Cette instanciation déclenche automatiquement l'exécuteur statique (static initializer) de la classe cible. Si cette classe est présente sur le classpath de l'application — ce qui, dans la pratique, correspond à une attaque de type gadget chain similaire aux exploitations de désérialisation Java — son constructeur statique s'exécute avec les droits du service. Le vecteur d'attaque est entièrement réseau (AV:N), ne nécessite aucune authentification (PR:N), aucune interaction humaine (UI:N) et l'intégrité, la confidentialité et la disponibilité du système sont toutes trois compromises (C:H/I:H/A:H). Le score CVSS 3.1 vecteur complet est AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H.

CVE-2026-96677 — Cross-Site Scripting réflexif et persistant (CVSS 10.0, CWE-79) : Apache Juneau inclut un sérialiseur HTML qui peut produire des pages web à partir d'objets Java. Ce sérialiseur positionne des valeurs dans des zones structurelles de la page — entête (header), navigation (nav), barre latérale (aside), pied de page (footer) — collectivement appelées page chrome. La faille vient du fait que ces valeurs ne subissent aucun encodage HTML avant d'être injectées dans le rendu final. Si une application passe des variables issues de la requête HTTP dans ces zones (titre de page dynamique, identifiant d'utilisateur, valeur d'un paramètre GET), un attaquant peut injecter du JavaScript arbitraire. Dans le cas le plus grave — injection stockée dans une base de données puis restituée à d'autres utilisateurs — la vulnérabilité permet la prise de contrôle complète de sessions, le vol de cookies, la redirection vers des sites malveillants et l'exfiltration de données.

CVE-2026-73100 et CVE-2026-73101 : Ces deux CVE supplémentaires ont été divulguées le même jour avec le même score CVSS 10.0. Les détails techniques précis n'ont pas encore été pleinement documentés par les chercheurs indépendants au moment de la publication de cet article, mais l'Apache Software Foundation a confirmé qu'ils affectent les mêmes versions et sont corrigés dans la version 9.2.1. Les projets utilisant Juneau dans des environnements multi-utilisateurs ou exposés à Internet doivent considérer toutes les quatre CVE comme exploitables.

Versions affectées : L'ensemble des versions d'Apache Juneau jusqu'à 9.2.0 incluse sont concernées. La version 9.2.1 est la première version corrigée. La bibliothèque org.apache.juneau/juneau-marshall est également concernée et doit être mise à jour séparément si elle est déclarée comme dépendance directe dans Maven ou Gradle.

Chronologie de la divulgation : Les CVE ont été signalés à l'Apache Software Foundation par des chercheurs en sécurité indépendants via le programme de divulgation responsable. L'Apache Security Team a confirmé les rapports, développé les correctifs et publié simultanément les quatre avis le 5 novembre 2026, accompagnés de la mise à disposition de la version 9.2.1 sur Maven Central. Il n'existe aucun rapport d'exploitation in-the-wild confirmé à cette date.

Contexte d'utilisation d'Apache Juneau : Bien que moins médiatisé que Spring Boot ou Quarkus, Apache Juneau est présent dans de nombreuses applications d'entreprise Java, notamment dans des pipelines de données, des APIs internes, des applications d'analyse et des microservices orientés REST. Sa capacité à sérialiser nativement des objets Java en JSON, XML, HTML, CSV ou RDF en fait un choix prisé pour des outils d'administration et de reporting. Les organisations utilisant Apache TinkerPop, les projets IBM Watson ou des pipelines Big Data Java doivent vérifier leurs dépendances transitives.

Nature des gadget chains exploitables : Pour CVE-2026-73098, l'impact réel dépend des bibliothèques présentes sur le classpath. Des bibliothèques comme Apache Commons Collections, Spring Framework, Groovy ou d'autres fournissant des mécanismes d'exécution dans leurs initialiseurs statiques constituent des gadgets potentiels. L'outil open source ysoserial peut être adapté pour construire des payloads ciblant ce vecteur. La surface d'attaque est donc plus large dans les applications d'entreprise avec de nombreuses dépendances Maven.

Aucun proof-of-concept public confirmé : À la date de publication, aucun PoC public n'a été identifié sur GitHub ou les bases de données d'exploits comme Sploitus ou Exploit-DB. Cela peut changer rapidement étant donné la simplicité conceptuelle de l'exploitation (instanciation de classe via entrée utilisateur) et le score CVSS maximal qui attire l'attention des chercheurs offensifs.

Impact et exposition

Les organisations directement exposées sont celles qui utilisent Apache Juneau dans des applications accessibles via un réseau — qu'il soit Internet ou intranet. Pour CVE-2026-73098, la condition critique est qu'au moins un point d'entrée de l'application accepte des données utilisateur pouvant être désérialisées vers un objet contenant une propriété java.lang.Class. Toute API REST construite avec Juneau qui accepte du JSON ou du XML en entrée et mappe ces données sur des POJOs Java annotés peut être concernée.

Pour CVE-2026-96677, l'exposition est conditionnelle à l'utilisation du sérialiseur HTML de Juneau avec des variables dynamiques dans la page chrome. Les applications qui n'utilisent que des sérialiseurs JSON ou XML ne sont pas affectées par ce vecteur XSS spécifique. En revanche, toute application web utilisant Juneau pour générer des pages HTML avec des données issues de la requête doit être considérée comme vulnérable.

L'impact potentiel de CVE-2026-73098 est le pire scénario pour une application d'entreprise : exécution de code arbitraire avec les droits du serveur d'application, sans aucune authentification préalable. Cela peut mener à une exfiltration de bases de données, à l'installation de malware ou ransomware, à la compromission de secrets applicatifs (clés API, certificats) ou à la latéralisation dans le réseau interne. Dans un contexte de microservices, la compromission d'un service Juneau peut constituer un point d'entrée vers l'ensemble du cluster.

L'absence d'exploitation confirmée in-the-wild ne doit pas induire en erreur : un score CVSS 10.0 et un vecteur PR:N/UI:N signifient que la faille est exploitable par des acteurs de faible sophistication dès qu'un PoC sera disponible. L'historique des CVE Java de désérialisation (Log4Shell, CVE-2021-44228, par exemple) montre que le délai entre la publication et l'exploitation active se réduit de jour en jour.

Recommandations immédiates

  • Mettre à jour Apache Juneau vers la version 9.2.1 — Apache Security Advisory CVE-2026-73098, CVE-2026-96677, CVE-2026-73100, CVE-2026-73101 (sans délai)
  • Mettre à jour la dépendance Maven/Gradle org.apache.juneau:juneau-marshall vers 9.2.1 séparément si déclarée
  • Scanner les dépendances transitives avec OWASP Dependency-Check ou Trivy pour identifier tous les artefacts Juneau
  • En l'absence de patch immédiat : filtrer les entrées HTTP de type java.lang.Class au niveau WAF ou API Gateway
  • Désactiver le sérialiseur HTML de Juneau si non utilisé (HtmlSerializer)
  • Auditer les logs d'application pour des instanciations de classes inhabituelles ou des erreurs de désérialisation
  • Vérifier les pipelines CI/CD : si Juneau est une dépendance transitive non contrôlée, forcer la version 9.2.1 via un BOM Maven ou une résolution de version Gradle

⚠️ Urgence

Quatre CVE CVSS 10.0 simultanées sur un même framework Java constituent un événement de sécurité majeur. Bien qu'aucune exploitation active ne soit confirmée, la fenêtre de sécurité avant l'apparition de PoCs publics est typiquement de 24 à 72 heures pour les vulnérabilités de ce calibre. Toute organisation utilisant Apache Juneau dans une application exposée au réseau doit considérer la mise à jour vers 9.2.1 comme une urgence de niveau P1.

Comment savoir si mon projet utilise Apache Juneau ?

Lancez la commande mvn dependency:tree | grep juneau (Maven) ou gradle dependencies | grep juneau (Gradle). Pour des artefacts déployés, recherchez dans le répertoire WEB-INF/lib/ ou équivalent les fichiers JAR contenant "juneau" dans leur nom. L'outil OWASP Dependency-Check peut également générer un rapport complet des composants vulnérables de votre projet.

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