Rapport CTI technique du 25 août 2026
Résumé exécutif
Une injection SQL non authentifiée (CVSS 9.8, référencée GHSA-mqjf-5f49-2fjh) affecte la fonction jsonArrayContains de GeoServer, utilisée dans les expressions de filtre OGC pour interroger des champs JSON. Le défaut touche les déploiements utilisant les data stores PostGIS et Oracle JDBC et peut conduire à une exécution de code distante selon la configuration. Il s'agit d'une régression de CVE-2023-25158, une faille déjà corrigée dans la même fonction. La vulnérabilité a été divulguée publiquement le 12 août 2026 par le chercheur @q1uf3ng, et des tentatives d'exploitation ont commencé dans les heures suivant la publication, avant même la disponibilité d'un correctif officiel.
GeoServer a depuis publié les versions 3.0.1, 2.28.5 et 2.27.6, accompagnées des versions GeoTools corrigées 35.1, 34.5 et 33.6. Les instances exposées publiquement, un cas fréquent puisque les interfaces OGC WMS et WFS sont souvent ouvertes sans authentification pour alimenter des applications cartographiques publiques, restent la cible prioritaire des scans de masse observés depuis la divulgation. Ce rapport détaille le mécanisme de l'injection, la chronologie de l'exploitation et les mesures de confinement applicables en attendant ou en complément du correctif.
Chronologie
| Date | Événement |
|---|---|
| 2023 | Correction initiale de CVE-2023-25158 dans la fonction jsonArrayContains |
| 12 août 2026, 10:46 UTC | Divulgation publique de la régression par le chercheur @q1uf3ng sur X |
| 12-13 août 2026 | Début des tentatives d'exploitation, essentiellement du scan et de la sonde, depuis un nombre restreint d'adresses IP |
| 13 août 2026 | Rapports publics confirmant des centaines de tentatives d'identification d'instances vulnérables |
| Post-divulgation | Publication des versions corrigées 3.0.1, 2.28.5 et 2.27.6 (GeoTools 35.1, 34.5, 33.6) |
Fiche vulnérabilité
GHSA-mqjf-5f49-2fjh | CVSS 3.1 : 9.8 | GeoServer (fonction jsonArrayContains, data stores PostGIS et Oracle JDBC)
Pour PostGIS 12 et versions ultérieures, la fonction jsonArrayContains(<column>, <pointer>, <value>) écrit le paramètre <value> directement dans la requête SQL générée sans l'échapper. GeoServer accepte les expressions de filtre CQL via ses interfaces OGC WMS et WFS, des interfaces fréquemment exposées sans authentification pour permettre à des applications cartographiques publiques de consommer les données. Un attaquant capable d'atteindre ces points d'entrée atteint directement le point d'injection, sans étape d'authentification intermédiaire.
Conditions d'exploitation : aucune authentification requise. L'attaquant doit seulement pouvoir soumettre une requête de filtre OGC (WMS ou WFS) contenant un appel à jsonArrayContains vers une instance exposée utilisant un data store PostGIS ou Oracle JDBC. PoC disponible : oui, publié par le chercheur découvreur au moment de la divulgation, ce qui explique la rapidité des tentatives d'exploitation observées. Patch/mitigation : mise à jour vers GeoServer 3.0.1, 2.28.5 ou 2.27.6 (avec GeoTools 35.1, 34.5 ou 33.6 selon la branche). En l'absence de mise à jour immédiate, restreindre l'accès public aux interfaces WMS/WFS et appliquer un filtrage WAF strict sur les paramètres de filtre CQL.
Les mainteneurs du projet ont explicitement qualifié cette faille de régression de CVE-2023-25158, un défaut déjà corrigé dans la même fonction : le correctif de 2023 n'a pas couvert le chemin de code réintroduit ou modifié depuis.
Diagramme de la chaîne d'attaque

