GnuPG是基于OpenPGP标准的PGP加密、解密、签名工具。
使用GnuPG的脚本和应用程序向终端用户显示签名验证信息的方式存在漏洞,允许攻击者向签名消息中添加任意内容,消息的接收者无法区分消息中的伪造和正确签名部分。
漏洞起因是有效的OpenPGP消息包含有多个部分,其中每个部分都可以认为是一段消息,但有些消息可能没有被签名和/或加密。有漏洞的第三方应用程序没有使用适当的GnuPG API判断消息边界,没有在给终端用户的输出中明确的区分消息。在某些情况下,即使从命令行直接使用GnuPG的高级用户也可能被这种攻击欺骗。
请注意该漏洞不是加密问题,而是向用户显示信息方式和第三方应用程序与GnuPG之间相互交互方式的问题。
GNU Privacy Guard <= 1.4.6
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:
<a href=“ftp://ftp.gnupg.org/gcrypt/gnupg/gnupg-1.4.7.tar.bz2” target=“_blank”>ftp://ftp.gnupg.org/gcrypt/gnupg/gnupg-1.4.7.tar.bz2</a>
#!/usr/bin/python
import os, gpg, sys, base64
clear_sign = open(sys.argv[1], "rb").read().splitlines()
start = clear_sign.index("-----BEGIN PGP