警惕! Ubuntu APT 源污染...

2017-12-05 23:54:06 +08:00
 pq

https://paper.seebug.org/270/

你们觉得这篇文章说得靠谱么?我对其中关键的一环持有怀疑: 第三阶段里的

通过对 gpg 进行了解,发现 gpg 可以进行签名伪造,比如 ubuntu 官方的签名邮箱为 mirror@ubuntu.com ,那么我们也可以使用官方签名的邮箱重新进行申请,获得一个签名 key。

这个没太看懂,究竟是伪造一个官方邮箱去 keyserver 申请,还是在本地伪造?官方会有这么明显的漏洞?

9214 次点击
所在节点    Linux
50 条回复
Shura
2017-12-06 00:01:19 +08:00
“由于有些用户喜欢使用 root 用户执行的 apt 命令,那么就导致恶意文件会以最高权限运行,导致服务器彻底沦陷。”,用 sudo 运行 apt 就不会了?
besto
2017-12-06 00:02:32 +08:00
毛用没有。这个签名就是在本地弄的,根本不会验证邮箱。另外,一般人怎么可能去信任这种源。。。最后,不拿 root 运行 APT ?你倒是试试。。。
gstqc
2017-12-06 00:05:59 +08:00
OpenPGP 标准本身就没有 CA 的概念,接受一个签名前需要自己通过可靠途径确认签名的真实性。
wevsty
2017-12-06 00:09:33 +08:00
没什么意义,别老想搞个大新闻。
GPG Key 本来就不是验证邮箱的,那个邮箱只是个标记而已。
apt 验证 GPG Key 是验证 Key 的签名,并且 apt 只信任加入到信任区的 GPG Key。原文里用 apt-key 命令就是把 key 加入信任区了,你自己信任这个 key 发布的内容,apt 当然也不会报错,但是这并不代表直接劫持更新源就能随便向访问者安装软件(因为替换更新源使用的 GPG Key 是不可能被信任的)。
pq
2017-12-06 00:13:59 +08:00
@gstqc 难道这文章里说的是让用户自己导入他私造的 gpg key ?我仔细看了,貌似他确实是通过官方的 keyserver 弄了一个。

另外,让用户导入 key 并不难,你安装过 Chrome 吧?安装时它就自动把 Google 的 key 导入到信任列表了。

唉,真不如 Fedora 的 metalink 那种分层级校验 hash 码的方式那样让人有安全感。
pq
2017-12-06 00:16:10 +08:00
@wevsty 对的,这一步确实是不容易让用户中招。
Osk
2017-12-06 00:17:42 +08:00
添加 key 验证的不是邮箱地址而是 key 的指纹是否正确。添加了 apt key 指责 apt 不安全和乱装 ca 证书被中间人怪 https 不安全是一个道理啊。
pq
2017-12-06 00:18:15 +08:00
@besto
@Shura
sudo 应该跟直接用 root 一样危险。基本上所有发行版的在线更新,都得用 root,否则没权限替换本地硬盘上的文件呀。
pq
2017-12-06 00:20:40 +08:00
@Osk 嗯,所以得养成经常看看 apt-key finger 并上官网核对一下指纹的习惯。
Shura
2017-12-06 00:21:08 +08:00
@pq 你需要了解一下 gpg 的原理:http://www.ruanyifeng.com/blog/2013/07/gpg.html
"我仔细看了,貌似他确实是通过官方的 keyserver 弄了一个。 "你说的应该是这个吧?'sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys [证书公钥 ID]"
然而任何人都可以上传自己的公钥到公钥服务器上,而且公钥服务器的内容是同步的。
Shura
2017-12-06 00:22:58 +08:00
@pq 所以作者指责用户用 root 权限运行 apt,我很难理解。可能原文作者是 archlinux 重度患者吧。
pq
2017-12-06 00:33:35 +08:00
@Shura 哦,明白了,原来是个公用服务器呀,我原来还以为只要这个服务器接受的 key 就会自动被全球 Ubuntu 用户信任呢。
Phariel
2017-12-06 00:33:41 +08:00
逗呢 debian 的世界里不用 root 权限能不被 permission denied 的有几个?
Osk
2017-12-06 00:37:41 +08:00
@pq 还有就是,只看短 ID 也不保险: https://lwn.net/Articles/689792
xfspace
2017-12-06 00:42:57 +08:00
“执行 sudo apt-get update,看是否更新正常,如果报错请导入证书文件,”
这文章标题太大,用 apt-key 导入,此时用户是先知的;如果说 APT source 被污染了后,通过其他手段检查才发现,用户是属于后知。
gstqc
2017-12-06 00:47:49 +08:00
@pq #12 那这不就是类似 CA 的东西了……

举个例子,你要加一个仓库,比如是 nginx.org 的官方仓库
那应该到 https://nginx.org 确认签名的指纹是否正确,再信任这个签名
无脑按 Y 那谁都救不了
pq
2017-12-06 00:49:01 +08:00
@Osk 呵呵,我都是直接看完整的指纹的。我对通过镜像在线更新一直没什么安全感,所以换到任何一种发行版时,都首先研究一下它的软件源保真机制,总结下来,Fedora 的 metalink hash 校验加上 rpm 本身的 gpg 签名校验双重保险,应该是最可靠的,而 deb 世界里,多数包连 gpg 签名都没有,只能靠 InRelease 的 gpg 签名校验加后续几层的 hash 校验来保障。
pq
2017-12-06 00:52:02 +08:00
@xfspace 现在看来,这文章确实是哗众取宠博取关注,我没细看就转过来了,失误。。。。
feather12315
2017-12-06 01:43:35 +08:00
这问题出现在密码分发阶段,GPG 采用的是公钥服务器方式,需要自己证实最开始的密钥的可靠性
Showfom
2017-12-06 01:59:40 +08:00
@xfspace 看到这段笑死我了哈哈哈

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/412317

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX