
放射線の典型的な単一の治療線量は200 ラドまでです。
1000 rad-致死量。 反抗的な車は、20,000 radの無防備な地球人で考えていました。
ソフトウェア拡張機能の段階的ではあるが調整されていない実装がシステムエラーにつながった場合を考えてください。 史上最悪のソフトウェアバグ。
Therac-25では、ハードウェア保護が削除され、セキュリティ機能がソフトウェアに割り当てられました。
調査が行われた方法、ITシステムの設計者、プログラマー、テスターは、これを防ぐために頭を包み込む必要があります。
キラー
Therac-25-放射線治療装置、カナダ国営機関Atomic Energy of Canada Limitedによって作成された医療用加速器。


主婦の広告。
殺害
1985年6月から1987年1月までに、この装置は6回の過剰線量を引き起こし、一部の患者は数万ラドの線量を受けました。 少なくとも2人が過剰摂取により直接死亡した。
看護師は、その日に「x」を「e」に置き換えたことを思い出しました。 これを十分に速く行うと、ほぼ100%の確率で再照射が行われることが判明しました。

調査

Canada Atomic Energy of Canada Limited(以降AECL)は、Therac-6、Therac-20、Therac-25の3つのバージョンをリリースしました。 6と20は、フランスの会社CGRと共同で生産されました。 パートナーシップはTherac-25の設計前に終了しましたが、両社は以前のモデルの設計とソースコードに引き続きアクセスできました。
Therac-20プログラムコードは、Therac-6コードに基づいていました。 3つのデバイスすべてに、 PDP-11コンピューターがインストールされました。 以前のモデルはスタンドアロンデバイスとして設計されていたため、必要ありませんでした。 放射線治療技術者は、デバイスの操作モードを調整するための回転ダイヤルの位置を含むさまざまなパラメーターを手動で調整しました。

電子モードでは、電子が広い範囲をカバーするように、偏向磁石がビームを分配しました。 X線モードでは、ターゲットは放射線経路上に配置され、電子がターゲットに衝突して、患者に向けられたX線放射線の光子を生成します。 最後に、X線技師が放射線を正確に痛みのある場所に向けることができるように、反射器を加速器の経路に配置することができます。 リフレクターが邪魔になっている場合、電子ビームは開始しませんでした。
Therac-6および20では、ハードウェアロックメカニズムにより、オペレータは危険なことを行うことができませんでした。たとえば、X線ターゲットのない高出力電子ビームを選択することができました。
間違ったモードでアクセラレータをアクティブにしようとすると、ヒューズがトリップし、動作が停止しました。 PDP-11および関連機器は、便宜上統合されています。 技術者はVT-100ターミナルにレシピを入力し、コンピューターはサーボを使用して、回転ディスクとその他のデバイスを自動的に調整します。

病院のスタッフは、コンピューターが人よりも早く調整できることを気に入っていました。 セットアップにかかる時間が短いほど、1日あたりの患者数を増やすことができます。
Therac-25を作る時が来たとき、AECLはコンピューター制御のみを残すことにしました。 彼らは手動制御装置とハードウェアのロック機構を放棄しました。 コンピュータはデバイスの設定を監視する必要があり、誤動作が発生した場合は、マシン全体の電源をオフにする必要がありました。
まあまあ。
Therac-25ソフトウェアには、露出過剰につながる可能性のあるバグが少なくとも4つ見つかりました。
- 入力された数値の分析とターンテーブルの位置の決定の両方に、同じ変数が使用されました。 したがって、ターミナルを介してデータをすばやく入力すると、Therac-25はターンテーブルの誤った位置( 競合状態 )に対処できます。
- 偏向磁石の位置決めには約8秒かかります。 この間に放射のタイプと出力のパラメーターが変更され、カーソルが最終位置に設定された場合、システムは変更を検出しませんでした。
- 放射線の量で割ると、場合によってはゼロで割る誤差が生じ、それに対応して放射線の量が最大限に増加します。
- ブール変数(シングルバイト)を値「true」に設定することは、コマンド「x = x + 1」によって実行されました。 したがって、1/256の確率で、[設定]ボタンを押すと、プログラムはディスクの誤った位置に関する情報をスキップする可能性があります。
潜在的なエラーが特定されました-マルチタスクオペレーティングシステムに同期がありませんでした。
訂正
- 線量測定システムに関連するすべての中断は手順を停止しましたが、一時停止しませんでした。 オペレーターは、すべてのパラメーターを再入力する必要がありました。
- ワンクリックソフトウェアシャットダウンが追加されました。
- ワンクリックで独立したハードウェアシャットダウンを追加しました。
- コード化されたエラーメッセージは意味のあるものに置き換えられ、現在の露出レベルが表示されます。
- 回転ディスクの位置を決定するポテンショメーターが追加されました。
- ディスクやデバイスの他の部分の位置の変更は、オペレーターが特別なペダル(デッドマンスイッチ)を持っている場合にのみ可能になりました。
- X線治療モードでは、電子治療用の偏向磁石は、電子ビームを270°偏向させるように設定されています。
英語の修正の完全なリスト
メーカーは、ソフトウェアとハードウェアは長年にわたってテストされていると述べました。 ただし、トライアル中に、シミュレーターでのテストの最小数でソフトウェアがテストされ、ほとんどの場合システム全体がテストされたことが判明しました。 したがって、単体テストは無視され、統合テストのみが実行されました。
コードまたは箱入り製品を再利用すると、正常に使用できる期間が長くなるため、ソフトウェアのセキュリティが向上するという単純な仮定でした。 コードの再利用は、その設計に独自の特性があるため、新しいシステムのモジュールセキュリティを保証しません。 一から書き直すことで、よりシンプルで透過的なシステムを実現でき、その結果、より安全になります。
この場合、Therac-6およびTherac-20からのプログラムコードの再利用がありました。 Therac-6にはX線療法がまったくありませんでした; Therac-20は機械的ブロッカーを使用しました。
事故の後、Therac-25 FDAは、多くのセキュリティ関連システムの問題、特にソフトウェアに関する態度を変えました。 その結果、FDAは手順、指令、報告システムを改善するプロセスを開始し、それらにソフトウェアを含めました。 このレッスンは、FDAだけでなく、すべての産業安全が重要なシステムにとっても重要でした。
Therac-25関連コンテンツの詳細
- 私の教授はTherac-25事件を調査し、検察の一部でした。 彼に尋ねる質問がありますか?
- Therac-25ソフトウェアを書いたプログラマーの名前は何ですか?
- 致命的な欠陥:追跡コンピューターのバグ
- ナンシー・レブソン、クラーク・S・ターナーTherac-25事故の調査
- ナンシーG.レベソン、 Therac-25事故
- ナンシーG. レベソンセーフウェア:システムの安全性とコンピューター
- FDAの輸液ポンプソフトウェア安全性研究
おわりに
Software Engineering Instituteは、コードの100行ごとに平均1つのバグがあり、ソフトウェアバグが原因で発生するデバイス障害の98%は、適切なレベルのコードテストで簡単に回避できたと述べています。 これを知って、私は「 コードを見てみましょう 」という動きに参加したいと思います。 注目を集めたケースの後に対策がとられたようですが、それでも角速度の原因となる変数で「彼らはゼロに間違いを犯しました」というドリルを実行したくありません。 親愛なるテスター(プログラマー、開発者)があなたの仕事をうまくやってくれます。
UPD
カリフォルニア大学バークレー校:コンピューターサイエンス61A-講義35:Therac-25