SpringShell, vulnerabilità confermata

1

Spring4Shell Vulnerability

Da circa 48 ore si prospettava una possibile vulnerabilità sul framework Spring, poi confermata da Praetorian e ritrattata anche in altri popolari blog. La vulnerabilità in questione è relativa a spring-core, componente largamente usato nelle applicazioni Java >9 e la causa, come in molti bug simili, risiede nella deserializzazione.

Alla data del presente articolo, è stata rilasciata una patch nelle versioni di Spring Framework 5.3.18 e 5.2.20, tuttavia potrebbero esserci altri modi di exploitare tale vulnerabilità che non sono stati ancora riportati e secondo i security researchers di Praetorian è possibile comunque mitigare manualmente creando un componente ControllerAdvice e aggiungere a una blacklist i pattern pericolosi, con lo snippet che quotiamo:

import org.springframework.core.Ordered;
import org.springframework.core.annotation.Order;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.InitBinder;

@ControllerAdvice

@Order(10000)

public class BinderControllerAdvice {
    @InitBinder
    public void setAllowedFields(WebDataBinder dataBinder) {
         String[] denylist = new String[]{"class.*", "Class.*", "*.class.*", "*.Class.*"};
         dataBinder.setDisallowedFields(denylist);
    }
}

La vulnerabilità, conosciuta ora come CVE-2022-22963, sembra avere severità media e non sembra exploitabile per le applicazioni deployate in configurazione di default, ovvero come Spring Boot executable jar.

Seguiremo da vicino l’evoluzione di questo nuovo ed entusiasmante bug e no, non è un pesce d’aprile 😉

Update: Le CVE in questione sono due: CVE-2022-22965 per Spring Framework, CVE-2022-22963 per Spring Cloud. Entrambe sono ora indicate come di severità critica (ringraziamo Andrea Delfino per la segnalazione e rettifica)

Appassionato di Linux e della cultura open-source da vent’anni, continuo a fare del mio meglio per diffondere tale filosofia e soprattutto condividere la conoscenza.

C’è sempre qualcuno da qualche parte nel mondo che sta avendo un problema che tu hai già risolto e, condividendo la soluzione, puoi fare la differenza.

Se quel qualcuno sei tu, chiedi pure alla community. La trovi ovunque, ad esempio su reddit.com/r/italyinformatica, reddit.com/r/fedora, reddit.com/r/debian, reddit.com/r/ubuntu, reddit.com/r/archlinux, reddit.com/r/linux, sui forum specifici delle distro oppure sulle loro wiki.

Perchè nessun problema andrebbe risolto più di una volta.

[https://it.linkedin.com/in/john-toscano]