
GeoServer & GeoTools Injection SQL (CVE-2023-25157 & CVE-2023-25158)
Ce dépôt contient une description détaillée et les étapes de reproduction des vulnérabilités d'injection SQL trouvées dans la plateforme GeoServer et la bibliothèque GeoTools. La vulnérabilité a reçu l'identifiant CVE-2023-25157 pour GeoServer et CVE-2023-25158 pour GeoTools.
GeoServer est un serveur logiciel open-source écrit en Java qui offre la possibilité de visualiser, éditer et partager des données géospatiales. Il est conçu pour être une solution flexible et efficace pour distribuer des données géospatiales provenant de diverses sources telles que les bases de données de systèmes d'information géographique (SIG), les données web et les ensembles de données personnelles.
GeoServer adhère aux normes de l'Open Geospatial Consortium (OGC) pour le partage de données, y compris le Web Feature Service (WFS), le Web Map Service (WMS) et le Web Coverage Service (WCS). Cette conformité aux normes signifie que les données de GeoServer peuvent être utilisées dans une grande variété d'applications, allant des logiciels SIG personnalisés aux solutions prêtes à l'emploi.
GeoServer est principalement construit sur le framework Spring, mais utilise également un certain nombre d'autres bibliothèques et frameworks, notamment :
GeoTools: Une bibliothèque Java open-source qui fournit des outils pour les données géospatiales. GeoServer utilise GeoTools pour de nombreuses fonctionnalités de base, telles que la lecture, l'écriture et la transformation des données.Les vulnérabilités en question sont profondément intégrées dans les expressions de filtre et de fonction définies par les normes de l'Open Geospatial Consortium (OGC). Ces expressions constituent l'épine dorsale de l'interrogation et de la manipulation des données géospatiales, jouant un rôle central dans la fonctionnalité de systèmes comme GeoServer et GeoTools.
Lorsque ces vulnérabilités sont exploitées, elles peuvent entraîner de graves failles de sécurité. La divulgation non autorisée d'informations est une préoccupation majeure, car les attaquants peuvent potentiellement accéder à des données sensibles stockées dans la base de données. La modification non autorisée est un autre résultat potentiel, les attaquants pouvant manipuler les données à leur avantage. De plus, ces vulnérabilités peuvent également faciliter l'interruption de service, une exploitation réussie pouvant entraîner l'indisponibilité du service.
Ce qui suit fournit une analyse approfondie de chaque vulnérabilité identifiée. Chaque vulnérabilité est explorée en détail, en discutant de ses caractéristiques spécifiques, des conditions qui conduisent à sa manifestation et des effets potentiels de son exploitation. Voici une ventilation détaillée des vulnérabilités trouvées pour GeoServer :
PropertyIsLike filter : cette vulnérabilité est présente lorsque le filtre PropertyIsLike est utilisé avec un champ de type String en conjonction avec n'importe quel magasin de données (DataStore) basé sur une base de données relationnelle, un PostGIS DataStore avec les fonctions d'encodage activées, ou toute mosaïque d'images avec un index stocké dans une base de données relationnelle.strEndsWith fonction : cette vulnérabilité survient lorsque la fonction strEndsWith est utilisée avec un PostGIS DataStore avec les fonctions d'encodage activées.strStartsWith fonction : cette vulnérabilité est trouvée lorsque la fonction strStartsWith est utilisée avec un PostGIS DataStore avec les fonctions d'encodage activées.FeatureId filter : cette vulnérabilité est présente lorsque le filtre FeatureId est utilisé avec n'importe quelle table de base de données ayant une colonne de clé primaire de type String et lorsque les instructions préparées sont désactivées.jsonArrayContains fonction : cette vulnérabilité est trouvée lorsque la fonction jsonArrayContains est utilisée avec un champ de type String ou JSON et avec un PostGIS ou Oracle DataStore (uniquement dans GeoServer 2.22.0 et versions ultérieures).DWithin filter : cette vulnérabilité est découverte lorsque le filtre DWithin est utilisé avec un Oracle DataStore.Et voici une ventilation détaillée des vulnérabilités trouvées pour GeoTools :
PropertyIsLike filter :
strEndsWith function :
strStartsWith function :
FeatureId filter :
jsonArrayContains function :
DWithin filter :
CVE-2023-25157 GeoServer SQL Injection.CVE-2023-25158 GeoTools SQL Injection.