Brutto incidente di percorso per Java, con la verifica dei certificati saltata dalla carta psichica

2 years ago 262

Java è uno dei linguaggi di programmazione più diffusi in circolazione. Se usate un webservice – e, fidatevi, lo usate – ci sono alte probabilità che sia basato o a sua volta usi qualche webservice fatto con Java.
Proprio per questo qualsiasi problema di sicurezza relativo a Java rischia di avere portate enormi. Se poi questo problema è nella verifica dei certificati SSL, allora è grave.

Pochi giorni fa Neil Madden, ricercatore sulla sicurezza per ForgeRock, ha pubblicato un post in cui tratta proprio uno di questi problemi.
La CVE relativa è già stata fatta: CVE-2022-21449. tanto che è anche il titolo del post. E le patch già disponibili e uscite, quindi si può già correre ai ripari.

Il problema riguarda il controllo della validità di un certificato, ovvero della sua firma: un errore del codice permette (in certe condizioni) di superare sempre questo controllo, risultando del tutto attendibili e affidabili. Robetta da niente, eh?
Neil Madden ha battezzto questo bug “Psychic Signatures”, firme psichiche, facendo riferimento alla carta psichica dal mondo di Doctor WHO, in cui il protagonista mostra una carta completamente bianca come documento che attesti la sua autorità e il malcapitato di turno ci legge qualcosa di valido: un ispettore di sanità ad un ristoratore, un poliziotto ad un cittadino o un agente dell’FBI ad un poliziotto americano.

Le condizioni non sono poi tanto speciali: l’uso di Elliptic Curve Digital Signature Algorithm (ECDSA), un algoritmo alternativo al più diffuso RSA ma che va diffondesi sempre più, in particolar modo perché la chiave pubblica ha una dimensione molto minore a parità di sicurezza.
Altro requisito: Java 15 o superiore. Qui c’è qualche piccola discrepanza tra quanto dice Oracle, che inserisce anche Java 7. 8 e 11, e quanto affermato da Red Hat, che invece li esclude – come fa anche Madden. Ma concordano nel punteggio assegnato: 7.5 su 10. Abbastanza alto da chiedere un certo grado di attenzione.

Nel suo post, il ricercatore sostiene anche che quel punteggio potrebbe essere sottostimato:

Internally, we at ForgeRock graded this a perfect 10.0 due to the wide range of impacts on different functionality in an access management context.

Internamente, noi di ForgeRock abbiamo assegnato a questo problema un 10 perfetto per via dell’ampio raggio di impatto su differenti funzionalità nel contesto della gestione degli accessi.

Non serve fare operazioni molto complicate per poter validare con successo la propria connessione. Anzi, bisogna non fare nulla: presentare un certificato in bianco, vuoto, che valga esattamente zero. E a Java andrà bene.
Se ricadete quindi in quelle condizioni (Java sopra la versione 15, e uso di firma ECDSA) il suggerimento è sempre lo stesso: aggiornate, aggiornate, aggiornate!

Ho coltivato la mia passione per l'informatica fin da bambino, coi primi programmi BASIC. In età adulta mi sono avvicinato a Linux ed alla programmazione C, per poi interessarmi di reti. Infine, il mio hobby è diventato anche il mio lavoro.
Per me il modo migliore di imparare è fare, e per questo devo utilizzare le tecnologie che ritengo interessanti; a questo scopo, il mondo opensource offre gli strumenti perfetti.

Tags: , , ,

Navigazione articoli

Read Entire Article