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

Durante la conferenza 39C3 (Chaos Communication Congress) che si sta svolgendo in Germania, sono stati rivelati dettagli su 12 vulnerabilità precedentemente sconosciute e rimaste non risolte (0-day) nel toolkit GnuPG (GNU Privacy Guard), che offre 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 di chiavi. Le vulnerabilità più critiche consentono di bypassare la verifica della firma digitale e di eseguire codice durante l'elaborazione dei dati crittografati in rappresentazione ASCII (ASCII Armor). Prototipi funzionanti di exploit e patch sono promettenti per una pubblicazione futura. Gli identificatori CVE non sono stati ancora assegnati.

Le vulnerabilità sono causate da errori nel codice per l'elaborazione dei dati e l'analisi dei formati e non sono collegate a falle nei crittografici. Ad esempio, un errore nel parser causa un fallimento nella determinazione dei dati effettivamente firmati e crea condizioni in cui i dati verificati possono non corrispondere ai dati firmati, consentendo all'attaccante di sostituire il testo in chiaro senza accesso alla chiave privata.

Problemi identificati:

  • Errore nel codice del parser dei dati crittografati, trasmessi nel formato ASCII-Armor (file di testo con i blocchi «BEGIN/END PGP ARMORED FILE»), che porta a scrivere nella memoria al di fuori dei confini del buffer. Il problema può causare l'esecuzione di codice durante l'elaborazione di dati appositamente formattati in gpg. La vulnerabilità si manifesta nella funzione armor_filter() ed è causata dall'incremento doppio del contatore «n» nel ciclo «for» — nonostante l'indicazione «n++» all'interno del ciclo, il contatore aumenta anche nel corpo del ciclo durante la scrittura dei dati nel buffer «buf[n++]». Di conseguenza, viene scritto un byte in eccesso al di fuori del buffer e la variabile con la dimensione «ret_len» viene impostata su un valore che supera il reale.
  • Possibilità di creare o sovrascrivere qualsiasi file, nei limiti dei diritti di accesso correnti, 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. L'esecuzione del codice può essere ottenuta, ad esempio, creando file ~/.bash_completion o ~/.ssh/authorized_keys.
  • Possibilità di sostituire il testo aperto mostrato all'utente quando si specifica l'opzione «—decrypt» e di verificare utilizzando firme digitali fornite separatamente (Detached Signature, create con l'opzione «—detach-sig» e fornite in un file sig separato). Il problema principale è che, inviando separatamente il messaggio e il file sig, un attaccante che controlla il traffico intermedio (MITM) può apportare modifiche al file sig, dopo di che la verifica rimarrà positiva, ma visualizzando il messaggio dal file sig tramite l'opzione «—decrypt» verrà mostrato un contenuto 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 mostrato un testo diverso
  • Possibilità di aggiungere dati arbitrari a un messaggio firmato mantenendo il successo della verifica della firma. Il problema si verifica a causa del taglio dei dati al limite di 20000 caratteri durante il calcolo dell'hash.
  • Controllo errato dei codici di crittografia autenticata (MDC — Codici di Rilevamento delle Modifiche), che consente di manipolare pacchetti crittografati in modo che, durante la decifratura, il contenuto ottenuto venga elaborato come un altro tipo di pacchetto (ad esempio, percepito come una chiave pubblica destinata alla pubblicazione).
  • Possibilità di iniettare dati aggiuntivi nelle firme CS (Cleartext Signature), create utilizzando il flag «—not-dash-escaped» o convertite da firme distaccate (Detached Signature). La vulnerabilità può essere sfruttata per creare un falso senso di sicurezza per l'utente riguardo ai dati effettivamente firmati. Ad esempio, l'utente può caricare una chiave corretta da fonti affidabili per verificare la firma digitale, ma un attaccante, durante un attacco MITM, può sostituire l'immagine ISO scaricata dall'utente e aggiungere un hash aggiuntivo alla firma dell'immagine, in modo tale che la verifica dell'immagine alterata vada a buon fine se è presente nella sistema una chiave di verifica corretta.
  • Sostituzione di dati aggiuntivi nella rappresentazione ASCII della CS Signature (Cleartext Signature) tramite l'inserimento di un carattere con codice zero. Questa vulnerabilità consente, ad esempio, di inserire testo arbitrario nell'intestazione Hash.
  • Interpretazione scorretta del formato OpenPGP, che consente a un messaggio "One-Pass Signed Message" in formato ASCII codificato di essere trattato come un messaggio "Cleartext Signature" mediante una certa modifica dell'intestazione. Questa vulnerabilità permette di sostituire i dati firmati originali con contenuti malevoli, mantenendo l'illusione di una verifica riuscita.
  • Mancanza di una chiara separazione nell'output delle informazioni sull'esito della verifica della firma digitale e il contenuto del messaggio, permettendo la creazione di messaggi non firmati falsi, che appaiono autentici quando si esegue "gpg --decrypt".
  • Possibilità di creare messaggi OpenPGP che verranno elaborati da gpg in modo diverso rispetto ad altre implementazioni di OpenPGP. Il problema è causato da una peculiarità dell'elaborazione di stringhe molto lunghe nei dati OpenPGP in formato ASCII.
  • Creazione di condizioni durante il processo di verifica della firma digitale per ripristinare l'algoritmo di verifica dell'hash a SHA1, non sicuro.
  • Possibilità di sostituire le proprie chiavi secondarie (subkey) senza autorizzazione, utilizzando un componente privato della chiave principale. L'attacco viene eseguito attraverso l'aggiunta di un falso archivio chiavi utilizzando l'opzione "—keyring".

Inoltre, sono state rilevate due vulnerabilità in minisign, un toolkit semplificato per la creazione e verifica delle firme digitali. Entrambe le vulnerabilità (1, 2) permettono di utilizzare sequenze di controllo del terminale ("\e[1E") o caratteri speciali ("\r") nel campo commento per modificare l'output del programma, ad esempio per sostituire le informazioni sui risultati di 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