2024.07.19世界范围Windows蓝屏事件之我见

1个回答

写回答

18879411181

2026-02-01 19:15

+ 关注

星巴克
星巴克

星巴克app故障,我到店点单被免了一单,此外没受啥影响。我工作和这两家企业没上下游关联,也不认识企业里的人,没有内部消息。X平台上那个号称被开的内部员工是个骗子,在那摆拍,他的话一个字都别信。简单来讲,CrowdStrike近期更新的代码存在一个问题,就是有一处没有检查nullptr就直接推送到生产环境了。这个错误其实很初级,要是经过代码审查(review),再加上持续集成/持续交付(CI/CD)流程中的消毒器(sanitizer)检查以及测试(test),是能够避免的。不过,大多数软件即便存在这种未消毒指针(unsanitized pointer)的问题,通常破坏力也不大。因为很多内核(kernel)上的数据和指令原本就没有读写权限,程序会自行终止。但CrowdStrike是杀毒软件,它有访问内核空间的特权。要是某个地方返回的指针异常地为NULL,却没有检查和处理,强行把NULL(0)加上某个偏移量当作地址(实际上这是受保护的无效内存),从某种意义上说,Windows蓝屏是对强制读写这个地址的一种保护,否则可能会发生更糟糕的情况,比如读取后强行转换为指令数据去执行一些莫名其妙的东西。

X用户Zach Vorhies提供了上图,从中能发现读取的地址低得异常,多数情况下是空指针加偏移量的值。顺便提一下,平时很多Windows蓝屏问题都是由空指针(nullptr)导致的,这次也不例外,是C++语言且没有进行清理(sanitize)处理而造成的典型异常。每次碰到这种事,Rust爱好者就会在各大论坛争着刷存在感。Stanford的CS110L课程讲的是基础的Rust语言编程,课程名却是系统编程中的安全性,第一节课上来就拿nullptr举例批判C++美国前阵子还有人出来说要早点淘汰那些内存不安全的野蛮语言……微软原本在这件事上是没什么责任的,可巧的是当时Azure在中部的集群也出故障了,当天我的office 365全家桶都无法使用,工作邮件都看不了,相当于白得了小半天假期。但话说回来,事发之后,在很多客户沟通以及缓解措施方面,没能在大规模系统崩溃后及时作出响应,所以很难说微软完全没有责任。有小道消息称,CrowdStrike的更新需要通过Azure来派发,我没找到可信来源,不过也不是没这种可能,不然真的很难理解这次响应和修复为何如此之慢。多说一句题外话,安全(security)方向已经彻底失败了。看起来它像是有着很高的护城河,不用和低端码农竞争,但这几年很多事情表明,其实并非技术就能决定一切。这个岗位虽然重要,可平时没出问题的时候,人们很难意识到它的重要性。大厂普遍将安全工具外包,以实现内部降本增效。而一旦出现能证明这个工作重要性的情况时,大厂往往不是想着招人或者优待现有人员,而是把没做好的锅甩给他们。国内这种情况更严重,远的有乌云(wooyun)事件,近的有某大厂悬赏漏洞却又玩不起,还请律师威胁。在这种环境下,能保护好自己人身和财产安全就不错了。

举报有用(0分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号