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, non risulta ancora una patch. Secondo i security researchers di Praetorian è possibile tuttavia mitigare 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.
Seguiremo da vicino l’evoluzione di questo nuovo ed entusiasmante bug e no, non è un pesce d’aprile 😉
Tags: Bug, cybersecurity, Java, Patch, rce, spring, springshell, vulnerability