OpenPGP.js aveva un bug così elegante da far passare messaggi fake per sicuri
Gli sviluppatori di OpenPGP.js hanno rilasciato una correzione per una vulnerabilità critica che potrebbe essere sfruttata per lo spoofing. Il bug consentiva la falsificazione sia di messaggi firmati sia di messaggi crittografati.
OpenPGP.js è un’implementazione JavaScript della libreria open source di crittografia delle e-mail OpenPGP che può essere utilizzata su qualsiasi dispositivo. Gli sviluppatori del progetto spiegano che l’idea era di implementare tutte le funzionalità OpenPGP necessarie in una libreria JavaScript che potesse essere riutilizzata in altri progetti per estensioni del browser o applicazioni server.
OpenPGP.js è utilizzato in progetti quali FlowCrypt, Mymail-Crypt, UDC, Encrypt.to, PGP Anywhere e Passbolt.
Di recente, gli esperti di Codean Labs hanno scoperto che OpenPGP.js ha una vulnerabilità critica. Questo problema consente a un aggressore di falsificare la verifica della firma tramite un messaggio contraffatto trasmesso a openpgp.verify o openpgp.decrypt. Di conseguenza, restituiscono un “risultato di verifica della firma positivo, anche se in realtà i dati restituiti non erano firmati”.
“Per falsificare un messaggio, un aggressore avrebbe bisogno di una firma valida (incorporata o separata) e dei dati firmati in chiaro. Dopodiché, è possibile generare un messaggio con firma in linea o un messaggio firmato e crittografato contenente qualsiasi dato. E il messaggio apparirà come firmato legittimamente nelle versioni vulnerabili di OpenPGP.js“.Spiegano i ricercatori. “In altre parole, un messaggio con una firma incorporata può essere modificato per restituire qualsiasi altro dato (pur indicando che la firma è valida). Lo stesso è possibile per i messaggi firmati e crittografati se un aggressore riesce a ottenere una firma valida e crittografare un nuovo messaggio (con contenuto arbitrario) insieme a quella firma.”
Alla vulnerabilità è stato assegnato l’identificatore CVE-2025-47934 (8,7 punti sulla scala CVSS) e riguarda le versioni 5 e 6 di OpenPGP.js. Le versioni 4.x non sono interessate. Gli sviluppatori hanno risolto il bug con il rilascio delle versioni 5.11.3 e 6.1.1.
Daniel Huigens, crittografo capo presso Proton e responsabile della manutenzione di OpenPGP.js, afferma che gli utenti dovrebbero installare gli aggiornamenti il prima possibile. Prima di fare ciò, si consiglia di studiare attentamente tutti i messaggi presumibilmente firmati e di controllare ogni firma come se fosse unica.
Per i messaggi firmati e crittografati, Huygens suggerisce di verificarne l’autenticità in due passaggi. Per prima cosa chiamare openpgp.decrypt senza verificationKeys, quindi passare le firme restituite e i dati decrittati a openpgp.verify per la verifica esplicita.
L'articolo OpenPGP.js aveva un bug così elegante da far passare messaggi fake per sicuri proviene da il blog della sicurezza informatica.