
Exploit de preuve de concept pour CVE-2019-6690, démontrant un contournement de validation d'entrée dans le chiffrement symétrique python-gnupg via injection de saut de ligne dans la phrase de passe.
Nous avons découvert un moyen d'injecter des données via la propriété de phrase de passe des méthodes gnupg.GPG.encrypt() et gnupg.GPG.decrypt() lorsque le chiffrement symétrique est utilisé.
La phrase de passe fournie n'est pas validée pour les sauts de ligne, et la bibliothèque transmet --passphrase-fd=0 à l'exécutable gpg, qui attend la phrase de passe sur la première ligne de stdin, et le texte chiffré à déchiffrer ou le texte clair à chiffrer sur les lignes suivantes.
En fournissant une phrase de passe contenant un saut de ligne, un attaquant peut contrôler/modifier le texte chiffré/clair en cours de déchiffrement/chiffrement.
python-gnupg 0.4.3, et peut-être des versions antérieures
Les utilisateurs doivent mettre à niveau vers 0.4.4
Application hypothétique utilisant un déchiffrement réussi des données pour authentifier un utilisateur, et un moyen de l'exploiter est disponible ici :
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
Vulnérabilité découverte par Alexander Kjäll et Stig Palmquist.
Remerciements à remmer.