你们觉得这篇文章说得靠谱么?我对其中关键的一环持有怀疑: 第三阶段里的
通过对 gpg 进行了解,发现 gpg 可以进行签名伪造,比如 ubuntu 官方的签名邮箱为 [email protected] ,那么我们也可以使用官方签名的邮箱重新进行申请,获得一个签名 key。
这个没太看懂,究竟是伪造一个官方邮箱去 keyserver 申请,还是在本地伪造?官方会有这么明显的漏洞?
1
Shura 2017-12-06 00:01:19 +08:00
“由于有些用户喜欢使用 root 用户执行的 apt 命令,那么就导致恶意文件会以最高权限运行,导致服务器彻底沦陷。”,用 sudo 运行 apt 就不会了?
|
2
besto 2017-12-06 00:02:32 +08:00
毛用没有。这个签名就是在本地弄的,根本不会验证邮箱。另外,一般人怎么可能去信任这种源。。。最后,不拿 root 运行 APT ?你倒是试试。。。
|
3
0ZXYDDu796nVCFxq 2017-12-06 00:05:59 +08:00 via iPhone
OpenPGP 标准本身就没有 CA 的概念,接受一个签名前需要自己通过可靠途径确认签名的真实性。
|
4
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 是不可能被信任的)。 |
5
pq OP @gstqc 难道这文章里说的是让用户自己导入他私造的 gpg key ?我仔细看了,貌似他确实是通过官方的 keyserver 弄了一个。
另外,让用户导入 key 并不难,你安装过 Chrome 吧?安装时它就自动把 Google 的 key 导入到信任列表了。 唉,真不如 Fedora 的 metalink 那种分层级校验 hash 码的方式那样让人有安全感。 |
7
Osk 2017-12-06 00:17:42 +08:00 via Android
添加 key 验证的不是邮箱地址而是 key 的指纹是否正确。添加了 apt key 指责 apt 不安全和乱装 ca 证书被中间人怪 https 不安全是一个道理啊。
|
8
pq OP |
10
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]" 然而任何人都可以上传自己的公钥到公钥服务器上,而且公钥服务器的内容是同步的。 |
12
pq OP @Shura 哦,明白了,原来是个公用服务器呀,我原来还以为只要这个服务器接受的 key 就会自动被全球 Ubuntu 用户信任呢。
|
13
Phariel 2017-12-06 00:33:41 +08:00 via Android
逗呢 debian 的世界里不用 root 权限能不被 permission denied 的有几个?
|
14
Osk 2017-12-06 00:37:41 +08:00
@pq 还有就是,只看短 ID 也不保险: https://lwn.net/Articles/689792
|
15
xfspace 2017-12-06 00:42:57 +08:00 via Android
“执行 sudo apt-get update,看是否更新正常,如果报错请导入证书文件,”
这文章标题太大,用 apt-key 导入,此时用户是先知的;如果说 APT source 被污染了后,通过其他手段检查才发现,用户是属于后知。 |
16
0ZXYDDu796nVCFxq 2017-12-06 00:47:49 +08:00 via iPhone
@pq #12 那这不就是类似 CA 的东西了……
举个例子,你要加一个仓库,比如是 nginx.org 的官方仓库 那应该到 https://nginx.org 确认签名的指纹是否正确,再信任这个签名 无脑按 Y 那谁都救不了 |
17
pq OP @Osk 呵呵,我都是直接看完整的指纹的。我对通过镜像在线更新一直没什么安全感,所以换到任何一种发行版时,都首先研究一下它的软件源保真机制,总结下来,Fedora 的 metalink hash 校验加上 rpm 本身的 gpg 签名校验双重保险,应该是最可靠的,而 deb 世界里,多数包连 gpg 签名都没有,只能靠 InRelease 的 gpg 签名校验加后续几层的 hash 校验来保障。
|
19
feather12315 2017-12-06 01:43:35 +08:00 via Android
这问题出现在密码分发阶段,GPG 采用的是公钥服务器方式,需要自己证实最开始的密钥的可靠性
|
21
jimzhong 2017-12-06 02:28:41 +08:00
这篇文章是标题党吧。有几个 Linux 用户会不检查指纹盲目导入 Key ?
|
22
ryd994 2017-12-06 02:46:08 +08:00 via Android 3
傻逼啊,当整个 Linux 社区都是傻逼么?
Ubuntu 用于验证 deb 的 key 不是从网上接收的,是直接写死在光盘里,后期通过 dpkg-sig 保持更新 所以验证安装光盘很重要 sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys [证书公钥 ID] 嗯嗯,所以要怎么让受害者运行这条命令呢?我要有能力让别人运行这条命令,我干嘛不直接运行 sudo dd if=/dev/zero of=/dev/sda 呢? 明显就是没用过 gpg 的傻逼。keyserver 就是个公用网盘,可以直接下载证书文件。可它本来就不保证证书是真的啊。验证证书需要 in-person 见面,或者通过信任链间接验证。 |
23
RqPS6rhmP3Nyn3Tm 2017-12-06 02:51:17 +08:00 via iPad
完全不靠谱。楼主可以去了解一下 Web of trust 工作原理,这种阴谋论真的很低级
|
24
likuku 2017-12-06 03:02:17 +08:00 1
|
25
likuku 2017-12-06 03:04:06 +08:00
[由于有些用户喜欢使用 root 用户执行的 apt 命令]....
不用 root 身份,怎么用 apt-get 安装更新软件包?有着办法么? sudo 等同于取得 root 权限,这个不算。 |
26
autoxbc 2017-12-06 03:27:24 +08:00
主要 apt 那个 key 错误的提示一点也不友好,既没有除错方法,也没有安全提示。大多数人就是搜索一下,然后按照教程导入 key,又不都是搞安全的,谁知道 GPG 套路这么深。
|
27
autoxbc 2017-12-06 03:44:37 +08:00
@ryd994 #22 原理安全不代表实操无漏洞,我演示一下
1. 光盘内置 key 保存在当前系统中,可能在升级中损坏,至少我遇到过一次 2. key 损坏后,任何升级 /安装动作都会提示 key 校验错误 3. 用户第一反应是换源,源出错是很常见的,换源过程中录入一个污染源 4. 仍然无法更新,用户搜索得知需要导入 key,用户大概率不知道 GPG 是什么东西 5. 导入 key 后正常更新,此时已经中招,整个过程十分自然 |
28
bao3 2017-12-06 05:19:03 +08:00 via iPhone
兄弟,你申请网站 ssl 证书不也邮箱,但你以为这些场合是以邮箱作为合法验证?其实邮箱在这里只是一个 flag 而已
|
29
ryd994 2017-12-06 05:40:16 +08:00 via Android 1
@autoxbc 1.验证光盘是安装前步骤之一,你不做是你的事
2.用户傻逼不能怪系统不安全 这个问题,任何系统都无法解决。Windows 的安装光盘一样可以篡改植入 CA,一样可以劫持系统更新。或者植入管理软件,Windows 本身就支持域管理员设置 wsus。我是不是可以搞个大新闻,说 Windows 或者 Mac 都不安全? |
30
ryd994 2017-12-06 05:41:59 +08:00 via Android
@autoxbc Windows,请求管理员权限点一下,什么都出去了。更况且,嫌烦不开 UAC 的人多了去了。
|
31
yingfengi 2017-12-06 08:02:57 +08:00 via Android
就像 https 你安装莫名其妙的 CA,一个道理
|
33
momocraft 2017-12-06 08:25:03 +08:00
随便找一个命令就敢 root 执行的用户会中任何污染, 这不是 pgp deb 或 debian 的问题.
|
34
jyf007 2017-12-06 08:39:15 +08:00
我记得 gentoo 被入侵有一种方式是 portage 树植入木马,条件是 rsync 同步的 portage 树.我已经切换成 git 同步 https 协议的 portage 树了,现在唯一可信的地方是 ca-certification
|
35
jasontse 2017-12-06 08:59:10 +08:00 via Android
自己挖坑自己跳,这算什么?
|
37
loading 2017-12-06 09:09:04 +08:00
所以一般第三方源还是谨慎,特别是要添加 key-ring 等操作。
其实退一步说,例如 android 的 apk 下载时被劫持,然后一般用户都打开了信任未知来源,怪谁? |
38
loading 2017-12-06 09:09:45 +08:00
系统系统的安全弱点,始终是人。
|
39
UnknownR 2017-12-06 10:05:56 +08:00
不 root 运行 apt 会报错
|
40
lain0 2017-12-06 11:34:04 +08:00
你都手動把攻擊者的 public key 導入信任了,當然能通過包簽名檢驗。
所以在網頁上看到指示用戶執行的命令,不要不看清楚或不明白意思就在自己機器執行了。 |
41
pynix 2017-12-06 12:15:49 +08:00
大新闻。。。
|
42
tairan2006 2017-12-06 12:46:23 +08:00
sudo 和 root 的权限不是一样的么…
|
43
tywtyw2002 2017-12-06 12:59:07 +08:00
这文章建立在一个基础上,添加了伪造的 gpg-key。
但是为什么要去添加一个新的 gpg-key 呢?这算是属于钓鱼的范畴,跟漏洞有什么关系?完全是标题党。 基本上除了一个 n 年没有升级过系统的系统,基本上没有必要去添加官方的 gpg-key 的。 |
44
flyfishcn 2017-12-06 13:16:16 +08:00
@besto
@pq @likuku @UnknownR @tairan2006 原文他的意思是你目前登录的用户,如果你用 root,apt 完之后,你运行 apt 下来的软件也是 root 权限。但是如果是 sudo apt,apt 完,你不加 sudo 直接运行的话,是普通用户的权限。 |
45
flyfishcn 2017-12-06 13:17:34 +08:00
@Shura 原文他的意思是你目前登录的用户,如果你用 root,apt 完之后,你运行 apt 下来的软件也是 root 权限。但是如果是 sudo apt,apt 完,你不加 sudo 直接运行的话,是普通用户的权限。
|
46
ThatIsFine 2017-12-06 14:33:18 +08:00
不加 sudo 能装的有几个?
|
47
ryd994 2017-12-06 16:35:51 +08:00 via Android
@tywtyw2002 密钥是一直滚动的。旧密钥停用前就会保证新密钥已经部署完成。
所以如果旧到连新密钥都不认了,那当前系统已经旧到没有升级的意义了,赶紧擦了重装吧。 @flyfishcn 我自己私用的服务器还真就是长期 root 登录的。反正禁了密码,不担心安全问题。执行命令前多看一遍,能救命。普通用户删了 home 其实和歇菜也没区别。 对外服务必须降权,最小暴露面原则。 |
48
jyf007 2017-12-07 10:15:57 +08:00
@Owenjia 对,所以我用的 gentoo 都直接通过 git-https 方式同步 github 的 portage 树,再重新编译 stage3
安全的重点变成了 app-misc/ca-certificates |
49
cnfzv 2017-12-07 11:56:48 +08:00
@tywtyw2002 问个问题,有些时候更新包时提示需要导入 GPG key 是什么原因?
|