Oracle ha rilasciato il tradizionale bollettino di sicurezza trimestrale che elenca tutte le patch per i suoi prodotti. Sette aggiornamenti riguardano Java, uno dei quali risolve una grave vulnerabilità che può essere sfruttata per aggirare le misure di autenticazione, falsificando le firme crittografiche. Il bug è stato scoperto dal ricercatore Neil Madden di ForgeRock.
Vulnerabilità delle firme ECDSA in Java
La vulnerabilità, indicata con CVE-2022-21449, permette di falsificare certificati e firme TLS, messaggi di autenticazione e credenziali di autorizzazione, aggirando il meccanismo ECDSA (Elliptic Curve Digital Signature Algorithm) che verifica l’autenticità e l’integrità dei contenuti. A causa dell’errata implementazione in Java è sufficiente generare una firma composta da zeri per eludere il controllo.
ECDSA viene ampiamente utilizzato per firmare diversi documenti digitali. Ad esempio, lo standard WebAuthn per l’autenticazione in due fattori contente ai produttori di dispositivi di scegliere diversi algoritmi di firma, ma quasi tutti supportano solo ECDSA. La verifica viene effettuata mediante un’equazione con due valori r e s. Se i due lati dell’equazione sono uguali, la firma è valida.
L’algoritmo prevede che r e s siano entrambi maggiori o uguali a 1. L’implementazione di Java non verifica se r e s sono uguali a 0, quindi viene considerata valida una firma di zeri. Il bug è stato introdotto con la riscrittura del codice EC (Elliptic Curve) in Java 15.
Oracle aveva specificato che la vulnerabilità era presente in Java 15, 16, 17 e 18, ma successivamente il bollettino di sicurezza è stata corretto per indicare solo Java 17 e 18 (Java 15 e 16 non sono più supportati). Secondo Sophos si dovrebbero installare anche le ultime versioni di Java 7, 8 e 11.