全球Windows大瘫痪

Category : 软件 | Post on 2024/07/22 00:00 by Richard | Comments:0
2024年7月19日,全球使用CrowdStrike公司终端安全产品的Windows操作系统的主机大面积发生系统崩溃故障,即“蓝屏死机”(Blue Screen of Death,BSOD),而且受影响的主机重新启动后依然会进入蓝屏状态、无法正常运行。至少20多个国家的交通、金融、医疗、零售等行业或公共服务的业务系统受到影响,四万多航班停运或延误、电视台停播、超市关门、医院停诊、紧急服务中断,还导致了多个重要的微软和AWS的云服务和租户服务中断。事后统计,导致了全球850万台电脑蓝屏死机,这是今年以来全球波及范围最广的信息系统灾难性事件。

关于原因的分析,现在具体信息还是太少,从已知的部分信息来看,已经明确了是因为CrowdStrike更新导致的。

官方给出的修复办法是:
1. 安全模式启动Windows
2. 前往 C:\Windows\System32\drivers\CrowdStrike 目录,删除所有 C-00000291*.sys 文件
3. 重新启动

粗略分析下:
- 故障是由于CrowdStrike升级推送导致的。
- 出错的模块是“CSAgent.sys”,它是主要的功能模块,包括文件监测、运行监测、网络过滤等功能,是其主动防御和主机防火墙的核心驱动。基本的运行原理是:驱动程序加载后首先读取策略配置,根据策略对文件读写、进程加载、内存执行、API调用、网络访问等动作做出放行与阻止操作。
- CrowdStrike升级时下发了新的策略配置文件,虽然以sys为后缀,但其实是数据文件。
- 新的数据逻辑应该是有问题,印发指针错误,激活了之前程序中的BUG,导致出错。
- 在内存指针横行的编程里面,不在所有调用前判断指针的状态将是灾难性的。同样地,参数的各种可能状态,都是要考虑到的。本人曾经遇到过一个“电信级”系统,允许的参数是1-5,在遇到传入0的时候,系统就崩溃了。容错是每一个运营系统必须的考量。

这里,不得不说一下Windows升级机制的安排:
- Microsoft负责Windows以及官方驱动的升级。
- 应用程序Application负责其自身的升级。
- 安全软件、驱动程序是一种特别类型的应用程序,它们具有完全权限,由安装时用户同意授予它访问权限,说白了是不同意就装不了,不过,有几个人真的在安装时研究过许可内容以及可能的后果?

CrowdStrike的故事:
- 2010年4月21日,全球知名的杀毒软件McAfee发布了一次面向企业客户的软件更新,更新后的它看到svchost.exe就认为是病毒,直接删了,但这是Windows一个关键文件,此事导致全球数百万台电脑崩溃并反复重启,只能手工修复。
- 事后,当时McAfee的首席技术官、执行副总裁George Kurtz,离开了McAfee,于2012年创立了CrowdStrike,并一直担任首席执行官至今。而今,CrowdStrike已经是美国网络安全的头部企业,纳斯达克上市公司,世界500强有298家是其客户,市值1000亿美元(事故前)。
- 是不是熟悉的配方?
- 幸运的是,经过长时间的产业国产化,国内并没有使用CrowdStrike,因此基本没有受到波及。但是我们不是也应该从中吸取教训、未雨绸缪吗?

作为前资深程序员,深刻地体会到软件开发中容错机制的重要性。一个程序要做出来不难,要做的漂亮好用、做的稳健,就很难了,如果说一百行代码能够写出程序的功能,很可能最后成品需要数千行代码,最后就是水平和质量的体现了。所以说,难的不是做出功能来,难的是考虑到所有的异常情况,程序在任何情况都不应该有“意外之喜”。

复盘这次的事故,最大的锅在CrowdStrike:
- 程序开发上没有做到详尽检测、测试,留下了BUG,埋下了炸弹。写过程序的都知道,应该让每一次的调用,都要检查各种可能性。
- 策略文件制作发放时没有做好测试,直接开始了推送。
- 推送时也没有分区推送,没有监测机制,一旦发现问题,应该立即停止继续推送。

当然,Windows也不能全部甩锅,谁说微软没有责任的?这个升级机制是否应该考虑更完善,而不是一旦出错就躺平给一个蓝屏出来。尽管驱动程序和安全软件具有系统权限,但也应限制程序和数据区的访达范围,一旦出错,Windows确实无法继续的时候,是不是可以自动重启,到上一次正常启动的状态?滚动记录一次的系统目录即可。

微软有没有考虑过,桌面办公电脑还好,有人去启动,那些远程的无人站点,例如水文监测站、监控点等等,还要派IT人员翻山越岭去一个一个站点修复。微软不考虑这些使用场景的吗?微软是时候要重新检视一下Windows的机制了,所有的系统平台、应用软件,都要从中吸取教训,应考虑到所有的例外情况(Exception)。

最新日志 随机日志 综合排行
  • 新首页终于上线了
  • 我的足迹 My FootPrint
  • 世界上第一块机械硬盘
  • iOS 26,升或者不升?
  • 第17代牙膏到底值不值得买?
  • 版面混乱的原因
  • 雷雨的日子
  • 起舞弄清影,何似在人间
  • 日落时分 @ 尖沙咀
  • 学舌的鹦鹉
  • 从太空看到的超强台风“美莎克”
  • 一个过时的连接,一个永远的沉重
  • 纪念哥哥
  • 百家讲坛 雷人版
  • 我的MPX220
  • 最新款苹果笔记本电脑
  • 北京国安夺冠了,大家看法很奇怪
  • 《非诚勿扰》没播的第五个男嘉宾
  • 女人不该让自己的男人太累
  • 世界上第一块机械硬盘
  • Nokia E61固件升级教程
  • Nokia E61拆解及更换摇杆完全...
  • 月陀岛•传说中的马尔代夫
  • 简约风范·Nokia E60试用报告
  • 住家美食--微波炉烤红薯
  • 手机应用商店的凤凰涅槃
  • 八小时以外工作制的白领 [小说]
  • 商务无敌·Nokia E61试用手记
  • 贺年短信
  • 天若有情

  • 最后编辑: Richard 编辑于2024/07/23 03:52
    发表评论
    表情
    emotemotemotemotemot
    emotemotemotemotemot
    emotemotemotemotemot
    emotemotemotemotemot
    打开HTML
    打开UBB
    打开表情
    隐藏
    昵称   密码   游客无需密码
    网址   电邮   [注册]