
Proof-of-concept Exploit für CVE-2019-6690, der eine Umgehung der Eingabevalidierung in der symmetrischen Verschlüsselung von python-gnupg durch Newline-Injection im Passwort demonstriert.
Wir haben einen Weg gefunden, Daten über die Passphrase-Eigenschaft der Methoden gnupg.GPG.encrypt() und gnupg.GPG.decrypt() zu injizieren, wenn symmetrische Verschlüsselung verwendet wird.
Die übergebene Passphrase wird nicht auf Zeilenumbrüche überprüft, und die Bibliothek übergibt
--passphrase-fd=0 an die gpg-Ausführungsdatei, welche die Passphrase in der ersten Zeile von stdin erwartet,
und den zu entschlüsselnden Chiffretext oder den zu verschlüsselnden Klartext in den folgenden Zeilen.
Durch die Bereitstellung einer Passphrase, die einen Zeilenumbruch enthält, kann ein Angreifer den zu entschlüsselnden/verschlüsselnden Chiffretext/Klartext steuern/modifizieren.
python-gnupg 0.4.3 und möglicherweise frühere Versionen
Benutzer sollten auf 0.4.4 aktualisieren
Hypothetische Anwendung, die eine erfolgreiche Entschlüsselung von Daten zur Authentifizierung eines Benutzers nutzt, sowie eine Möglichkeit, diese auszunutzen, ist hier verfügbar:
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
Schwachstelle entdeckt von Alexander Kjäll und Stig Palmquist.
Dank an remmer.