
我々は、対称暗号化を使用する際に、gnupg.GPG.encrypt() および gnupg.GPG.decrypt() メソッドのパスフレーズプロパティを介してデータを注入する方法を発見しました。
提供されたパスフレーズは改行に対して検証されておらず、ライブラリは --passphrase-fd=0 を gpg 実行可能ファイルに渡します。gpg は標準入力の最初の行にパスフレーズを、その後の行に復号する暗号文または暗号化する平文を期待します。
攻撃者は改行を含むパスフレーズを提供することで、復号または暗号化される暗号文/平文を制御・改変できます。
python-gnupg 0.4.3、およびそれ以前のバージョン
ユーザーは 0.4.4 にアップグレードする必要があります。
データの復号成功を利用してユーザーを認証する仮想的なアプリケーションと、その悪用方法はこちらから入手できます:
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
脆弱性は Alexander Kjäll と Stig Palmquist によって発見されました。
remmer に感謝します。