Vulnerabilità in GnuPG che consentono di bypassare la verifica e di eseguire il proprio codice.

Durante la conferenza 39C3 (Chaos Communication Congress) che si svolge in Germania, sono stati rivelati dettagli su 12 vulnerabilità precedentemente sconosciute e ancora non corrette (0-day) nel tool GnuPG (GNU Privacy Guard), che fornisce strumenti compatibili con gli standard OpenPGP e S/MIME per la crittografia dei dati, la gestione delle firme elettroniche, la gestione delle chiavi e l'accesso ai repository pubblici delle chiavi. Le vulnerabilità più pericolose consentono di bypassare la verifica della firma digitale e di eseguire codice durante l'elaborazione di dati crittografati in rappresentazione ASCII (ASCII Armor). I prototipi degli exploit e le patch verranno resi disponibili in seguito. Gli identificatori CVE non sono ancora stati assegnati.

Le vulnerabilità sono causate da errori nel codice per l'elaborazione dei dati e l'analisi dei formati, e non sono legate a falle nei crittografici. Ad esempio, un errore nel parser porta a un fallimento nella determinazione dei dati effettivamente firmati e crea condizioni in cui i dati verificabili potrebbero non coincidere con i dati firmati, permettendo a un attaccante di sostituire il testo in chiaro senza accesso alla chiave privata.

Problemi riscontrati:

  • Un errore nel codice del parser dei dati crittografati, distribuiti nel formato ASCII-Armor (file di testo con il blocco "BEGIN/END PGP ARMORED FILE"), porta alla scrittura in un'area di memoria al di fuori dei limiti del buffer. Il problema può portare all'esecuzione di codice durante l'elaborazione in gpg di dati appositamente formattati. La vulnerabilità si manifesta nella funzione armor_filter() ed è causata dall'incremento doppio del contatore "n" nel ciclo "for": nonostante la specifica "n++" nel ciclo stesso, il contatore viene incrementato anche nel corpo del ciclo quando si scrivono dati nel buffer "buf[n++]". Di conseguenza, viene scritto un byte in più al di fuori del buffer, e la variabile con la dimensione "ret_len" viene impostata su un valore superiore a quello reale.
  • La possibilità di creare o sovrascrivere qualsiasi file, nei limiti dei diritti di accesso attuali, a causa di una gestione errata del contenuto del campo "filename" nel pacchetto di dati. La vulnerabilità può essere sfruttata per eseguire codice nel sistema quando il destinatario esegue i comandi "gpg --decrypt poc.enc" e "gpg poc.enc" per visualizzare il file poc.enc inviato dall'attaccante. È possibile ottenere l'esecuzione di codice, ad esempio, tramite la creazione di file ~/ .bash_completion o ~/ .ssh/ authorized_keys.
  • Possibilità di sostituire il testo in chiaro visualizzato all'utente quando si utilizza l'opzione «—decrypt» e la verifica utilizzando firme digitali fornite separatamente (Detached Signature, create con l'opzione «—detach-sig» e fornite in un file sig separato). Il problema è che quando il messaggio e il file sig vengono inviati separatamente, un attaccante che controlla il traffico intermedio (MITM) può modificare il file sig in modo tale che la verifica rimanga positiva, ma il contenuto visualizzato dal messaggio nel file sig utilizzando l'opzione «—decrypt» sarà diverso. echo Plaintext > plaintext gpg —detach-sig plaintext # modifica plaintext.sig da parte dell'attaccante con l'aggiunta di testo aggiuntivo gpg —verify plaintext.sig plaintext # verificato gpg —decrypt plaintext.sig # verificato, ma viene visualizzato un testo diverso
  • Possibilità di aggiungere dati arbitrari a un messaggio firmato mantenendo una verifica della firma di successo. Il problema si verifica a causa del taglio dei dati al limite di 20000 caratteri durante il calcolo dell'hash.
  • Verifica non corretta dei codici di crittografia autenticata (MDC - Modification Detection Codes), che consente di manipolare i pacchetti crittografati in modo tale che durante la decodifica il contenuto ottenuto venga elaborato come un altro tipo di pacchetto (ad esempio, interpretato come una chiave pubblica destinata alla pubblicazione).
  • Possibilità di sostituire dati aggiuntivi nelle firme CS (Cleartext Signature), create utilizzando il flag «—not-dash-escaped» o convertite da firme fornite separatamente (Detached Signature). Questa vulnerabilità può essere utilizzata per creare un falso senso di quali dati siano stati effettivamente firmati. Ad esempio, un utente può caricare da fonti affidabili una chiave corretta per verificare la firma digitale, ma un attaccante durante un attacco MITM può sostituire l'immagine ISO scaricata dall'utente e aggiungere un hash supplementare nella firma per l'immagine, in modo che la verifica dell'immagine sostituita abbia successo con la presenza di una chiave corretta nel sistema.
  • Inserimento di dati aggiuntivi nella rappresentazione ASCII di una CS-firma (Cleartext Signature) tramite l'inserimento di un carattere con codice zero. Questa vulnerabilità, ad esempio, consente di inserire testo arbitrario nell'intestazione Hash.
  • Interpretazione errata del formato OpenPGP, che consente che un messaggio "One-Pass Signed Message" in formato ASCII venga elaborato come un messaggio "Cleartext Signature" con una certa modifica dell'intestazione. La vulnerabilità consente di sostituire i dati firmati originali con contenuti dannosi, mantenendo l'apparenza di una verifica avvenuta con successo.
  • Mancanza di una chiara separazione nell’output delle informazioni relative al successo della verifica della firma digitale e al contenuto del messaggio, cosa che consente di generare messaggi falsi non firmati, i quali appaiono autentici quando si esegue il comando "gpg —decrypt".
  • Possibilità di creare messaggi OpenPGP che in gpg vengano elaborati in modo diverso rispetto ad altre implementazioni di OpenPGP. Il problema è causato da una peculiarità nella gestione di righe molto lunghe nei dati OpenPGP in formato ASCII.
  • Creazione di condizioni durante il processo di verifica della firma digitale che fanno retrocedere l'algoritmo di verifica dell'hash a un SHA1 non sicuro.
  • Possibilità di sostituire le proprie chiavi secondarie (subkey) senza la loro autorizzazione utilizzando il componente privato della chiave principale. L'attacco avviene attraverso l'aggiunta di un repository di chiavi fasullo utilizzando l'opzione "—keyring."

Inoltre, sono state identificate due vulnerabilità in minisign, un insieme semplificato di strumenti per la creazione e la verifica delle firme digitali. Entrambe le vulnerabilità (1, 2) consentono di utilizzare sequenze di controllo del terminale ("\e[1E") o caratteri speciali ("\r") nel campo dei commenti per modificare l'output del programma, ad esempio sostituendo le informazioni sul risultato della verifica.

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster