有关于操作系统更新的必要性
一般来讲系统被攻击无非就是用户自己作死,或者系统漏洞被利用。先说系统漏洞被利用这一点。
首先是苹果是封闭的系统,这个封闭不仅仅是自由度上的封闭。苹果的设计理念是,用户不需要介入系统,一切由系统自动化完成。这个众所周知的代表是封闭所有第三方应用渠道+仅App Store商店模式。但很多人不知道的是,这一理念是被贯彻到苹果的所有设计理念的。比如说连接陌生Wi-Fi这件事情上,我们假设这就是一个恶意网关,它会对所有连接设备发起攻击。而我们假设iOS会受影响。首先是你应该知道商业操作系统一定会带遥测数据。我们认为用户为普通用户,这些用户发现自己连接过某一特定Wi-Fi后都中招。那么即使普通用户不吱声,苹果这边也会收到这些异常的数据(不要问为什么能收到数据,遥测数据收集的东西远比你想象得多),苹果安全技术人员分析这些数据之后意识到了攻击的存在,然后马上利用分析结果修复自己的系统,然后将patch推送给用户,而因为系统更新是完全自动完成自动重启的,除了首批中招的用户以外,所有用户都不会再收到同样的攻击了。
再看看Windows怎么做的:一个用户不顾Windows的阻拦,在旅馆自己把网络位置改成了公共,受到了网络攻击。这个用户有没有意识到问题无所谓,因为系统状况都会被送给微软(啊这万恶的遥测)。经过和苹果相同的做法之后,微软把更新推给用户了。这时候出现了一点阻挠,大多数用户他!不!更!新!但不怕,Windows早就改成了强制更新,于是在用户无视右下角的重启提示一周后被Windows死拖着重启了。用户非常气愤,表示微软不尊重用户,上网上抱怨,还有大量人有着相同的抱怨。殊不知有相同抱怨的人全都免受了这次攻击,而善于修改组策略的民间大神中招了,于是这个大神发帖抱怨道垃圾微软,我转投苹果了。
再看看同样的事情发生到Linux上面会怎样:假设这个用户有基础的调试能力、以及所有遇到相同问题的用户都参与了社区讨论。用户连接陌生Wi-Fi之后,发现自己的电脑变得异常了。用户非常担心,在网上提问,引起了内核维护者的关注,内核维护者经过用户的描述以及转储文件的分析,终于意识到了漏洞的存在,于是将内核修复推到主线。发行版维护者看到了新一批安全修复,于是将patch给backport回自己使用的内核,然后再分发给用户。用户需要手动更新,更新完成之后需要手动重启,系统不会给你任何警告(你存在没安装的更新,所以安全漏洞还在),也不会自动完成(除非你特别设置了自动重启)。重启完成后,这个用户终于不受影响了。但别忘了这是最理想情况。
现实情况呢?用户发现自己电脑不对劲,发帖问什么情况,网上的人指导他协助一起调试,用户完全不会,开始吐槽为什么我用个手机还要自己调试系统,收获一堆嘲讽“那你来用Linux是为了干什么”。因为Linux桌面用户基数过低,无法采样到足够的数据来分析。攻击持续扩大,直到这个漏洞被广泛利用才受到其他公司的内核贡献者警觉(因为实际上内核维护者并不怎么在乎安全修复),内核维护者提交修复,被拒绝,理由是破坏用户模式ABI/影响了非Intel处理器性能/其他commit和这个修复冲突,需要继续讨论(不要问为什么不优先merge安全修复,大多数内核维护者只会把安全修复和普通修复当成同级别的东西看待)。经过很长时间的争议终于被推进主线,而发行版维护者看到了也没在乎,因为每个月都有无数的安全修复,只是例行更新,这个延迟可能在3天-1周左右。更新开始退给用户,用户点了更新之后就没理他了。继续忙自己的项目,电脑也没怎么关。于是相同的攻击再次来临的时候这个用户中招了。
你会发现,苹果的安全,很大程度上是策略上的保证而非技术。微软借鉴了这种策略,虽然不受用户欢迎,但至少能把用户强拉上。这种完全自动化的安全更新,我到现在都没在任何的Linux桌面上见到。服务器倒有不少,SUSE、Ubuntu啥的都有。
来自于某q群