grub2 被报道安全问题,可致安全启动被绕过

2020-07-30 02:40:54 +08:00
 yanqiyu
https://eclypsium.com/2020/07/29/theres-a-hole-in-the-boot/#breaking
6586 次点击
所在节点    Linux
38 条回复
Osk
2020-07-30 07:47:53 +08:00
grub2 让安全启动不再安全已经不是第一次了,相信也不是第二次。

linux 这边对安全启动的需求感觉就是:我才不管安不安全,我只管能在开启安全启动时能正常启动
spcharc
2020-07-30 08:03:29 +08:00
至今不明白安全启动有啥意义。反正我是没用过
dzdh
2020-07-30 08:59:10 +08:00
@spcharc 对于非 win 用户没有任何意义只是保证 UEFI 启动程序是正常不被篡改的。
spcharc
2020-07-30 09:02:42 +08:00
@dzdh #3
win 用户
安全启动的功能我也知道,并不需要解释一遍…只是看不到这个功能有啥意义
hjc4869
2020-07-30 09:05:37 +08:00
@spcharc 有 secure boot 之后恶意软件就不能劫持你的启动流程了。
dzdh
2020-07-30 09:20:30 +08:00
@spcharc
意义就是针对 WIN 用户保证启动流程安全不被篡改
deorth
2020-07-30 09:24:32 +08:00
如果一个恶意程序已经拥有了写入你 EFI 分区的权限,那它有一堆方法实现它想做的任何事,根本不需要这么麻烦的方法
yanqiyu
2020-07-30 09:42:37 +08:00
@deorth 理想情况下,在 UEFI 安全启动启用的情况下,攻击可以轻易的破坏系统,但是不能埋 Rootkit,这个 CVE 允许了攻击者埋 Rootkit
ungrown
2020-07-30 10:03:41 +08:00
@deorth #7 你说的有一定道理,但你忘了另外一种情况:恶意程序本身并没有篡改 boot 程序的权限,但是人可以手动做到,因为放 boot 程序的分区通常是不加密的。
所以,假设一个用户在安全方面做得比较到位,全盘加密(比如用 windows 自带的 bitlocker ),平时使用习惯也很干净,恶意程序几乎没有途径进入其系统。但是 boot 程序所在的分区基本上不可能被加密(加密了怎么 boot ),那么针对这样的用户如何攻击呢?想办法物理接触目标设备,拆硬盘,进 boot 程序所在的明文分区,写入,然后整理现场清理痕迹,假装什么都没发生,等用户自己开机进系统,boom !
spcharc
2020-07-30 11:10:47 +08:00
@ungrown #9
你想太多了
黑客都接触到你电脑了,你觉得还有啥秘密可言
thunderbolt 3 接口的直接内存访问( DMA attack )不香吗?现在很多电脑都有 thunderbolt 3 吧。现在多数人都不会直接关机,人不在了电脑基本上是睡眠,此时硬盘都是解锁状态,直接从内存拷走密钥就行了
而且 bitlocker 早就被人开发出了一堆使用 GPU 的并行算力暴力破密钥的软件。直接 dd 走你的硬盘回去慢慢破也不难吧
ungrown
2020-07-30 11:44:42 +08:00
@spcharc #10
你想太少了
物理接触或者接近本就是信息安全领域始终关注的攻击场景,很多漏洞属于不接近或接触就不能有效利用的类型,很多防御错失也是针对这样的场景
物理接触或接近永远都是切实有效的攻击手段
如果你说的 DMA attack 切实可行的话,这个安全隐患必须堵上,早晚会因为关注度上升而采取措施
DMA 攻击本身也是一种旁信道攻击,旁信道攻击本身就是一种常用攻击思路
等等,你说补充的这些例子难道不是佐证了我的观点:攻击是多样的不可预测的,所以需要积极地发现和填补漏洞
你不成你是个关心面子为了反对而反对,甚至不惜违背自己的论点,或者说你压根没有自己的论点
发言之前还请理清思路
另外,关于 bitcrack,本质上是 GPU 加速的暴力密码破解,也正因此它只能针对使用“用户输入密码”这种 bitlocker 模式的加密分区,然而用密码模式 bitlocker 的用户是少数,换句话说 bitcrack 能够攻击的只是少数 bitlocker 设备。虽然我也是这少数中的一员,但是,暴力破解,即使用上密码表,其所需时间也和目标密码本身的长度和复杂度正相关,不好意思我的 bitlocker 密码我自己都不能完整背出来,全靠肌肉记忆敲那几十个键,按照目前 bitcrack 公布的每天一亿多个密码的速度,我手头的设备足够它算上好几年。这样的安全性对我而言足够了,再说全盘加密又不代表文件都是明文的,我真正关注的少数重要私密文件有额外的文件加密。
所以你前后两贴互相矛盾的立场,到底想表达什么?
Osk
2020-07-30 12:25:30 +08:00
这真的是 V 站吗? Secure Boot 只是安全环节中的一环啊.

