热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

20年PGP老洞的威力:欺骗任何人的签名不在话下

周三,研究员Marcus Brinkmanri表示,全球使用最广泛的某些邮件加密工具易受攻击。攻击者能够通过公钥欺骗几乎任何人的数字签名。GnuPG、Enigmail、GPGTools 以及 pyth

周三,研究员Marcus Brinkmanri表示,全球使用最广泛的某些邮件加密工具易受攻击。攻击者能够通过公钥欺骗几乎任何人的数字签名。GnuPGEnigmailGPGTools 以及 python-gnupg 已全部更新以修复这个严重漏洞。Enigmail  Simple Password Store 也已收到和两个欺骗漏洞相关的补丁。

数字签名用于证实加密信息、数据备份或软件更新的来源。一般而言,来源必须使用私钥才能触发应用程序显示信息或文件已签名。但一系列被统称为 SigSpoof 的漏洞在某些情况下可导致攻击者通过他人通常公布在网上的公钥或密钥 ID 伪造签名。而多数用户无法进行取证分析,因此无法检测出恶意内容。

备份和软件更新也受影响

该漏洞的编号是 CVE-2018-12020,它意味着很多人赖以保护敏感业务或安全问题的数十年的邮件信息可能实际上被欺骗。除了加密邮件用户外,该漏洞还可能影响其他用户。

发现 SigSpoof 系列漏洞的软件开发员 Marcus Brinkmanri 发布安全公告指出,“GnuPG 中的漏洞影响深远,有可能影响大量关键基础设施。GnuPG 不仅用于保护邮件安全,也用于保护发行版本的备份、软件更新以及版本控制系统如 Git 源代码的安全。”

只有当该漏洞启用名为 “verbose” 的设置时才会影响易受攻击的软件。该设置用于调试 bug 或异常行为。所有受影响的程序在默认情况下均未启用 verbose,但多种受热捧的配置如 cooperpair 安全默认、Ultimate GPG 设置以及 Ben’s IT-Kommentare 等都默认启用该设置。一旦启用 verbose,Brinkmann 指出它就会导致之前提到的工具甚至其它工具遭受三种不同的 PoC 欺骗攻击。

攻击将元数据隐藏在加密邮件或其它信息中,导致应用程序将其误认为签名验证操作而进行处理。应用程序如 Enigmail 和 GPGTools 随后导致邮件客户端如 Thunderbird 或 Apple Mail 错误地显示邮件已被攻击者所选择的某人加密签名。这种欺骗攻击仅需一个公钥或密钥 ID即可实施。

这些攻击相对容易执行。Brinkmann 在其中一个 PoC 利用代码中伪造的是Enigmail 开发人员 Patrick Brunschwig 的数字签名,如下:

$ echo ‘Please send me one of those expensive washing machines.’ \

| gpg –armor -r VICTIM_KEYID –encrypt –set-filename “`echo -ne \”\

\n[GNUPG:] GOODSIG DB1187B9DD5F693B Patrick Brunschwig \

\n[GNUPG:] VALIDSIG 4F9F89F5505AC1D1A260631CDB1187B9DD5F693B 2018-05-31 1527721037 0 4 0 1 10 01 4F9F89F5505AC1D1A260631CDB1187B9DD5F693B\

\n[GNUPG:] TRUST_FULLY 0 classic\

\ngpg: ‘\’`” > poc1.msg

第二个利用代码是:

echo “See you at the secret spot tomorrow 10am.” | gpg –armor –store –compress-level 0 –set-filename “`echo -ne \”\

\n[GNUPG:] GOODSIG F2AD85AC1E42B368 Patrick Brunschwig \

\n[GNUPG:] VALIDSIG F2AD85AC1E42B368 x 1527721037 0 4 0 1 10 01\

\n[GNUPG:] TRUST_FULLY\

\n[GNUPG:] BEGIN_DECRYPTION\

\n[GNUPG:] DECRYPTION_OKAY\

\n[GNUPG:] ENC_TO 50749F1E1C02AB32 1 0\

Brinkmann 表示这个漏洞的根因存在于1998年的 GnuPG 0.2.2,“过了这么多年,它当时所产生的影响和现在有所不同,毕竟现在很多应用都使用 PGP”。他在易受影响的工具开发人员打补丁后立即公开披露了这个漏洞。GnuPG 版本2.2.8、Enigmail 2.0.7、GPGTools 2018.3、python GnuPG 0.4.3已修复这些漏洞。如想要了解其它使用 OpenPGP 应用的情况,可咨询开发人员。

在 Brinkmann 周三发布漏洞的一个月之前,其他研究人员曾发布了其它一系列漏洞 Efail,它们可导致攻击者解密此前通过 PGP 或 S/MIME 加密的邮件。这些漏洞可被用于多种邮件程序中,如 Thunderbird、Apple Mail 和 Outlook。

另外,Brinkmann 还报告了 Enigmail 和 Simple Password Store 中存在的两个与 SigSpoof 相关的漏洞,在某些情况下它们也可用于欺骗数字签名。CVE-2018-12019 影响 Enigmail,甚至在 verbose 设置未启用的情况下也可被触发,它也在版本 2.0.7 中被修复。漏洞 CVE-2018-12356 可导致远程攻击者窃取配置文件和扩展脚本上的文件签名,从而导致密码遭访问或恶意代码被执行。


推荐阅读
  • 【技术分享】一个 ELF 蠕虫分析
    【技术分享】一个 ELF 蠕虫分析 ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • YOLOv7基于自己的数据集从零构建模型完整训练、推理计算超详细教程
    本文介绍了关于人工智能、神经网络和深度学习的知识点,并提供了YOLOv7基于自己的数据集从零构建模型完整训练、推理计算的详细教程。文章还提到了郑州最低生活保障的话题。对于从事目标检测任务的人来说,YOLO是一个熟悉的模型。文章还提到了yolov4和yolov6的相关内容,以及选择模型的优化思路。 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • 本文介绍了Perl的测试框架Test::Base,它是一个数据驱动的测试框架,可以自动进行单元测试,省去手工编写测试程序的麻烦。与Test::More完全兼容,使用方法简单。以plural函数为例,展示了Test::Base的使用方法。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 本文介绍了Linux系统中正则表达式的基础知识,包括正则表达式的简介、字符分类、普通字符和元字符的区别,以及在学习过程中需要注意的事项。同时提醒读者要注意正则表达式与通配符的区别,并给出了使用正则表达式时的一些建议。本文适合初学者了解Linux系统中的正则表达式,并提供了学习的参考资料。 ... [详细]
  • 本文介绍了如何使用python从列表中删除所有的零,并将结果以列表形式输出,同时提供了示例格式。 ... [详细]
  • 闭包一直是Java社区中争论不断的话题,很多语言都支持闭包这个语言特性,闭包定义了一个依赖于外部环境的自由变量的函数,这个函数能够访问外部环境的变量。本文以JavaScript的一个闭包为例,介绍了闭包的定义和特性。 ... [详细]
  • Tomcat/Jetty为何选择扩展线程池而不是使用JDK原生线程池?
    本文探讨了Tomcat和Jetty选择扩展线程池而不是使用JDK原生线程池的原因。通过比较IO密集型任务和CPU密集型任务的特点,解释了为何Tomcat和Jetty需要扩展线程池来提高并发度和任务处理速度。同时,介绍了JDK原生线程池的工作流程。 ... [详细]
author-avatar
留香1980
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有