Cyberattacchi alimentati dall'intelligenza artificiale: Come individuare, prevenire e difendersi dalle minacce intelligenti

Leggi ora
Per le traduzioni dei siti utilizziamo l'intelligenza artificiale e, sebbene ci sforziamo di essere accurati, non sempre le traduzioni sono precise al 100%. La vostra comprensione è apprezzata.

La CVE-2024-36401 in GeoServer Open-Source espone i sistemi all'esecuzione di codice da remoto

da OPSWAT
Condividi questo post
Foto di testa dei partecipanti al programma di borse di studio OPSWAT
Partecipanti al programma di borse di studio OPSWAT

In questo blog esploriamo CVE-2024-36401, una vulnerabilità di sicurezza riscontrata in GeoServer, un server open-source basato su Java ampiamente utilizzato per la manipolazione e la condivisione di dati geospaziali. Questa vulnerabilità, che potrebbe consentire l'esecuzione di codice remoto (RCE) da parte di utenti non autenticati, sottolinea l'importanza fondamentale di applicare le patch alle distribuzioni di GeoServer il prima possibile. 

Nella nostra ultima analisi di sicurezza, due borsisti dell OPSWAT indagano su questa minaccia:

Condivideremo anche il modo in cui la tecnologia SBOM di OPSWAT può rilevare questa vulnerabilità, oltre a fornire passi concreti ai team per proteggere la loro infrastruttura geospaziale prima che gli aggressori colpiscano.

Illustrazione dell'analisi di vulnerabilità di GeoServer

Panoramica di GeoServer

GeoServer è un server open source basato su Java, progettato per visualizzare, modificare e condividere dati geospaziali. Lanciato inizialmente nel 2001 da TOPP (The Open Planning Project), GeoServer è stato sviluppato per migliorare l'impegno pubblico nel governo e nella pianificazione urbana attraverso lo scambio di dati spaziali aperti. A distanza di oltre due decenni, GeoServer è maturato fino a diventare una solida piattaforma in grado di gestire vari formati di dati spaziali e di integrarsi con diverse fonti di dati.

GeoServer fornisce servizi basati sugli standard OGC (Open Geospatial Consortium), tra cui:

  • WFS (Web Feature Service) - Consente di creare, modificare e scambiare informazioni geografiche in formato vettoriale tramite HTTP
  • WCS (Web Coverage Service) - Facilita l'accesso ai dati raster (ad esempio, immagini satellitari) per modelli e analisi complesse.
  • WMS (Web Map Service) - Fornisce una semplice interfaccia HTTP per richiedere immagini di mappe.

Informazioni su CVE-2024-36401

La CVE-2024-36401 colpisce le versioni di GeoServer precedenti alla 2.25.2, 2.24.4 e 2.23.6. La falla deriva dalla valutazione non sicura dei nomi delle proprietà come espressioni XPath su più parametri di richiesta OGC. Gli aggressori possono sfruttare questa falla per creare RCE (esecuzione di codice in remoto) iniettando input modificati in un'installazione predefinita di GeoServer.

 Secondo gli avvisi di sicurezza di GitHub, questa vulnerabilità ha un punteggio CVSS v3.1 di 9.8 (Critico). 

Schermata delle metriche del punteggio di base CVSS utilizzate per la valutazione delle vulnerabilità del software.

Caratteristiche semplici e complesse di GeoServer

GeoServer supporta sia tipi di caratteristiche semplici che complesse per adattarsi a diverse strutture di dati geospaziali, da quelle piatte a quelle intricate e annidate. Tuttavia, la gestione errata delle espressioni XPath in questi tipi di dati rende sfruttabile la CVE-2024-36401.

Caratteristiche semplici

I tipi di caratteristiche semplici rappresentano dati geospaziali semplici in un formato piatto, in cui ogni riga di un database corrisponde a una caratteristica geospaziale e ogni attributo corrisponde direttamente a un elemento XML. 

Ad esempio, una tabella che rappresenta le aziende con colonne come id, nome e sede può essere facilmente convertita in semplici funzioni XML.

idnomeposizione
1OPSWATPUNTO (10.769829, 106.685248)
Mappatura semplice delle caratteristiche di GeoServer dalle righe del database agli elementi XML

Caratteristiche del complesso

I tipi di caratteristica complessi, invece, gestiscono dati più complessi. Questo tipo di caratteristica supporta proprietà annidate e relazioni tra diversi insiemi di dati. Questi schemi complessi non sono generati automaticamente, ma sono definiti utilizzando gli standard della comunità, come indicato nell'estensione Application Schema di GeoServer.

Esempio: 

Sotto la precedente tabella delle aziende, aggiungiamo una chiave esterna gu_id per descrivere la relazione tra una società e la sua unità geologica equivalente:

idnomeposizionegu_id
1OPSWATPUNTO (10.769829, 106.685248)12

Le informazioni sull'unità geologica sono memorizzate separatamente nella tabella unità geologica:

gu_idurnadescrizione
12urn:x-demo:feature:GeologicUnit:12Gneiss metamorfico

