Linux kernel Intel driver bug 导致大量笔记本 BIOS 被锁,谁来背锅?

2017-12-24 00:50:30 +08:00
 fzinfz
  1. 2 月份引入 Bug 的 Intel driver 作者? http://lists.infradead.org/pipermail/linux-mtd-cvs/2017-February/010359.html

  2. 6 月份把 bug 标记为 normal 的 kernel bug team ? https://bugzilla.kernel.org/show_bug.cgi?id=195951

  3. 10 月份导致大规模爆发的 ubuntu 17.10 ? https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1734147 (貌似新闻标题都甩锅给 ubuntu,个人感觉挺冤,而且 Fedora 也有。)

  4. BIOS 芯片厂家? bug 作者提到了 GigaDevice/Winbond flash chips.

  5. Intel UEFI BIOS team? https://pcsupport.lenovo.com/us/en/products/laptops-and-netbooks/thinkpad-s-series-laptops/thinkpad-s440/downloads/ds036070

(Fix) Security Fix: Intel TA201708-001 for SPI Write status command.
(Fix) Add Back Flash Prevention flag for PSIRT-TA-201708-001.

其它?

元芳们怎么看?

6597 次点击
所在节点    Linux
37 条回复
ysc3839
2017-12-24 23:05:22 +08:00
@pq 双 BIOS 也不太可行吧,BIOS 怎么知道自己有没有坏?最终还是要用户介入,那用什么条件触发呢?
pq
2017-12-24 23:11:46 +08:00
@ysc3839 你应该去了解一下技嘉的双 BIOS 技术,如果我没记错的话,它的备份是任何途径都无法写入的,系统加电时,BIOS 会自我检查完整性(可能是 hash 或 CRC 校验之类的),如果受损,就自动从备份复制。
pq
2017-12-24 23:24:58 +08:00
@fcten 你的比喻跟我说的根本不是一回事。你说的那些可能性,是偶然因素,是人无法控制的;而我说的这种技术上的风险,则是完全有可能将其消灭在萌芽状态的,从根本上杜绝这种可能。而且,从硬件上让 BIOS 无法被操作系统刷新,并不会给用户增加多少困扰,用户完全可以通过更安全的手段去更新 BIOS。

其实,我又要散播点阴谋论了,我猜让操作系统可以刷 BIOS 这事就是 Intel/AMD 等这几家 PC 核心硬件厂商主导搞的,它们分别搞了 ME/PSP 后,担心用户不会按它们的意愿主动保持更新,所以就搞了这个,方便后台静默刷新 BIOS。

而它们为嘛要费尽心机弄这个吃力不讨好的 ME/PSP 呢?估计就得问问 NSA 了。
pq
2017-12-24 23:29:09 +08:00
@fcten 附加:至少是 Win98 以前(应该是 ME/PSP 出世的时间点差不多),那时在操作系统下是不可能通过应用程序来刷新 BIOS 的,那么多年,用户也没觉得通过特制软盘或光盘来更新 BIOS 是件麻烦事。
fzinfz
2017-12-25 00:31:28 +08:00
@pq #23 如果要禁用 Linux BIOS 更新,自己编译内核,理论上应该关闭"SPI support"就好了
https://github.com/torvalds/linux/blob/master/drivers/spi/Kconfig#L5

之所以有 OS 更新 BIOS 需求,应该主要是批量维护方便,顺便照顾下个人用户特别 windows 小白用户。
wevsty
2017-12-25 00:32:08 +08:00
@pq
这种认识是一种误区。
CIH 不就是 Win95 下面修改 BIOS 么?
在 DOS 下面更新 BIOS 和在 Windows 这样的操作系统下面更新 BIOS 其实没有明显的不同。

要理解这个问题首先要理解 CPU 工作模式和 CPU 执行指令的特权级别,对于 Intel 的 X86 CPU 来说,启动时首先工作在实模式,传统的 BIOS 和 DOS 就是运行在实模式下,实模式本身没有任何特殊的保护措施,允许执行任何可以执行的指令(当然也包括刷写 BIOS 的指令)。
对 Windows 这一套东西来说,启动 Windows 时,Windows 会把 CPU 切换到保护模式。CPU 设计时保护模式下有 RING3-RING0 一共 4 个特权级别,RING0 这个级别下允许 CPU 执行任何支持的指令(其实和实模式差不多,虽然也有些区别,不过这里不展开了)。对于 Windows 来说,Windows 只把所有的程序划分为 RING0 和 RING3 两种级别,用户态是 RING3,内核态是 RING0,所以只要加载(或者是使用)了 Windows 驱动,理论上就可以干任何事情。
理解这些问题之后就会发现,无论是 DOS 下面更新 BIOS 还是在 Windows (或者其他操作系统上)更新 BIOS 都是一样的,而且实际上现代操作系统提供了各种各样的机制可以提供更多的保护措施。

