事后分析:对加密密钥服务器 SKS Keyserver 网络的最新攻击已知的情况

黑客使用了 OpenPGP 协议的一项已为人所知十多年的功能。

我们会告诉您重点是什么以及为什么他们无法关闭它。

事后分析:对加密密钥服务器 SKS Keyserver 网络的最新攻击已知的情况
/不飞溅/ 朱春丽

网络问题

六月中旬,未知 进行了攻击 到加密密钥服务器网络 SKS密钥服务器,建立在OpenPGP协议之上。 这是 IETF 标准(RFC 4880),用于加密电子邮件和其他消息。 SKS 网络创建于三十年前,用于分发公共证书。 它包括诸如 GnuPG的 用于加密数据和创建电子数字签名。

黑客泄露了两名 GnuPG 项目维护者 Robert Hansen 和 Daniel Gillmor 的证书。 从服务器加载损坏的证书会导致 GnuPG 失败 — 系统就会冻结。 有理由相信攻击者不会就此止步,被盗证书的数量只会增加。 目前,问题的严重程度仍然未知。

攻击的本质

黑客利用了 OpenPGP 协议中的漏洞。 几十年来,她一直为社区所熟知。 甚至在 GitHub 上 可以找到 相应的漏洞利用。 但到目前为止,还没有人承担起填补这个“漏洞”的责任(我们稍后会更详细地讨论原因)。

我们关于 Habré 的博客中的一些选择:

根据 OpenPGP 规范,任何人都可以在证书中添加数字签名来验证其所有者。 此外,签名的最大数量没有任何限制。 这里出现了一个问题 - SKS 网络允许您在一个证书上放置最多 150 万个签名,但 GnuPG 不支持这样的数字。 因此,加载证书时,GnuPG(以及其他 OpenPGP 实现)会冻结。

用户之一 进行了一项实验 — 导入证书花了他大约 10 分钟。 该证书有超过 54 个签名,其大小为 17 MB:

$ gpg --homedir=$PWD --recv C4BC2DDB38CCE96485EBE9C2F20691179038E5C6
gpg: key F20691179038E5C6: 4 duplicate signatures removed
gpg: key F20691179038E5C6: 54614 signatures not checked due to missing keys
gpg: key F20691179038E5C6: 4 signatures reordered
gpg: key F20691179038E5C6: public key "Daniel Kahn Gillmor <[email protected]>" imported
gpg: no ultimately trusted keys found
gpg: Total number processed: 1
gpg:               imported: 1
$ ls -lh pubring.gpg
-rw-r--r--  1 filippo  staff    17M  2 Jul 16:30 pubring.gpg

更糟糕的是,OpenPGP 密钥服务器不会删除证书信息。 这样做是为了您可以跟踪所有带有证书的操作链并防止它们被替换。 因此,消除受损元素是不可能的。

本质上,SKS网络是一个大型“文件服务器”,任何人都可以向其中写入数据。 为了说明问题,去年 GitHub 常驻 创建了一个文件系统,它将文档存储在加密密钥服务器网络上。

为什么漏洞没有被关闭?

没有理由关闭该漏洞。 此前,它不被用于黑客攻击。 尽管 IT 界 问了很久 SKS和OpenPGP开发者应该注意这个问题。

公平地说,值得注意的是,在六月,他们仍然 推出 实验密钥服务器 钥匙.openpgp.org。 它提供针对此类攻击的保护。 但是,其数据库是从头开始填充的,并且服务器本身不是 SKS 的一部分。 因此,需要一段时间才能使用。

事后分析:对加密密钥服务器 SKS Keyserver 网络的最新攻击已知的情况
/不飞溅/ 鲁本·巴古斯

至于原系统中的bug,复杂的同步机制导致其无法修复。 密钥服务器网络最初是作为 Yaron Minsky 博士论文的概念证明而编写的。 此外,这项工作还选择了一种相当具体的语言 OCaml。 经过 根据 维护者 Robert Hansen 表示,该代码很难理解,因此仅对其进行了较小的更正。 要修改SKS架构,就必须从头开始重写。

无论如何,GnuPG 并不相信网络会被修复。 在 GitHub 上的一篇文章中,开发人员甚至写道,他们不建议使用 SKS 密钥服务器。 实际上,这是他们开始过渡到新服务keys.openpgp.org 的主要原因之一。 我们只能静观事态的进一步发展。

我们公司博客中的一些材料:

来源: habr.com

添加评论