因为致命,所以关键

近日读了《致命Bug——软件缺陷的灾难与启示》这本书。这是一部用人类鲜血和泪水书写的软件Bug简史,一本业内资深人士写给同行和大众的案例分析书。纵观历史上出现过的重大系统事故,可以说不外乎都是嵌入式软件错误导致的,嵌入式软件漏洞引发的财产或什么安全方面的损失要比桌面软件漏洞大得多。人们对于那些优秀的、完美的软件抱有期待,但本书讲述的确是错误、失败,涵盖了汽车、金融、国防、航空、医疗、核电等领域,展示了软件错误是如何引发这些危险事故的,同时又带来了怎样的影响。

有些缺陷之前听说过,但是没有深入的去了解产生的原因和机理,例如爱国者导弹的软件缺陷。爱国者导弹防御系统时间的衡量计算是基于系统时钟时间乘以1/10所得到的秒数来进行表示的,且这个自动乘以1/10的运算是使用一个24位的定点寄存器来进行的。24位的寄存器只能存放24位的有效位,其余小数精度部分(0.000000095)会被砍掉。当时该爱国者导弹系统的电池已经启动了100个小时,这样下面一个很简单的计算公式就能计算出该砍掉的精度所导致的时间偏差会达到0.34秒之多(0.000000095×100×60×60×10=0.34)。飞毛腿导弹飞行的速度大概是1676米/秒,所以在0.34秒的误差时间内飞毛腿导弹就会产生超过近600米的误差。这个距离已经足够让正在飞来的飞毛腿导弹跨出爱国者导弹系统进行导弹跟踪的有效阈值。

丰田汽车踏板门事件则展示了有的软件缺陷实在是难于发现。从2002 年起,丰田对凯美瑞车型进行重新设计时,采用了新的油门踏板,使用电子节流阀向发动机发送信号,这个技术后来又用在雷克萨斯等其他车型。2004年初开始,NHTSA(National Highway Traffic Safety Administration,美国国家公路交通安全管理局)陆续接到一些用户反映,丰田汽车的凯美瑞和雷克萨斯会出现未踩油门的情况下突然加速的现象。NHTSA开展了调查,但并未发现问题,调查不了了之。后来,投诉依然不断,直到发生了十来起司乘人员丧生的事故后,丰田公司召回了380万辆汽车。2010年,NHTSA委托NASA调查电子节流阀是否是汽车突然加速的原因。经过十个月的调查,NASA的工程师们对电子控制设备的28万行源代码和各种电子设备进行了检测,没有发现问题。嵌入式软件专家Michael Barr不信邪,他组织自己公司的7名专家又进行了18个月的检测,发现凯美瑞的操作系统管理着24个任务,任务的堆栈余量很小。由于操作系统的缺陷,会导致某些任务发生堆栈溢出,更改数据结构,造成其他任务中断或挂起,从而失去节流阀的控制。结果是,当监控加速踏板的任务终止后,刹车处于踩下状态,驾驶者反而要完全松开刹车,汽车才会停止加速。2014年,丰田公司被美国司法部罚款12亿美元。

这本书的材料取之于公开的事故调查报告,作者对于有些缺陷的细节描述不深入,有些逻辑也有点混乱,也算是本书的不足之处。不过,作为安全关键软件的从业者,常看看这些事故和归零报告,对于开发和测试工作都会常怀敬畏之心。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 前几年闹得沸沸扬扬的丰田刹不住事件最近又有新进展。十月底俄克拉荷马的一次庭审,2007年一辆2005年凯美瑞暴冲(...
    yuwh_507阅读 10,658评论 1 6
  • 简书是我在豆瓣阅读里面的免费杂志中了解到的,每当我下载新的应用时,总是不自觉的去寻找免费、优惠字样的东西。我不是富...
    壹平方阅读 2,849评论 2 4
  • 天还未亮,早上5点半起床,在朦胧的睡意中洗漱,吃早饭,然后等车上学。到了学校,从早到晚上十节课,放学。拖着沉重...
    迷之尴尬阅读 1,022评论 1 0
  • 这小妞最近老是睡着睡着突然大哭 小妞爸说她大概恶梦了 我给她画了幅画 希望她做个好梦 睡得香香地 梦里都能笑出声
    坚持日更的Olivia阅读 1,783评论 7 9

友情链接更多精彩内容