致命的なバグ。 Figak、figak、Therac-25

プログラムコードは、1985年にマシンを持つ人々を殺し始めました。







放射線の典型的な単一の治療線量は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%の確率で再照射が行われることが判明しました。










調査



AECLに対する訴訟の際、テキサス州検事局は、調査する専門家としてナンシーリブゾン (カリフォルニア大学アーバイン校のコンピューターサイエンス教授)に頼りました。 彼女はコンピューターのセキュリティに大きく貢献しました。 ナンシーとクラークターナーは、Therac-25に関連する資料の収集とイベントの再構築に3年間を費やしました。 ほとんどのセキュリティインシデントでは、情報が不完全で矛盾しており、間違っているため、この結果は重要です。



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つ見つかりました。





潜在的なエラーが特定されました-マルチタスクオペレーティングシステムに同期がありませんでした。



訂正





英語の修正の完全なリスト


[ソース-ナンシーG.レベソン、 Therac-25事故 ]





メーカーは、ソフトウェアとハ​​ードウェアは長年にわたってテストされていると述べました。 ただし、トライアル中に、シミュレーターでのテストの最小数でソフトウェアがテストされ、ほとんどの場合システム全体がテストされたことが判明しました。 したがって、単体テストは無視され、統合テストのみが実行されました。



コードまたは箱入り製品を再利用すると、正常に使用できる期間が長くなるため、ソフトウェアのセキュリティが向上するという単純な仮定でした。 コードの再利用は、その設計に独自の特性があるため、新しいシステムのモジュールセキュリティを保証しません。 一から書き直すことで、よりシンプルで透過的なシステムを実現でき、その結果、より安全になります。



この場合、Therac-6およびTherac-20からのプログラムコードの再利用がありました。 Therac-6にはX線療法がまったくありませんでした; Therac-20は機械的ブロッカーを使用しました。



事故の後、Therac-25 FDAは、多くのセキュリティ関連システムの問題、特にソフトウェアに関する態度を変えました。 その結果、FDAは手順、指令、報告システムを改善するプロセスを開始し、それらにソフトウェアを含めました。 このレッスンは、FDAだけでなく、すべての産業安全が重要なシステムにとっても重要でした。



Therac-25関連コンテンツの詳細





おわりに



Software Engineering Instituteは、コードの100行ごとに平均1つのバグがあり、ソフトウェアバグが原因で発生するデバイス障害の98%は、適切なレベルのコードテストで簡単に回避できたと述べています。 これを知って、私は「 コードを見てみましょう 」という動きに参加したいと思います。 注目を集めたケースの後に対策がとられたようですが、それでも角速度の原因となる変数で「彼らはゼロに間違いを犯しました」というドリルを実行したくありません。 親愛なるテスター(プログラマー、開発者)があなたの仕事をうまくやってくれます。



UPD



カリフォルニア大学バークレー校:コンピューターサイエンス61A-講義35:Therac-25






All Articles