
Descubrimos una forma de inyectar datos a través de la propiedad passphrase de los métodos gnupg.GPG.encrypt() y gnupg.GPG.decrypt() cuando se utiliza cifrado simétrico.
La passphrase suministrada no se valida para saltos de línea, y la biblioteca pasa --passphrase-fd=0 al ejecutable gpg, que espera la passphrase en la primera línea de stdin, y el texto cifrado a descifrar o el texto plano a cifrar en las líneas subsiguientes.
Al proporcionar una passphrase que contenga un salto de línea, un atacante puede controlar/modificar el texto cifrado/texto plano que se descifra/cifra.
python-gnupg 0.4.3, y posiblemente versiones anteriores
Los usuarios deberían actualizar a 0.4.4
Una aplicación hipotética que utiliza el descifrado exitoso de datos para autenticar a un usuario, y una forma de explotarla, está disponible aquí:
https://github.com/hackeriet/CVE-2019-6690-python-gnupg-vulnerability
Debian: apt install libmojolicious-perl python3-gnupg python3-flask
Nix: nix-shell
./server.py
./exploit.pl
Vulnerabilidad descubierta por Alexander Kjäll y Stig Palmquist.
Gracias a remmer.