软件漏洞可能引发巨大的焦虑、带来诸多不便,并耗费宝贵时间,但值得庆幸的是,它们很少致命。然而,早在1985年,一款名为Therac-25的放射治疗机却开启了它的致命连环事故。其软件中存在一个漏洞,导致了一种致命的竞态条件,致使至少六名不幸的患者接受了超出正常强度100倍的辐射剂量。其中三人因此丧生。

Cover Image

Therac-25推出时,对医疗机构而言颇具吸引力,因为它在一台紧凑的设备中提供了革命性的双重治疗模式。它可用于电子束治疗,以处理浅表组织问题,如皮肤癌。其另一种操作模式是兆伏X射线治疗,利用高电流电子束靶向深部组织问题。你绝不会想混淆这两种模式……

转向纯软件控制

Therac-25带来的一项创新是转向了纯软件控制。早期的机器配备有机电硬件互锁装置,旨在防止此类设备运行期间发生辐射事故。例如,据称Therac-20Therac-25存在相同的软件漏洞,但其硬件会阻止任何不安全的操作条件,即使软件出现故障也是如此。

加州公立大学计算机科学硕士生安妮·玛丽·波雷洛(Anne Marie Porrello)发表的一篇论文详细阐述了在六个已知案例中该漏洞/事故的性质。通常,要让这个致命漏洞显现,Therac-25的操作员会错误地选择了错误的操作模式,并迅速尝试纠正错误。经验丰富的操作员可以非常快地编辑治疗参数,以至于由于输入处理程序和辐射束逻辑之间的“竞态条件”,软件跳过了安全检查。

关键在于,Therac-25改变辐射束模式大约需要8秒钟,而快速的操作员可能在此时间窗口内通过输入操作使软件产生混乱。有记录的首起此类事故发生在1985年6月,最后一起发生在1987年1月Therac-25的制造商AECL在数月内一直拒绝承认其系统存在任何过错,直到1986年春季才升级为全面调查。彼时,美国食品药品监督管理局(FDA)也已介入调查这些事故。

Therac-25的连环事故之后,业界呼吁对所有医疗软件进行形式化验证、严格测试并改进文档记录。Therac-25的问题已成为计算机科学研究中经常被引用的警示案例。


文章标签: #软件漏洞 #医疗事故 #竞态条件 #辐射安全 #Therac25

负责编辑

  菠萝老师先生 

  让你的每一个瞬间都充满意义地生活,因为在生命的尽头,衡量的不是你活了多少年,而是你如何度过这些年。