其它环节出现漏洞了, Secure Boot 不背锅, 别怪 Secure Boot 没用, secure boot 环节出漏洞了, 除非有其它的验证手段, 不然整个安全环节就崩了.


Windows 8 提出 Secure Boot 后, 网上基本一片骂声, 有 Windows 社区的, 有 Linux 社区的, 但我在收集一些资料后我并不觉得这是一个很糟糕的功能, 相反, 它解决了一个痛点: 启动文件的验证, 在没有 Secure Boot 之前, 普通 PC 上大概只有通过 TPM 来达到一定的保护效果, 但当时 TPM 1.2 可不是大白菜遍地都有,而且有政策风险.

那么 Linux 呢? 我觉得 Linux 在这方面做得很垃圾, 是的, 就是垃圾, Secure Boot 居然不验证 Initramfs (RedHat, Ubuntu 默认不验证). Initramfs 里面被人插入恶意代码了都不知道, 简直是一个巨大的安全风险. Archlinux 好一点, 可以手动配置全验证.

Linux 社区做的好事就是逼微软加入了 Secure Boot 的开关.


Secure Boot 保护的是启动阶段的流程是安全的, 避免 rootkit 在 OS 启动前就执行恶意代码, 不然你 OS 里面装再多安全方案也是隐患. 对于大部分的 Linux 发行版来说, 确实是鸡肋, 启用后自己编一个 ko 插入都麻烦.

再说下去有人会认为我在黑 Linux 了, 以及类似于 "被迫害妄想症" 这样的言论出现.

另外, linux 社区真的很双标, 微软启用 Secure Boot 就是要搞垄断, 咋不说说一些 Linux/Android 设备上使用类似于 Secure Boot 的 bootloader 锁呢, 还不给解锁那种.
bitdepth
2020-07-30 12:34:34 +08:00
@Osk bootloader 鎖或者 drm 都是開源社區極度反對的東西
shijingshijing
2020-07-30 12:37:01 +08:00
@spcharc
@dzdh

其实非 win 系统也有类似 secure boot 的东西,苹果 iOS 的 iBoot 就是这样的一个玩意儿。我个人觉得这个东西不过是打着安全的旗号,实现厂商的利益而已。

现在的系统启动过程都 follow 一条 boot chain,多数系统的启动过程都划分两个或者多个 stage 。一般 stage 1 是固化在 cpu 片上 rom 里的代码,非常短小精悍,用于初始化各种资源,形成一个最小系统为 stage 2 提供环境; stage 2 才是真正载入操作系统镜像,载入各种驱动,建立 VFS 文件系统等等直到整个操作系统运行起来(进入桌面或者出现 Terminal 提示符)。

以 iOS 为例,上电后首先是固化在 A 系列 cpu 的 boot rom 执行,然后 LLB,然后 iBoot,最后是 xnu kernelcache 。

Linux 也是类似,首先是 bootloader,然后才是 vmlinux 。

这条 boot chain 上每次从上一级到下一级移交的时候,都会形成一个攻击面,所以就需要对应建立一个 trust chain 来保证每一级结束后,载入的下一级是可信任的,一般做法是验证下一级镜像文件的签名,苹果做的更绝,不仅验证签名,还对下一级镜像加密了。即使最后系统正常运行了,微软还有个 PatchGuard 机制防内核被篡改,苹果也有个类似的机制叫 Kernel Patch Protection 。

