返回档案库

案例库 · 软件与 IT · 技术决策 · 1985

Therac-25 治死了病人——软件取代了硬件安全联锁

Therac-25 放射治疗机在 1985 至 1987 年间给出了致命的辐射过量。原因是软件里的一个竞态条件。至少 3 名病人死亡。

加拿大原子能有限公司 · 1985-06

怎么回事

Therac-25 是加拿大原子能有限公司 (AECL) 制造的一台放射治疗机,用来治疗癌症病人。1985 到 1987 年间,这台机器对至少六名病人给出了大剂量的辐射过量,至少三人死亡。过量是由一个软件竞态条件造成的,它让电子束在没有适当屏蔽到位的情况下发射。

Therac-25 的前辈机型 (Therac-6 和 Therac-20) 有硬件联锁,能防止在没有屏蔽时发射射线。Therac-25 去掉了这些硬件联锁,完全依赖软件检查。当软件失效——由于操作员输入命令太快时出现的一个竞态条件——就没有硬件备份来阻止过量。

这一案例成为软件工程和医疗器械安全领域的里程碑。它证明,纯软件的安全系统对于关乎生命的应用是不够的:硬件联锁必须提供备份。Therac-25 在每一门软件工程课上都被当作典型来讲解,说明为什么安全攸关的系统需要纵深防御。

为什么会这样

  • Therac-25 去掉了硬件联锁,安全完全依赖软件检查。
  • 一个软件竞态条件让电子束在没有适当屏蔽的情况下发射。
  • 至少 3 名病人死于辐射过量;至少 6 人受到影响。
  • 前辈机型有硬件联锁,本可以阻止这些过量。
代价至少 3 人死亡;逾 6 名病人辐射过量灾难级

教训

纯软件的安全不是安全。Therac-25 去掉了硬件联锁,依赖代码。当代码失效,病人和射线之间就再无任何屏障。

后来呢

AECL 被罚款,Therac-25 被召回。这一案例促使 FDA 对医疗器械软件出台了更严格的监管,也成为软件安全工程的基础案例。在每一次关于生命攸关系统纵深防御的讨论中,它都会被引用。

资料来源

发现哪里写错了?告诉我们。

Comments · 0

    登录 后就能评论。

    类似的案例

    这家公司栽倒的地方,别处有人漂亮地解开过。 第二意见 →