GnuPG漏洞允许欺骗消息签名

  • GnuPG漏洞允许欺骗消息签名已关闭评论
  • A+
所属分类:网络安全新闻

GnuPG最近解决了输入消毒漏洞,远程攻击者可能会欺骗任意签名。

GnuPG是GNU项目的一部分,也被称为GPG,是OpenPGP标准的完整和免费实现,支持数据和通信的加密和签名。混合加密软件程序具有用于各种公共密钥目录的多用途密钥管理系统和访问模块。

GnuPG漏洞允许欺骗消息签名

本月早些时候发布的GnuPG 2.2.8版解决了影响GnuPG,Enigmail,GPGTools和python-gnupg的漏洞的CVE-2018-12020,Marcus Brinkmann发现了该漏洞。布林克曼称这个缺陷为SigSpoof。

“Enigmail 2.0.6.1,GPGTools 2018.2和python-gnupg 0.4.2中的签名验证例程使用'--status-fd 2'选项解析GnuPG 2.2.6的输出,该选项允许远程攻击者通过任意签名来欺骗任意签名如果用户在其gpg.conf文件中设置了详细选项,则在OpenPGP文字数据包中嵌入'filename'参数,“他指出。

GnuPG维护人员Werner Koch 解释说,状态消息被程序解析,以从GPG获得关于签名有效性的信息。状态消息使用选项“--status-fd N”创建,其中N是文件描述符。如果N为2,则状态消息和常规诊断消息共享stderr输出通道。

问题存在于OpenPGP协议中,允许将原始输入文件的文件名包含在签名或加密的消息中。GnuPG工具可以在解密和验证过程中显示带有该文件名的通知,但不会清理文件名,这意味着攻击者可能在其中包含换行符或其他控制字符。

因此,可以注入终端控制序列,并且可以伪造所谓的状态消息。此外,签名电子邮件的验证状态也可能是伪造的。

“攻击者可以将任意(伪)GnuPG状态消息注入应用程序解析器,以欺骗签名验证和消息解密结果。攻击者可以控制密钥ID,算法说明符,创建时间和用户ID,并且不需要任何涉及的私钥或公钥,“Brinkmann解释说。

他还指出,状态消息需要适合255个字符,这是OpenPGP中“加密文件的名称”的限制。

Brinkmann还发布了一个概念证明,以显示Enigmail和GPGTools中的签名是如何被欺骗的,另一个是显示签名和加密在Enigmail中是如何被欺骗的。他表示,在命令行上也可以使用特征欺骗。

尽管默认情况下禁用了该功能,但详细信息包含在GnuPG的多个推荐配置中,并且是造成此漏洞的主要原因之一。

根据研究人员的说法,用户应该确保他们在gpg.conf中没有详细信息,并且应该避免在命令行中使用gpg --verbose。建议开发人员对gpg的所有调用添加--no-verbose。

“GnuPG的漏洞变得很深,并有可能影响我们核心基础设施的很大一部分。GnuPG不仅用于电子邮件安全,还用于保护备份,发行版中的软件更新以及版本控制系统(如Git)中的源代码,“Brinkmann声称。

CE安全网