Chronologie reconstruite à partir des rapports Hadrian, Field Effect et Security Affairs sur les premières heures d'exploitation.
Analyse technique
Étape 1 : divulgation publique et publication du PoC
Le 12 août 2026, le chercheur @q1uf3ng publie les détails de la régression et un code de démonstration, révélant que la fonction jsonArrayContains reste vulnérable à l'injection SQL malgré le correctif de 2023 sur une faille voisine.
Étape 2 : scan de masse des instances exposées
Dans les heures suivant la divulgation, des tentatives de sonde ciblent les interfaces OGC WMS et WFS accessibles publiquement, cherchant à identifier les instances utilisant un data store PostGIS ou Oracle JDBC vulnérable. Les rapports font état de centaines de tentatives concentrées depuis un nombre restreint d'adresses source, un profil typique de reconnaissance automatisée plutôt que de campagne ciblée.
Étape 3 : injection via l'expression de filtre CQL
L'attaquant soumet une requête de filtre OGC contenant un appel jsonArrayContains avec une charge utile non échappée, injectée directement dans la requête SQL générée côté serveur.
Étape 4 : exécution SQL arbitraire et pivot vers RCE
Selon la configuration du data store et les privilèges du compte de service GeoServer, l'injection permet l'extraction de données, la modification de la base, voire l'exécution de code arbitraire côté serveur lorsque le moteur de base de données autorise l'exécution de commandes système ou de fonctions étendues.
Indicateurs de compromission
| Type | Valeur |
|---|---|
| Comportement réseau | Volume anormal de requêtes OGC WMS/WFS contenant des expressions de filtre CQL avec appels à jsonArrayContains, depuis un nombre restreint de sources |
| Journal applicatif | Erreurs SQL inhabituelles ou codes retour anormaux dans les logs GeoServer corrélés à des requêtes de filtre |
| Journal base de données | Requêtes SQL générées contenant des fragments non conformes aux gabarits habituels de filtre OGC |
Les sources publiques consultées ne publient pas d'adresses IP nominatives associées à la campagne de scan initiale ; la recommandation opérationnelle reste la corrélation de logs multi-couches (GeoServer, serveur web, base de données, pare-feu) plutôt qu'un blocage par IOC statique.
MITRE ATT&CK
| Tactique | Technique | ID | Justification |
|---|---|---|---|
| Initial Access | Exploit Public-Facing Application | T1190 | L'injection cible directement une interface OGC exposée publiquement sans authentification |
| Execution | Command and Scripting Interpreter | T1059 | Le pivot vers RCE, quand il est possible, s'appuie sur l'exécution de commandes via le moteur de base de données |
| Discovery | Network Service Discovery | T1046 | Le scan de masse observé dans les heures suivant la divulgation vise à identifier les instances vulnérables exposées |
Cette cartographie est une lecture technique construite à partir du comportement documenté par les chercheurs ayant analysé la faille ; aucune attribution officielle d'acteur ou de groupe n'est disponible dans les sources consultées.
Remédiation : checklist opérationnelle
- Recenser en urgence toutes les instances GeoServer exposées, notamment celles utilisant un data store PostGIS ou Oracle JDBC.
- Mettre à jour vers GeoServer 3.0.1, 2.28.5 ou 2.27.6 selon la branche déployée, avec les versions GeoTools correspondantes.
- Restreindre l'accès public aux interfaces WMS/WFS via VPN, reverse proxy ou liste blanche d'adresses IP, y compris après application du correctif.
- Appliquer des règles WAF filtrant les paramètres de filtre CQL suspects en attendant la mise à jour complète du parc.
- Appliquer le principe du moindre privilège aux comptes de service de base de données utilisés par GeoServer, sans droits administratifs superflus.
- Auditer les journaux GeoServer, serveur web, base de données et pare-feu à la recherche d'erreurs SQL, de processus enfants inattendus ou de connexions sortantes suspectes.
- Revalider la configuration après correctif, la régression de 2023 rappelant qu'un correctif ponctuel sur une fonction ne garantit pas l'absence de réintroduction future.
Sources
- GeoServer Zero-Day Targeted in Active Exploitation Attempts, Can Lead to RCE - The Hacker News
- Hackers Exploiting Unpatched GeoServer Zero-Day - SecurityWeek
- Here be dragons: GeoServer pre-auth SQL injection to RCE - Hadrian
- GeoServer Zero-Day Is Already Being Probed. That's the Problem - Security Affairs
- Early exploitation attempts observed of GeoServer zero day - Field Effect
- GeoServer 3.0.1 / GeoServer 2.28.5 / GeoServer 2.27.6 Released - OSGeo Discourse
- Emerging Threat: GeoServer Zero-Day SQL Injection via jsonArrayContains - CyCognito