
Proof-of-concept exploit per CVE-2019-6690, che dimostra il bypass della validazione dell'input nella crittografia simmetrica di python-gnupg tramite l'iniezione di newline nella passphrase.
Abbiamo scoperto un modo per iniettare dati tramite la proprietà passphrase dei metodi gnupg.GPG.encrypt() e gnupg.GPG.decrypt() quando viene utilizzata la crittografia simmetrica.
La passphrase fornita non viene validata per i caratteri di nuova riga e la libreria passa --passphrase-fd=0 all'eseguibile gpg, che si aspetta la passphrase sulla prima riga di stdin e il testo cifrato da decrittografare o il testo in chiaro da crittografare sulle righe successive.
Fornendo una passphrase contenente un carattere di nuova riga, un attaccante può controllare/modificare il testo cifrato/testo in chiaro che viene decrittografato/crittografato.
python-gnupg 0.4.3 e forse versioni precedenti
Gli utenti dovrebbero aggiornare alla versione 0.4.4
Un'applicazione ipotetica che utilizza la decrittografia riuscita dei dati per autenticare un utente, e un modo per sfruttarla, sono disponibili qui:
Debian: apt install libmojolicious-perl python3-gnupg python3-flask
Nix: nix-shell
./server.py
./exploit.pl
Vulnerabilità scoperta da Alexander Kjäll e Stig Palmquist.
Grazie a remmer.