Utilizzando queste tabelle, è possibile mappare l'azienda su una sa:Società di campionamentoche contiene un elemento annidato gsml:Unità geologica. Questa configurazione crea una caratteristica complessa, poiché coinvolge tipi e relazioni annidati definiti dalle specifiche della comunità piuttosto che da schemi generati automaticamente.

Relazioni tra unità geologiche annidate nelle caratteristiche complesse di GeoServer

Tale flessibilità è essenziale per la modellazione di scenari complessi del mondo reale, ma introduce anche vulnerabilità dovute alla dipendenza da tecniche di elaborazione avanzate come la valutazione JXPath per gestire efficacemente le strutture annidate.

Come nasce la vulnerabilità

GeoServer è stato progettato per utilizzare la valutazione XPath per elaborare tipi di caratteristiche complesse (come quelle presenti negli archivi di dati Application Schema). Tuttavia, a causa di una gestione impropria, applica erroneamente la valutazione XPath anche a tipi di caratteristiche semplici. Questo crea un vettore di attacco perché:

  1. GeoServer si affida alla libreria GeoTools per valutare i nomi delle proprietà durante il recupero dei dati.
  2. Il comune-jxpath utilizzata per l'elaborazione delle espressioni XPath, manca di un'adeguata convalida e può eseguire codice arbitrario durante l'elaborazione delle espressioni XPath.
  3. Questa falla espone tutte le istanze di GeoServer a potenziali vulnerabilità RCE, in quanto un utente malintenzionato può creare una richiesta dannosa che sfrutta questa esecuzione XPath non sicura per controllare il server.

Panoramica del flusso di lavoro di sfruttamento

  • A POSTO viene inviata al sistema GetPropertyValue operazione. GeoServer tenta quindi di recuperare la proprietà (o la proprietà valoreRiferimento) per una determinata caratteristica.  
  • Se la proprietà richiesta esiste nella tabella Dettagli del tipo di caratteristica, GeoServer la elabora normalmente.
Fallback di GeoServer a commons-jxpath per la valutazione di XPath in una tabella
  • Tuttavia, se l'immobile non è presente nell'elenco, GeoServer ricorre all'elenco delle proprietà. comune-jxpath per interpretare il parametro della richiesta come espressione XPath.
  • Da quando comune-jxpath permette di eseguire codice Java direttamente da XPath, questo meccanismo di fallback consente potenzialmente di sfruttare i parametri di richiesta forniti dall'utente per l'esecuzione di codice remoto. In poche parole, un utente malintenzionato può iniettare codice dannoso per ottenere l'RCE.
Diagramma del flusso di lavoro che illustra l'operazione GetPropertyValue di GeoServer e il flusso di attacco

Sfruttamento e analisi delle vulnerabilità

JXPath e il ponte di esecuzione Java

Elaborazione di Commons-jxpath di espressioni XPath dannose in GeoServer

Il comune-jxpath comunemente chiamata JXPath, consente di navigare attraverso grafi di oggetti Java (JavaBeans, oggetti DOM, ecc.) utilizzando la sintassi XPath. Ad esempio, se si dispone di un semplice oggetto Dipendente con proprietà come nome e indirizzo, JXPath consente di interrogare tali proprietà come se fossero nodi di un documento XML.

Navigazione JXPath di grafi di oggetti Java utilizzando la sintassi XPath

Sfruttare le funzioni di estensione

Oltre alle funzioni standard, JXPath supporta anche funzioni di estensione che fungono da ponte con Java. Questo "ponte verso Java" è fondamentale perché consente di invocare le funzioni Java direttamente all'interno delle query XPath, ad esempio:

JXPath per interrogare le proprietà di un oggetto Java Employee

A causa delle poche limitazioni sui metodi Java che possono essere richiamati attraverso questo bridge, un utente malintenzionato può sfruttare il exec() (o metodi simili) per eseguire comandi arbitrari sul server.

Invocazione di funzioni di estensione che collegano XPath ai metodi Java

WFS GetPropertyValue

Il WFS di GeoServer consente agli utenti di interrogare e manipolare le caratteristiche geospaziali. In condizioni normali, il WFS GetPropertyValue restituirebbe semplicemente la proprietà richiesta in una struttura XML.

Operazione GetPropertyValue di WFS che restituisce la proprietà XML
Struttura della risposta XML GetPropertyValue di WFS

Analisi del flusso di lavoro

  1. Un utente malintenzionato invia una richiesta POST a /geoserver/wfs.
  2. GeoServer esamina il tag XML più esterno.wfs:GetPropertyValue-per determinare quale operazione eseguire.
  3. GeoServer delega quindi i parametri della richiesta al metodo corrispondente della classe WFS. In questo scenario, il Dispatcher indirizza la richiesta al metodo GetPropertyValue metodo.
Dispatcher GeoServer che indirizza la richiesta al metodo GetPropertyValue
  1. All'interno della classe DefaultWebFeatureService20 (WFS), questo GetPropertyValue inoltra i parametri dell'utente a un gestore con lo stesso nome.
  2. Il gestore eseguire() riceve la richiesta, compresi i dati critici valoreRiferimento parametro controllato dall'utente.
