
Iniezione SQL in GeoServer e GeoTools (CVE-2023-25157 e CVE-2023-25158)
Questa repository contiene una descrizione dettagliata e i passaggi di replicazione delle vulnerabilità di SQL Injection presenti nella piattaforma GeoServer e nella libreria GeoTools. Alla vulnerabilità è stato assegnato l'identificatore CVE-2023-25157 per GeoServer e CVE-2023-25158 per GeoTools.
GeoServer è un server software open-source scritto in Java che offre la possibilità di visualizzare, modificare e condividere dati geospaziali. È progettato per essere una soluzione flessibile ed efficiente per la distribuzione di dati geospaziali provenienti da diverse fonti, come database Geographic Information System (GIS), dati basati sul web e dataset personali.
GeoServer aderisce agli standard dell'Open Geospatial Consortium (OGC) per la condivisione dei dati, inclusi il Web Feature Service (WFS), il Web Map Service (WMS) e il Web Coverage Service (WCS). Questa aderenza agli standard significa che i dati di GeoServer possono essere utilizzati in un'ampia varietà di applicazioni, dal software GIS personalizzato alle soluzioni pronte all'uso.
GeoServer è costruito principalmente sul Spring Framework, ma utilizza anche numerose altre librerie e framework, tra cui:
GeoTools: Una libreria Java open-source che fornisce strumenti per i dati geospaziali. GeoServer utilizza GeoTools per molte delle sue funzionalità principali, come la lettura, la scrittura e la trasformazione dei dati.Le vulnerabilità in questione sono profondamente integrate nelle espressioni di filtro e di funzione definite dagli standard dell'Open Geospatial Consortium (OGC). Queste espressioni costituiscono la spina dorsale dell'interrogazione e della manipolazione dei dati geospaziali, svolgendo un ruolo fondamentale nel funzionamento di sistemi come GeoServer e GeoTools.
Quando queste vulnerabilità vengono sfruttate, possono portare a gravi violazioni della sicurezza. La divulgazione non autorizzata di informazioni è una delle principali preoccupazioni, poiché gli attaccanti possono potenzialmente accedere a dati sensibili memorizzati nel database. La modifica non autorizzata è un altro potenziale esito, con attaccanti in grado di manipolare i dati a proprio vantaggio. Inoltre, queste vulnerabilità possono anche facilitare l'interruzione del servizio, con uno sfruttamento riuscito che potrebbe portare all'indisponibilità del servizio.
Di seguito viene fornita un'analisi approfondita di ciascuna vulnerabilità identificata. Ogni vulnerabilità viene esaminata in dettaglio, discutendone le caratteristiche specifiche, le condizioni che ne determinano la manifestazione e i potenziali effetti del suo sfruttamento. Ecco una ripartizione dettagliata delle vulnerabilità trovate in GeoServer:
PropertyIsLike: questa vulnerabilità è presente quando il filtro PropertyIsLike viene utilizzato con un campo String in combinazione con qualsiasi Store basato su database relazionale, un PostGIS DataStore con le funzioni di encoding abilitate, o qualsiasi mosaico di immagini con un indice memorizzato in un database relazionale.strEndsWith: questa vulnerabilità si presenta quando la funzione strEndsWith viene utilizzata con un PostGIS DataStore con le funzioni di encoding abilitate.strStartsWith: questa vulnerabilità si verifica quando la funzione strStartsWith viene utilizzata con un PostGIS DataStore con le funzioni di encoding abilitate.FeatureId: questa vulnerabilità è presente quando il filtro FeatureId viene utilizzato con qualsiasi tabella di database che dispone di una colonna chiave primaria String e quando le prepared statement sono disattivate.jsonArrayContains: questa vulnerabilità si trova quando la funzione jsonArrayContains viene utilizzata con un campo String o JSON e con un PostGIS o Oracle DataStore (solo in GeoServer 2.22.0 e versioni successive).DWithin: questa vulnerabilità viene scoperta quando il filtro DWithin viene utilizzato con un Oracle DataStore.Ed ecco una ripartizione dettagliata delle vulnerabilità trovate in GeoTools:
PropertyIsLike:
strEndsWith:
strStartsWith:
FeatureId:
jsonArrayContains:
DWithin:
CVE-2023-25157 GeoServer SQL Injection.CVE-2023-25158 GeoTools SQL Injection.