Penetration Test Spring Boot: Spring4Shell, Log4Shell, Actuator e Sicurezza Java Enterprise
Spring Boot è il framework Java enterprise dominante, ma la sua storia recente è segnata dalle vulnerabilità più mediatizzate del decennio: Log4Shell (CVE-2021-44228) e Spring4Shell (CVE-2022-22965). Oltre a questi incidenti maggiori, le applicazioni Spring Boot espongono regolarmente endpoint Actuator non protetti che leakano segreti o permettono RCE diretta. Matproof Sentinel esegue pentest Spring Boot mirati con prova di sfruttamento e report audit-ready DORA / NIS2 / ISO 27001 da 149 €.
Perché Spring Boot richiede attenzione pentest eccezionale
Spring Boot domina lo sviluppo backend Java enterprise dal 2015 — particolarmente forte nelle banche italiane (Intesa Sanpaolo, UniCredit, Banco BPM) e nelle assicurazioni (Generali, Unipol). Log4Shell (CVE-2021-44228, dicembre 2021, CVSS 10.0) ha colpito letteralmente centinaia di milioni di server Java esposti; tre anni dopo, Cisco Talos riporta che il 31% dei server Java scannati nel 2024 rimangono vulnerabili. Spring4Shell (CVE-2022-22965, marzo 2022, CVSS 9.8) sfrutta un difetto in Spring Framework permettendo RCE remoto. Oltre alle CVE maggiori, i deployment Spring Boot espongono frequentemente endpoint Actuator in produzione senza autenticazione — /actuator/heapdump permette dump della memoria JVM (incluso secrets), /actuator/env rivela variabili ambiente, /actuator/jolokia permette esecuzione di metodi JMX arbitrari.
- CVE-2021-44228 (Log4Shell, CVSS 10.0): RCE via injection JNDI in Log4j 2.x — virtualmente tutte le applicazioni Spring Boot non patchate; 31% server Java scannati nel 2024 rimangono vulnerabili (Cisco Talos).
- CVE-2022-22965 (Spring4Shell, CVSS 9.8): RCE via manipolazione attributi classe in Spring Framework < 5.3.18 / < 5.2.20 — exploit pubblico disponibile.
- CVE-2023-20861 (SpEL DoS, CVSS 5.3): DoS via espressioni SpEL malformati in Spring Expression — affligge Spring 5.2.x a 5.3.25 / 6.0.x a 6.0.6.
- CVE-2024-22243 (UriComponentsBuilder, CVSS 8.1): SSRF via gestione errata URI in UriComponentsBuilder Spring Framework.
- Endpoint Actuator esposti: /actuator/heapdump (dump memoria JVM incluso secrets), /actuator/env (variabili ambiente), /actuator/jolokia (esecuzione JMX arbitraria) — Veracode riporta 18% applicazioni Spring Boot scannate nel 2024 espongono Actuator senza autenticazione.
- Deserializzazione Java nativa: ObjectInputStream, XStream, Jackson polymorphic typing — chain di sfruttamento classica verso RCE via gadgets ysoserial.
- Banche italiane sotto DORA Art. 26 TLPT con backend Spring Boot — pentest documentato è prerequisito per Banca d'Italia compliance.
Cosa testiamo specificamente in un'applicazione Spring Boot
- Log4Shell detection attivo: test JNDI injection su tutti i campi utente (header HTTP, parametri URL, body JSON); detection versioni Log4j vulnerabili via JAR fingerprinting.
- Spring4Shell exploitability: POST con class.module.classLoader.* payload per triggerare RCE; detection versioni Spring Framework < 5.3.18 / < 5.2.20.
- Endpoint Actuator: enumerazione endpoint esposti (/actuator/*), verifica autenticazione, sfruttamento /heapdump per secret extraction, /env per configuration disclosure, /jolokia per esecuzione JMX arbitraria.
- Spring Expression Language (SpEL) injection: test in tutti i campi dove SpEL potrebbe essere valutato (Spring Boot Actuator, @Value expressions, Spring Data Repository @Query con SpEL).
- Deserializzazione Java: identificazione endpoint che accettano oggetti serializzati (Java nativa, XStream, Jackson @JsonTypeInfo); test con gadgets ysoserial per dimostrazione.
- Spring Security configuration: audit SecurityFilterChain per regole che permettono bypass autenticazione, CSRF status, JWT configuration, CORS misconfigurations.
- Mass assignment via Spring MVC binding: esposizione campi interni via @ModelAttribute, manipolazione oggetti DTO per escalation privilegi (cambio role/isAdmin/userId via binding non restrittivo).
- Spring Data SQL injection: uso @Query con concatenation parametri utente, NativeQuery senza parametrizzazione, JPQL injection via Specification dinamica.
- Esposizione file sensibili: application.properties / application.yml esposti via /actuator/configprops o /actuator/env, secrets in plaintext.
- JVM-level vulnerabilities: test versioni Java EOL (Java 8 < 8u391, Java 11 < 11.0.21, Java 17 < 17.0.9) con CVE JDK sfruttabili.
Esempio di finding
Endpoint Actuator /heapdump esposto senza autenticazione — estrazione secrets JVM
L'applicazione Spring Boot espone /actuator/heapdump senza autenticazione né restrizione IP. Un attaccante può scaricare un dump completo dell'heap JVM (tipicamente 500 MB a 4 GB) contenente l'intero stato memoria dell'applicazione. Il test ha permesso l'estrazione di: (1) password in plaintext presenti in memoria dopo autenticazione utenti; (2) API key Stripe e AWS conservate in variabili Spring Environment; (3) token JWT attivi di sessioni in corso; (4) connessioni DB pool con credentials. Lo sfruttamento è banale: curl -O https://target.example.com/actuator/heapdump, poi analisi con Eclipse MAT o jhat. La finestra di esposizione era 8 mesi (secondo log nginx archiviati).
Correzione: Azione immediata (priorità 1): disabilitare /actuator/heapdump in produzione via management.endpoint.heapdump.enabled=false. Azione completa: restringere tutti gli endpoint Actuator via Spring Security con autenticazione Basic o OAuth2; limitare esposizione a porta management separata (management.server.port=8081) accessibile solo da rete interna; esporre solo endpoint strettamente necessari (tipicamente /health con management.endpoints.web.exposure.include=health); audit di tutti gli altri endpoint (/env, /configprops, /beans, /mappings, /metrics) che possono leakare informazioni sensibili. Rotazione immediata di tutti i secrets/token potenzialmente compromessi durante il periodo di esposizione.
Riferimento: CVE-2023-20873 (Spring Boot Actuator) · CWE-200 · OWASP A05:2021 · Spring Boot Security Guide 3.x · Veracode State of Software Security 2024
Pentest Spring Boot: opzioni a confronto
| — | Scan gratuito | Matproof Sentinel | Consulenza tradizionale |
|---|---|---|---|
| Motore di scansione automatizzato | ✓ (anteprima 3 min) | ✓ Scansione completa | ✗ Solo manuale |
| Copertura OWASP Top 10 | Parziale | ✓ Completa | ✓ Completa |
| Prova di exploit | ✗ | ✓ Per finding | ✓ Per finding |
| Mapping normativo (DORA/NIS2/ISO 27001) | ✗ | ✓ Automatizzato | ✓ Manuale |
| Report PDF pronto per l'audit | ✗ | ✓ Immediato | ✓ Consegna 2–4 settimane |
| Scansioni continue / ricorrenti | ✗ | ✓ Per deploy | ✗ Impegno annuale |
| Tempo al primo risultato | ~3 min | ~30 min scansione completa | 2–4 settimane |
| Prezzo | €0 | Da €149 | €8.000–€25.000 |
| Revisione codice sorgente (SAST) | ✗ | ✓ Piano Growth | ✓ In scope |
| Test API (REST/GraphQL) | ✗ | ✓ Automatizzato | ✓ Manuale |
Pacchetti pentest Spring Boot
- 1 scansione pentest completa
- Risultati prioritizzati da AI con CVSS 3.1
- Proof-of-exploit per ogni finding
- Report PDF (pronto per l'audit)
- Mapping normativo (DORA, NIS2, ISO 27001)
- Scansioni illimitate (fino a 3 domini)
- Monitoraggio continuo
- Integrazione CI/CD (GitHub, GitLab)
- Tutti i mapping normativi
- Supporto prioritario
- Scansioni + domini illimitati
- Test autenticati / White-Box
- Test API e infrastruttura cloud
- Account manager dedicato
- SLA risposta 24h
Domande frequenti sul pentest Spring Boot
Come sappiamo se siamo ancora vulnerabili a Log4Shell tre anni dopo la divulgazione?
Testiamo attivamente con payload JNDI in tutti i campi suscettibili di essere loggati. Identifichiamo anche via JAR fingerprinting le versioni Log4j nel classpath, comprese dipendenze transitive. Secondo Cisco Talos, 31% server Java nel 2024 rimangono vulnerabili — long tail dovuto ad applicazioni legacy con dipendenze Java 8 fisse, ambienti air-gapped, e server Tomcat/WebLogic embedded con Log4j 1.x EOL.
Differenza tra scan automatico Spring e pentest manuale?
Scan automatico (Matproof Sentinel Single Run, 149 €) rileva CVE note (Log4Shell, Spring4Shell, CVE-2023-20861), endpoint Actuator esposti, Spring Security misconfigurations evidenti, OWASP Top 10. Pentest manuale (Growth plan) aggiunge caccia ai gadgets di deserializzazione custom, analisi approfondita SecurityFilterChain complesse, SpEL injection in contesti non triviali. Per banche DORA Art. 24 o BAIT, pentest manuale rimane raccomandato.
Testate endpoint Actuator con autenticazione (basic auth, OAuth2)?
Sì, nei piani Starter e Growth testiamo endpoint Actuator con credentials di test forniti. Verifichiamo rotazione credentials, solidità secrets, esposizione endpoint sensibili anche dietro autenticazione (un attaccante autenticato potrebbe ancora exfiltrare heapdump), escalation privilegi via /actuator/loggers o /actuator/restart.
La nostra applicazione usa WebFlux invece di Spring MVC. I test si applicano?
Sì. Spring WebFlux ha le proprie vulnerabilità: misconfigurations WebFilter (equivalent reactive di Filters MVC), backpressure exploitation per DoS, configurazioni CORS diverse tra WebFlux e MVC, e SecurityWebFilterChain (reactive). Adattiamo i test al vostro stack reactive.
Quali altri framework Java testate?
Spring Boot (3.x, 2.x), Quarkus, Micronaut, Jakarta EE (ex Java EE) su Wildfly/Payara/OpenLiberty, Helidon, Vert.x, Play Framework, Dropwizard. Le classi di vulnerabilità sono largamente comuni con specifiche per framework.
Il report è accettato per audit DORA / BaFin BAIT / Banca d'Italia?
Sì. Mapping esplicito DORA Art. 24/25, Banca d'Italia Circolare 285/2013 (Disposizioni rischio operativo), BaFin BAIT (per banche italiane con operazioni in Germania). Per banche DORA Art. 26 TLPT, Matproof Sentinel non sostituisce un test red-team accreditato BCE ma può complementarlo per copertura continua tra test triennali.
Quanto tempo richiede un pentest Spring Boot completo?
90 minuti per applicazione Spring Boot tipica con 50-100 endpoint. Per microservizi (10+ servizi Spring): 3-4 ore parallel. Report audit-ready entro 24 ore.
Argomenti correlati
Approfondisci — articoli correlati dal blog
Proteggi la tua applicazione Spring Boot ora
Primo scan in 3 minuti, pentest Spring Boot completo in 90 minuti incluso Log4Shell, Spring4Shell, audit Actuator. Report audit-ready DORA / NIS2 / ISO 27001 da 149 €.
Avvia scan gratuito