GNU GNU Privacy Guard 1.4.6
GnuPG是基于OpenPGP标准的PGP加密、解密、签名工具。
GnuPG在处理畸形OpenPGP消息时存在漏洞,远程攻击者可能利用此漏洞在用户机器上执行任意指令。
GnuPG使用被称为过滤器的数据结构处理OpenPGP消息,这些过滤器的使用方法类似于shell中的命名管道。对于这些过滤器之间的通讯,需要使用上下文(context)结构。通常上下文结构是分配在栈上的,并传送给过滤器函数。在大多数情况下解除分配上下文结构之前就会关闭传送给这些过滤器的OpenPGP数据流,但在解密加密报文时有时可能会出现意外,过滤器可能会使用填充了攻击者可控数据的无效上下文结构,过滤器上下文中包含有低层解密访问解密算法所使用的其他上下文。可以通过函数指针来实现这种调用。如果攻击者创建了特制OpenPGP消息的话,就可以控制这个函数指针,调用进程中的任意函数。