微软蓝屏事件,初看、细想与深入
蓝屏事件
2024年7月19日,多家大型外企受到蓝屏故障影响,导致业务无法正常运行。据不完全报道,受到影响的公司包括美国三大航空公司、麦当劳、伦敦证券交易所、日本大坂影城、多家酒店等。
事件原因
事件的直接原因是,这些外企在微软windows操作系统上使用了CrowdStrike公司(下称"cs")的安全软件。该安全软件近期推送了安全更新,该更新在所使用的微软内核驱动技术中引入了BUG,导致其在内核态工作时出现了NULL指针引用,从而引发windows内核崩溃,导致windows蓝屏。
批评声的分化
事件发生后,各媒体纷纷批评微软操作系统的不稳定可靠,但很快就有技术人士站出来指出问题是由cs公司引发的,并不是微软的问题。但在本博看来,这其实触及到了技术管理领域中一个非常有难缠的话题——技术责任的界定。下面,让我们来思考思考这个问题到底是谁的责任呢?
乍一看
乍一看,这个问题是微软的问题。因为是windows蓝屏的。作为吃瓜群众,我就看到了蓝屏,所以问题肯定至少有微软的一份。
细一想
作为技术爱好者,深入了解会发现,操作系统的权限在概念上大致分为多个层级,驱动大致工作于ring1甚至ring0级。而安全软件所需要的高权限,通常是通过微软windows驱动软件技术获取到的。 cs公司的安全软件,在使用驱动技术的过程中,因设计不当,引用了空指针(null pointer reference),引发内核态崩溃,对外表现就是蓝屏了。 从引发问题的角度讲,这是cs的锅没跑了。人家windows好好的,你升级后在内核态把人家搞挂了,当然是你cs的问题了。
深入思考
可是深入思考,会发现这里面有一种经典的“做事的出错 或 不做事的没罪?”的情况。我们可以相互举证本次操作系统的蓝屏问题中,微软和cs互指是对方原因的主要理由,如下。
微软:
- 我只提供了运行环境
- 我技术上控制不住其他软件是怎么运行的
- 是它引用了空指针后导致的问题
cs:
- 是微软提供的驱动技术
- 我只是一个软件,我自己出错,并没有主观程序指令让windows蓝屏
- 蓝屏不关我事
我认为上述观点都对。出现在两个技术实体界面上的问题,通常都属于“单巴掌拍不响”的情况。在这次事件中,微软与cs显然都是有问题的。 cs的问题相对明显,它是问题的始作甬者,它的程序未经严格测试和合理发布,该BUG进而引发了系统内核的崩溃。 微软的问题相对隐匿,但一点也不小。它的问题在于不作为,正是因为它什么也不做,才导致了该BUG的出现。