- UID
- 1023166
- 性别
- 男
- 来自
- 燕山大学
|
[导读] 最近丰田汽车(Toyota Motor)在美国卷进了一桩官司,原告律师指称丰田一款2005年份Camry车款在2007年于美国奥克拉荷马高速公路上发生的一场暴冲死亡车祸,主因就是该车款内的电子节流阀控制系统软体码发生错误。
关键词:嵌入式软件嵌入式系统
不良软件码可能杀人吗?答案是肯定的,而且悲剧显然已经发生。
最近丰田汽车(Toyota Motor)在美国卷进了一桩官司,原告律师指称丰田一款2005年份Camry车款在2007年于美国奥克拉荷马高速公路上发生的一场暴冲死亡车祸,主因就是该车款内的电子节流阀控制系统软体码发生错误。
据了解,在上述案件审讯过程中,检视过丰田电子节流阀系统软件码的嵌入式系统专家作证指出,他们发现到丰田系统软件码的缺陷,而其内部的错误码就是造成车辆无预警暴冲的原因。参与该事故调查的Barr Group技术长暨共同创办人Michael Barr表示:“我们已经证实,只是一个小小的记忆体位元翻转(bit flip),就会造成驾驶人无法控制引擎速度,而这种软体故障是无法依赖任何一种故障安全(fail-safe)机制侦测出来。”
其实在这之前,不过丰田已经自认无罪──因为美国国家高速公路交通安全局(NHTSA)在 2011年2月结束了对丰田汽车的调查,该单位委託NASA的专家检视丰田的电子节流阀系统,在为期10个月的调查期间,并没有发现任何电子缺陷可能导致车辆暴冲。虽然NASA报告并没有排除软体导致车辆无预警加速暴冲的可能性,但嵌入式系统专家们并不认为NASA有足够时间进行完整的测试。
于是包括Barr Group四位专家在内的一个七人小组接手NASA的调查任务,深入分析了发生事故的丰田汽车,并做成了一份长达800页的调查报告。“我们做了一些 NASA显然没有时间做的事情。”Barr表示,首先就是检视车用系统的即时作业系统,找出“未受保护的关键变量(unprotected critical variables)”,他们观察且检视了“子处理器(sub-CPU)”的软件原始码,而且“发现了电子节流阀故障安全机制中的漏洞与缺陷”。
该专家小组并采用Green Hills模拟器进行了模拟:“这进一步确认某些动作会在看门狗未重新设定处理器的情形下失效。”Barr的小组也独立检查了在最坏情况下的堆叠深度 (worst-case stack depth):“我们发现NASA调查所依据的丰田分析报告有很多严重错误。”他指出,专家们证实:“透过车辆测试,那些我们所发现的缺陷确实与无预警暴冲有关;我们还观察检视了汽车黑盒子内的软体码,发现它会错误记录车辆意外前最后几秒的驾驶人动作资讯。”
值得一提的是,Barr Group的证词,在去年12月让丰田面临数十亿美元损失的和解案;因为该和解案,专家们所做的详细技术性调查并没有被公开,直到奥克拉荷马事故审讯进行。该和解案虽平息了数百起丰田宣布因为车辆暴冲而召回检修所导致的车辆折价诉讼,该公司仍须面对数起因为车辆故障所导致的人员受伤或死亡官司。
因为奥克拉荷马高速公路事故审讯,专家证词与发现得以公开;到底丰田的电子节流阀控制系统出现了甚么样的缺陷?
Barr 表示,专家针对2005年份的Camry L4车款原始码以及车内测试,证实其中有部分关键变量并未受软体崩溃(corruption)保护,记忆体崩溃的塬始码也显现;他相信丰田的工程师应该会保护大量的变量抵抗软体与硬体导致的崩溃,但却未能成功映射(mirror)数个关键变量,也没有建立任何可以抵抗位元翻转的硬体保护机制。他指出,堆叠溢位(Stack overflow)与软体错误导致记忆体崩溃,而问题的关键就在于那些记忆体崩溃,就像是“擦枪走火”。
“就算小至一个位元翻转的记忆体崩溃,也能导致程式(task)当机;只要藉由单一硬体事件的扰乱(例如位元翻转),或是众多软体错误中的一个就能发生,例如我们在软体码中看到的缓衝区溢位(buffer overflow)以及竞态条件(race condition)。”Barr表示:“未经测试的任务失败可能有上千万种组合,每一种都可能在任何一种车辆/软体状态下发生,它们多到来不及测试。”
不过Barr指出:“我们在2005年与2008年份Camry车款所做的测试显示,甚至就是某个当机程式的本身,都可能造成驾驶失去对节流阀控制系统的控制权──而此时内燃机仍持续作动引擎。简而言之,丰田确实安装了故障安全机制,但其中有漏洞,也无法以UA透过软体的所有方式来进行检测。”
在此特别说明,以上所说的“程式”与智慧型手机或PC上执行的应用程式是一样的,当软体偶尔出现当机状况,我们通常会重新开机;而2005年份的Camry L4有安装一系列程式,但因为这些程式都意味着永远执行,其中一项若当机就可能造成恐怖的后果。
在被问到是否能将丰田汽车暴衝事件塬因与某个软体程式的当机直接连结时,Barr的回答是:“应该是某应用程式的当机与其他程式当机的组合造成,”他说,该系统有数十种程式以及至少1,600万种不同的当机方式,专家小组虽然能证实某一种软体故障方式可能造成车辆暴衝,但还有其他许多种故障形式也可能造成同样的结果。
Barr 表示,专家们在实验中只研究了那数十种程式当机的模式的一半,但:“那些都无法被任何故障安全机制所侦测到。”
在奥克拉荷马高速公路事故审讯后,Barr建议NHTSA应该要求丰田确保现有所有车款的安全性,并有需要加强针对软体方面的管理与监督;举例来说,美国联邦航空局(FAA)与联邦食品药物管理局(FDA)都有一些针对负责监管之系统的安全关键软体设计准则(如DO-178),但NHTSA则缺乏这样的规范。
此外Barr也指出,最近NHTSA规定所有美国车辆需安装配备特定功能的黑盒子,但相关规定还是不充足;而他们也发现到丰田车辆的黑盒子会在车辆暴衝时故障,这使得黑盒子根本无法发生作用或是错误纪录。NHTSA应该注意这一点,并针对黑盒子如何收集资料的方式有更详细的规範,不要让黑盒子与引擎控制的电脑有共同故障点。 |
|