1711585497
2024-03-26 11:41:38
先週は将来について話しました 2038年問題。 でも今日は時間を遡ってみましょう。
1980 年代初頭に、がん治療に革命をもたらすと期待される画期的な医療技術が登場しました。
の セラク-25、コンピュータ制御の放射線治療装置は飛躍的な進歩であり、がんと闘う患者に正確な放射線量を照射できると約束されました。 これは制御された最初の放射線治療装置の 1 つでした 主にソフトウェアによって ハードワイヤードロジックではなく。
病院はこの最先端の装置を熱心に採用し、そのソフトウェアが正確に校正し、計算された線量の高エネルギー放射線を照射して、周囲の健康な組織を傷つけることなくがん細胞を破壊できると信頼しています。 彼らはほとんど知りませんでしたが、Therac-25 のソフトウェアには、精密医療の約束を現実の悪夢に変える致命的なバグが含まれていました。
致命的な欠陥
1985 年から 1987 年にかけて、Therac-25 が安全限界の数百倍も高い放射線レベルで患者に大規模な過剰投与を行う一連の恐ろしい事件が発生しました。 その影響は壊滅的であり、深刻な放射線障害、永久的な障害、および複数の死亡を引き起こしました。
故障 54
この治療は 1986 年にテキサス州東部のがんセンターで始まりました。経験豊富な技術者が放射線治療を準備していましたが、ある程度の訓練と機械の使用により、ほんの数秒で完了します。 最初に間違った放射線モード コードを入力した後、彼女は通常どおりカーソル キーを使用してすぐに軌道を修正しました。 その後、マシンは「誤動作 54」というエラー メッセージを表示しました。 技術者は、通常の使用中に、これらの不明瞭なエラー メッセージを以前に何度も見ていました。 彼女はそれが深刻な問題ではないと考えたので、とにかく治療を続けました。
しかし、これは重要な安全手順を回避していました。 それは、機械の強力な走査磁石が、技術者が入力した新しい放射線設定と同期していないことを意味しました。 その結果、患者は、想定されていた量の16,000倍を超える大量の放射線を浴びることになりました。 チェルノブイリ原発事故と同レベルの放射線被ばくだった。 患者は、まるで熱いコーヒーを注がれたような「焼けつくような衝撃的な」感覚を感じたと語った。 数日後、患者は残念ながらこの曝露による合併症により死亡しました。
根本原因分析
この致命的な欠陥のあるソフトウェアの動作は、最初の「誤動作 54」エラーに対処したのと同じ技術者によって、別の患者の治療中に最終的に再現されました。 悲しいことに、この2人目の患者も大量の放射線の過剰摂取により死亡しました。 病院の物理学者は、この機械の強力な磁石が放射線ビームを制御および成形する方法に根本的な問題があると確信しました。
さまざまなシナリオを試した後、物理学者は最終的に、非常に特殊なシーケンスで最高速度で治療設定を迅速に入力することで、不具合を引き起こすことに成功しました。 驚いたことに、照射された放射線の量は非常に多く、検査装置が測定できる最大量を超えていました。 検出器を再校正したところ、線量が10,000~20,000ラドの範囲にあることが判明した。これは、意図された治療レベルの100倍を超え、致死量を超えている。
ここで何が起こっていたのか: データ入力やキーボード入力処理用のルーチンなど、ソフトウェア内で複数のルーチンが同時に実行されていました。 これらのルーチンは、技術者がコマンドの入力を終了したときを記録する単一の変数を共有していました。
データ入力が完了すると、ビーム校正と磁石の設定フェーズが始まります。 ただし、技術者が特定の一連の素早い編集を行った場合、 8 秒間のマグネット設定ウィンドウの間、共有プログラム変数のため、新しい設定は実際にはハードウェアに適用されません。
ユーザー インターフェイスは、技術者に間違った治療モードを表示し、技術者は一貫性のない機械の状態に気づかずに、致命的な可能性のある治療を確認して開始します。 この競合状態の欠陥は、以前の Therac-20 モデルにも存在していました。 しかし、その古いシステムのハードウェア インターロックにより、欠陥が実際に放射線の過剰摂取を引き起こすのを防ぐことができました。

余波
Therac-25 の動作にこれらの壊滅的な障害を引き起こす競合状態につながるまでには、2 年以上の歳月と複数回の深刻な過剰摂取がかかりました。 その結果、患者が大量の放射線を過剰摂取し、人生が永久に変わってしまうという事件が少なくとも6件発生した。
その後の調査により、特定の競合状態ソフトウェアのバグだけでなく、いくつかの主要な原因が判明しました。 これらには次のものが含まれます。
- メーカー AECL では、独立したコード レビュー、テスト、安全性分析が欠如しており、ソフトウェア開発の慣行が不十分です。 ソフトウェアは によって開発された 身元不明のプログラマー一人 数年かけて
- 過剰摂取は不可能であるという過信と保証がオペレータに与えられ、安全性に関する警告やハードウェアの安全性を軽視する原因となりました。
- 不可解なエラー メッセージ、ハードウェア インターロックの欠如、安全性を検証せずに古いモデルのソフトウェアを再利用するなどのエンジニアリング上の問題。
Malfunction 54 に加えて、人命を奪う可能性のあるバグが他にも多数ありました。 この悲劇は、当時の医療機器ソフトウェアに対する規制監督と品質管理プロセスにおける広範な欠陥を暴露しました。 これにより、以下を含む FDA の規制と安全基準の見直しが促されました。
- 厳密なハザード分析、リスク評価、セーフティクリティカルなコードのプロトコルのテストを義務付けます。
- ソフトウェア設計、開発ライフサイクル、品質保証に関する要件が厳格化。
- 設計履歴ファイルの文書化を通じて、より優れたトレーサビリティを実現します。
このようなソフトウェア プロジェクトに携わっている人は多くありませんが、Therac-25 事件は、適切な開発の厳密さと安全プロセスが守られなかった場合、ソフトウェアのバグが現実世界に壊滅的な結果をもたらす可能性があるという警鐘として機能します。
詳細については、リンクをご覧ください:
#悲劇的な競合状態