Secure Boot,Bitlocker 还有上面的一堆东西,甚至包括 TrustZone,苹果 T2 芯片都是为了保证这条 trust chain 不被破坏,最终用户的环境是安全的而做出的努力。

然而从现实结果来看,这些东西包括 UEFI 等机制看起来是很美好的,现实是很残酷的。有些东西不仅保护有限,反而还因为自身设计问题等增加了攻击面。

对于用户而言,不仅有些操作变得非常困难(比如开启了 secure boot 的电脑重装非出厂时的系统),此外这些安全机制都把某些全局唯一识别信息以硬件方式固化在 firmware 或者 rom 里面(微软是把 product key 写在 UEFI/BIOS 里面,iPhone 甚至把 certificate 固化在 cpu 的 boot rom 里面)这些东西可能用来追踪用户,且很难清理;更进一步,各个系统厂商可以利用这套机制控制软件安装和分发渠道,以后很可能都只能像 iPhone 那样只能从 app store 下载应用,无法自己用安装包来安装。所以我觉得安全提示是厂商举的大旗,限制和操控用户终端才是厂商真的私货。
spcharc
2020-07-30 12:39:44 +08:00
@ungrown #11
我的立场一直是需要物理接触的安全漏洞都没有太多堵的意义,如同用渔网来装水一样
thunderbolt 3 的例子也是为了说明这个,毕竟人家都能动你的电路了,你在软件层面做再多能干啥。而且人家搞掉 bios 密码(估计很多人都没设,就算设了,也可以重置 bios ),去 bios 里关掉安全启动难吗。安全启动做再好,也防不住这个吧?
我这俩办法仅仅可能是专家能想到的办法的万分之一。渔网怎么堵都还是渔网
你觉得 metasploit 直接的测试库里面基本全是网络攻防测试,是为什么。因为被人家接触到硬件就已经 gameover 了
iPhone 的 iOS 也是号称全盘加密吧,也有专用加密芯片吧,不也一样有公司能破?反正我是不知道怎么破的,毕竟 FBI 和那个未公布的第三方公司啥都没说。bitcracker 那个你看到的只是开源界公开的破解方式,但你能保证专业破解公司也是用它吗?
这个立场很难看出来吗?自相矛盾吗?
swulling
2020-07-30 12:49:51 +08:00
@spcharc 安全不是保证绝对不被破解,而是让破解成本高到无利可图。

举个例子,iPhone 的加密,虽然公开资料无法破解,但是你也说有可能有人能破,这事也没法证伪。
但是我们敢说破解成本已经高到对普通人的 iPhone 来说无利可图,这也就够了,毕竟大部分用这个加密只是为了保护自己的隐私不因为丢了手机就泄漏出去。

所以需要物理接触的安全漏洞也有很大堵的意义,就是为了提升破解成本。
Osk
2020-07-30 12:52:48 +08:00
@bitdepth 😄只是少有在大新闻上看到 Linux 社区在反对 Bootloader 锁的文章, 反对 Secure Boot 的新闻当时算是头条.
swulling
2020-07-30 12:53:07 +08:00
就好像家里装锁,哪怕你装最高等级的锁,依然有人可以搞开。
但是也不能因为这就不装锁了,而是让开锁的成本算到偷窃的成本中。

装摄像头等安全设施也一样,一切的一切都是成本,人本质就是一个经济动物,哪怕小偷,也不会做亏本的事情。
raysonx
2020-07-30 12:58:23 +08:00
本质上 Secure Boot 是 wintel 联盟搞的东西,Linux 各发行版都不太鸟这东西。
Osk
2020-07-30 13:02:18 +08:00
@spcharc 雷电 3 现在有内核 DMA 隔离保护了, BIOS 代码本身的保护 Intel 好像也有方案, BIOS 密码如果有需要的用户或者一些企业是会设置好的, Secure Boot 关闭后, 开机界面是会显示警告的(似乎是 BIOS 显示,这类设备太少, 无法验证是 OS 显示的还是 BIOS 显示的警告).

硬件安全防护方案并不是一文不值的, 针对硬件的攻击确实有, 只要攻击的代价足够高, 就是有意义的.

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

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

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

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

© 2021 V2EX