
우리는 대칭 암호화를 사용할 때 gnupg.GPG.encrypt() 및 gnupg.GPG.decrypt() 메서드의 passphrase 속성을 통해 데이터를 주입할 수 있는 방법을 발견했습니다.
제공된 패스프레이즈는 개행 문자에 대해 검증되지 않으며, 라이브러리는 gpg 실행 파일에 --passphrase-fd=0을 전달합니다. gpg 실행 파일은 stdin의 첫 번째 줄에서 패스프레이즈를, 이후 줄에서 복호화할 암호문 또는 암호화할 평문을 기대합니다.
개행 문자를 포함하는 패스프레이즈를 제공함으로써 공격자는 복호화/암호화되는 암호문/평문을 제어/변조할 수 있습니다.
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에게 감사드립니다.