历史上因为 CIH 的原因,确实有那么一段时间大家对 BIOS 的保护是十分重视的,那个时候会在主板提供硬件保护开关来阻止写入 BIOS,只不过现代不是那么重视这个问题了而已。
pq
2017-12-25 00:44:12 +08:00
@wevsty 对对对,这点我确实有点胡言乱语,我忘记了当年那些用来更新 BIOS 的软盘,其实也是 DOS 启动的,还是运行在 OS 上的应用程序。
LGA1150
2017-12-25 00:52:00 +08:00
@pq 技嘉备份 BIOS 可以写入,只是没有对外开放接口:
开机按 Alt+F10,会把主 BIOS 的内容复制到备份 BIOS
shijingshijing
2017-12-25 00:55:59 +08:00
没猜错的话,Intel 开始给自己 Active Management Technology 擦屁股了,呵呵~
其实最好的方法,还是以前的老路子,硬跳线 BIOS Protection,只有在跳线帽短接两个 pin 之后,BIOS 才能写入。
这个更新,估计 Intel 的 Management Engine 这个大后门也只是修修补补,隐藏的更深,不可能拿到的。

这个锅,就是 Intel 背,Ubuntu 不过是更新的激进了一点。
ysc3839
2017-12-25 01:52:44 +08:00
@pq 看 7 楼我之前遇到的问题。这个时候固件本身是没有问题的,但是其中代码的 bug 导致其无法正常启动。像联想这个估计也类似,固件本身是完好的。那双 BIOS 不能起作用,还是得靠用户触发才行。
zhjits
2017-12-25 09:12:21 +08:00
任何固件都应当被设计为在可读写存储器数据完全无法识别的时候正常工作(至少是恢复到出厂设置)。

BIOS 时代大家都是这么做的,怎么到了 UEFI 都疯狂加功能,把剩下的都丢了?
fcten
2017-12-25 14:23:53 +08:00
@ryd994 想特索商业公司,最简单的是 ddos,通过其他手段搞挂服务都是非常容易被查出来的
另外,如我前面所说,搞挂服务有一万种办法,和 BIOS 安全没多大关系
ryd994
2017-12-25 23:35:55 +08:00
@fcten 如果某个 openvz 或者容器云,某个提权漏洞配合这个漏洞,你想想看
fcten
2017-12-26 10:31:42 +08:00
@ryd994 想多了……任何云服务都不可能让你操作物理机的 BIOS 的,否则如何实现隔离?
如果你说拿到了物理机的权限,那本来就是为所欲为的事情,风险在于 root 权限而不是可以操作 BIOS
ryd994
2017-12-26 13:28:23 +08:00
@fcten 1. 请注意我说的就是容器和 openvz,两者都不是虚拟化,不存在虚拟机的隔离。内核就是共享的。只不过限制了权限来实现隔离。攻破也比虚拟化容易的多。
2. 正常就算被攻破,也不过是清空数据,重新部署罢了。然而现在这个漏洞可以使 BIOS 损坏。想恢复不是一时半会。

如果按你的说法的话,很多驱动 bug 都可以不修的,很多系统服务的 bug 也是可以不修的。因为都需要 root 权限触发。
fcten
2017-12-26 14:55:59 +08:00
@ryd994 我什么时候说过 bug 可以不修?你觉得 BIOS 可以操作和更新是一种 bug 吗?
请注意:我回复的是有人认为 BIOS 不应当能够被修改的观点,和主楼提到的 bug 没有任何关系。
fcten
2017-12-26 15:30:17 +08:00
@ryd994 另外,据我了解的情况来看,这个 bug 是可以通过重刷 BIOS 修复的,并没有损坏硬件。这和破坏操作系统并没有本质的区别。

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

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

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

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

© 2021 V2EX