发布于: iPhone转发:0回复:5喜欢:0
这次CrowdStrike软件更新引发的Windows系统崩溃事件,是一个典型的由于编程错误导致的严重后果。以下是对这个事件的总结归纳:
1. **事件概述**:
CrowdStrike在2024年7月推送的软件更新中包含了一个编程错误,导致大量Windows用户遭遇系统崩溃,即“蓝屏死机”(BSOD)。
2. **问题根源**:
错误的根源在于C++编程中的一个空指针(Null Pointer)错误。空指针是没有指向任何有效内存地址的指针。
3. **计算机内存理解**:
计算机内存可以看作一个数组,每个位置有唯一地址,通常用十六进制表示。
4. **空指针概念**:
空指针是一个特殊的值,通常表示为NULL或nullptr,表示指针没有指向任何有效的内存位置。
5. **关键编程错误**:
CrowdStrike代码中的一个常见但危险的错误是没有检查指针是否为空就试图使用它。
6. **错误的具体表现**:
程序试图访问一个对象的成员,但因为对象指针为空,导致访问了系统保护的内存区域,触发系统保护机制。
7. **系统级软件的特殊性**:
CrowdStrike软件是一个系统驱动程序,运行在内核模式,具有最高级别的系统访问权限,其错误可能影响整个操作系统稳定性。
8. **正确的编程实践**:
程序员应养成检查指针是否为空的习惯,使用现代C++特性如智能指针,以及静态代码分析工具来避免空指针错误。
9. **行业反思和改进措施**:
包括微软在内的软件公司需要改进驱动程序认证过程,实施更严格的测试要求,考虑更新回滚机制,重新评估质量保证流程,加强对开发人员的培训。
10. **编程语言的演进**:
事件引发了关于编程语言选择的讨论,新兴的系统编程语言如Rust,通过其所有权系统和借用检查器,在编译时就能防止许多内存错误。
11. **安全与效率的权衡**:
在系统编程中,安全性和效率之间需要权衡,C++提供了接近硬件的控制,但也带来了更高的风险,而更安全的语言可能带来性能开销。
这次事件凸显了软件开发中对于系统级编程的复杂性和风险,以及在追求高性能的同时确保软件安全性的重要性。同时,也提醒了软件开发者和企业在发布软件更新时需要进行更严格的测试和审查,以避免类似的灾难性后果。
引用:
2024-07-20 10:48
#微软故障##Crowdstrike是怎么让全球微软系统崩溃的#
昨天网络安全巨头Crowdstrike的一次软件更新引发了大规模的Windows系统崩溃,海外不少航班也不飞了,打工人也不用上班了。
技术专家Zach Vorhies在X上进行了深入分析,我补充了一些背景知识,做了个综述。没想到,是这么一个低级错误。...

全部讨论

07-20 10:59

#微软蓝屏# 2010年的时候,杀毒软件McAfee出现重大失误,误杀XP系统文件导致数百万台电脑故障。
当时McAfee的CEO是George Kurtz ,一年后他离开McAfee创办了CrowdStrike。对,就是昨天造成蓝屏事故的那个CrowdStrike 。