Metodo run() del gestore che riceve la richiesta dell'utente con il parametro valueReference
  1. Durante il eseguire() GeoServer recupera il metodo valore di riferimento e invoca il suo valutare() funzione.
GeoServer recupera referenceValue e invoca la funzione evaluate()
  1. Se valoreRiferimento non corrisponde alle proprietà predefinite di GeoServer, GeoServer lo imposta come predefinito al valore Accessore di proprietà di una caratteristica, che interpreta valoreRiferimento come espressione XPath.
FeaturePropertyAccessor che interpreta valueReference come espressione XPath
  1. Il get() in FeaturePropertyAccessor utilizza il metodo comune-jxpath per eseguire la query XPath. In questo caso, l'utente valoreRiferimento viene passato direttamente nel parametro xpath senza validazione. Attraverso JXPathContext.newContext()GeoServer inizializza un ambiente per le interrogazioni XPath, quindi le esegue tramite iteratePointers().
Commons-jxpath esegue una query XPath con un valore di riferimento fornito dall'utente

Poiché JXPath supporta le funzioni di estensione, gli aggressori possono iniettare codice dannoso nell'espressione XPath, innescando l'esecuzione di codice arbitrario sull'istanza di GeoServer.

L'attaccante inietta codice dannoso tramite espressione XPath per RCE

Questa catena di eventi dimostra come una gestione non sicura del valoreRiferimento può portare a RCE, rappresentando una grave minaccia per la sicurezza delle distribuzioni vulnerabili di GeoServer.

Simulazione dell'attacco

Per simulare questo sfruttamento in uno scenario reale, i nostri borsisti OPSWAT hanno implementato GeoServer su un computer Windows locale. All'accesso a GeoServer è stata visualizzata la seguente interfaccia.

Schermata dell'interfaccia di GeoServer su macchina Windows per la simulazione di vulnerabilità

Una volta che il server è in esecuzione, un utente malintenzionato può sfruttare la vulnerabilità inviando una richiesta POST con un'espressione XPath dannosa via valoreRiferimento all'endpoint /geoserver/wfs.

Frammento di codice XML che dimostra una richiesta POST dannosa che sfrutta valueReference in GeoServer

Risultato: Dopo l'invio della richiesta, l'espressione XPath dannosa esegue un comando di sistema e attiva l'avvio dell'applicazione Calculator.

Schermata che illustra l'avvio dell'applicazione Calculator dopo un exploit RCE andato a buon fine

Mitigazione e raccomandazioni

Un semplice exploit può trasformarsi in un attacco alla catena di fornitura del software, in particolare nei progetti che si basano su software open-source come GeoServer. La tecnologiaOPSWAT SBOM (Software Bill of Materials) aiuta a identificare vulnerabilità come CVE-2024-36401 nella vostra base di codice.

Questo esempio dimostra come OPSWAT SBOM:

  1. Rileva i componenti software interessati dalle vulnerabilità.
  2. Valuta e classifica la gravità della falla di sicurezza: in questo caso, le CVE di GeoServer sono contrassegnate come "Critiche".
  3. Identifica la versione interessata.
  4. Raccomanda la versione corretta in modo che i team di sviluppo possano applicare tempestivamente le patch o adottare misure di correzione.
Schermata del cruscotto di OPSWAT SBOM che rileva i pacchetti GeoServer con vulnerabilità critiche
La tecnologia OPSWAT SBOMSoftware Bill of Materials) rileva i pacchetti GeoServer con vulnerabilità critiche.

Altri passi consigliati

  1. Aggiornare GeoServer: Aggiornare alle versioni di GeoServer 2.25.2, 2.24.4 o 2.23.6 (o successive) in cui la vulnerabilità è stata corretta.
  2. Dipendenze di audit: Utilizzate regolarmente strumenti come OPSWAT SBOM per identificare le librerie obsolete (ad esempio, comune-jxpath) nel vostro ambiente.
  3. Limitare l'accesso: Distribuire GeoServer dietro firewall o livelli di autenticazione per ridurre al minimo la superficie di attacco.
  4. Monitorare gli avvisi di sicurezza: Tenere d'occhio le note di rilascio ufficiali di GeoServer e i database CVE per rimanere aggiornati sulle nuove patch.

Informazioni su OPSWAT SBOM

OPSWAT SBOM supporta i linguaggi di programmazione più diffusi, fornendo ai team di sviluppo software la visibilità delle librerie open-source di terze parti, delle loro dipendenze associate e delle ultime versioni disponibili da aggiornare. Gli sviluppatori possono integrare OPSWAT SBOM nel loro codice sorgente e nei servizi di container come GitHub, BitBucket, GitLab, Amazon ECR, DockerHub e altri. Per saperne di più su SBOM.

Rivolgetevi oggi stesso a un esperto per scoprire come integrare gli strumenti e le soluzioni OPSWAT con l'infrastruttura e i flussi di lavoro esistenti:

Rimanete aggiornati con OPSWAT!

Iscriviti oggi stesso per ricevere gli ultimi aggiornamenti sull'azienda, storie, informazioni sugli eventi e altro ancora.