圖片來源@視覺中國

文 | 郭華

01 殺手的誕生

1973年,蘇聯(lián)開始在基輔修建切爾諾貝利核電站,除了滿足烏克蘭的用電需求外,還希望借此向世界展示蘇聯(lián)“和平利用核能”的形象。

差不多同時,加拿大一家造核電站的公司AECL,成立了醫(yī)療部門,開始開發(fā)放射治療儀。

核能有三個主要的應用領域,分別是核武器、核動力、核醫(yī)學。一般來說,后兩者被認為是和平的,且越靠后就越和平。

AECL全稱Atomic Energy of Canada Limited,成立于1952年,由加拿大國家控股,其使命就是和平利用核能,所以AECL開發(fā)放射治療儀似乎天經地義。不過AECL的醫(yī)療部門并不是從頭開始的,他選擇了和法國的CGR公司合作,然后把CGR的兩款老產品進行升級,變成了自己的新產品,分別起名為Therac-6和Therac-20。

這算借腹生子?還是借子生子?都不重要,重要的是孩子已經有了。

可能是這兩款產品讓AECL站穩(wěn)了腳跟,也可能是雙方在市場上產生了分歧,總之因為一些未公開的原因,AECL和CGR的合作在1981年終止。

這年,切爾諾貝利的第三個反應堆建成開始發(fā)電,按照預期,六個反應堆都建成后切爾諾貝利將成為蘇聯(lián)最大的核電站。

AECL的腳步也沒有暫停,他在結束合作的一年后推出了Therac-25。

Therac-25有很多特別之處。

在AECL的產品體系中,后綴表示輻射能量,Therac-6的能量是6MeV,Therac-20是20MeV,Therac-25就是25MeV。所以他的能量是最大的,更大的能量意味著能夠觸達更深的病灶。而且他更先進,因為他能夠完全由軟件進行控制——就像2007年的iPhone、2010年的特斯拉一樣,更發(fā)達的軟件就是先進的表現(xiàn),至少是現(xiàn)今的表象。借助于發(fā)達的軟件,他省去了很多硬件,甚至包括安全鎖,所以他的成本也更低。

更重要的,他是AECL的親兒子。

1983年,加拿大總領事館在美通社新聞中對其進行了隆重發(fā)布,并在隨后交付出了11臺,其中5臺在美國,6臺在加拿大。巧合的是,后來發(fā)生爆炸的切爾諾貝利四號反應堆也是在這年上線的。

輻射的衡量單位是倫琴。

在切爾諾貝利爆炸的反應堆旁站十分鐘,受到輻射量大概是5000倫琴。

Therac-25在事故中給患者施加的劑量是切爾諾貝利的4倍,能夠達到20000倫琴以上,是常規(guī)治療的100倍。

而短期內全身接受1000倫琴的劑量便會致人死亡。

所以說如果切爾諾貝利像一個核彈,那么Therac-25就像一個殺手,披著治病救人的外衣反復作案——在1985-1987年間,他總共制造了6起事故,其中4人死亡,2人重傷。

02  失控的核能

Therac-25系列事故的本質就是AECL的失控——他的軟件無法控制他的硬件,他也控制不了他的軟件,而他的軟件和硬件一起,又正在控制著核輻射。

1985年6月,美國佐治亞州的肯尼斯通腫瘤中心,第一起。

這是一次胸部腫瘤的常規(guī)放射治療,射線強度預期200倫琴,照射位置為前胸,患者是一名61歲女性。但治療開始后不久,患者便感覺到了劇烈的灼燒感,隨后前胸的照射點、后背的貫穿性對應位置都出現(xiàn)了紅腫,這很像輻射傷。醫(yī)生立即停機并聯(lián)系了AECL。

三天后,AECL回了電話,表示過量輻射是不可能的。

患者不認可這個結論,醫(yī)院又給不出其他合理解釋,于是患者便把醫(yī)院和AECL一塊告上了法庭。但AECL始終拒絕承認Therac-25有問題,再加上治療當天Therac-25的打印功能被禁止了,當時的機器參數(shù)并沒有備份,所以該起訴訟最終庭外和解。

患者的胸部被切除,后來經過測算,當時的輻射強度大概在15000倫琴到20000倫琴之間。

這起事故發(fā)生在美國,美國有個FDA(食品藥品監(jiān)督管理局),但Therac-25上市并沒有經過FDA的測試。

FDA的上市認可有兩種,一種是PMA(Pre-market Approval)),一種是510K。PMA需要廠家充分證明該設備的安全性,并通過FDA組織的臨床試驗與實驗室測試。而510K則輕松的多,只要證明該設備與市場上已存在的設備具備等同性即可。

Therac-25上市用的是510K,大概是因為他與Therac-20具有某種意義上的等同性。

實際上不僅FDA沒有對Therac-25進行過獨立測試,AECL也沒有,他在1986年提交給FDA的事故報告里承認了這一點。

AECL表示一直以來所有設備(Therac-6、Therac-20、Therac-25)上的軟件都是一塊進行測試的,沒有單獨對Therac-25進行過完整測試。Therac-25的很多代碼是從Therac-6中移植過來的,大概AECL認為測過Therac-6就相當于測過Therac-25了吧。

另外還需要一提的是,Therac-6的代碼都是法國伙伴CGR編寫的。

后來的事實證明,AECL對這些代碼知之甚少。

1985年7月,加拿大安大略省癌癥基金會,第二起。

和第一起類似,患者在治療過程中感覺到了劇痛和灼燒感,但詭異的是,明明是輻射過量,Therac-25顯示器卻多次報出了“No DOSE delivered (沒有劑量傳輸)”信息。

隨后AECL派了工程師去調查,無法復現(xiàn)錯誤。

但他還是表現(xiàn)出了一副控制了局面的樣子。

他“猜測”問題是由電路故障導致的,然后基于這個猜測,AECL召回Therac-25進行了改造。根據(jù)說明,這次改造可以將安全性提升5個數(shù)量級,也就是原來的10萬倍。

不知道這個數(shù)字是怎么來的,更不知道為什么如此安全,AECL還是在改造說明中建議用戶使用Therac-25時最好進行“目視檢查”。

這起事故的患者三個月后死亡,后來經過測算,當時的輻射強度大概在13000倫琴至17000倫琴之間。

1985年12月,美國雅基瑪谷紀念醫(yī)院,第三起。

這次事故中的Therac-25剛剛經過了AECL的所謂5個數(shù)量級安全性的改造。

和之情的情況類似,先是病人在放療后身體出現(xiàn)了疑似過量輻射的紅斑,于是醫(yī)生聯(lián)系AECL,之后便是AECL的否認三連:先回復不可能,然后表示從沒有出現(xiàn)過類似的情況,最終猜測可能是其它原因。而且這次AECL還附了一個兩頁紙的說明,詳細列舉了Therac-25不可能過量輻射的理由。

醫(yī)生沒有辦法,最終只能在院方的報告中將事故原因歸為未知。

病人沒有死亡,但留下了殘疾和伴隨終生的疼痛。

03 Debug

debug是查找軟件bug的過程,其中的關鍵是復現(xiàn)。

所謂復現(xiàn),是指找到bug發(fā)生的條件,然后模擬這些條件,讓bug重復發(fā)生。前面事故一件件發(fā)生,而AECL始終沒有成功復現(xiàn)過問題。

直到第四起和第五起。

這兩起都發(fā)生在一個地方,前后間隔不過三周,本質就是一次天然復現(xiàn)。

1986年3月,美國東德克斯說腫瘤中心,第四起。

事故的跡象都是一樣的,患者的癥狀也是一樣的,AECL的回復同樣是一樣的:不可能、沒聽說、應該是其它原因。

這次AECL給出的其它原因是漏電,大概因為患者在描述當時的感覺時說像遭受了電擊,并聽到了滋滋聲吧。

和之前一樣,AECL靠著否認三連又一次控制了局面。

但很快,第五起就發(fā)生了。

1986年4月,美國東德克斯說腫瘤中心,第五起。

第五起和第四起發(fā)生在同一個地方,對醫(yī)院和患者來說,這顯然是一種巨大的不幸。但對整個事件來說,這卻像一種幸運,因為正是如此才讓Therac-25的bug現(xiàn)了原形。

不過復現(xiàn)bug的不是AECL,而是這個醫(yī)院的醫(yī)生。

第五起事故發(fā)生后,他不再相信AECL三周前給出的解釋,開始自己調查事故原因。

他發(fā)現(xiàn)兩次事故中,一個共同點是操作員都修改過處方。

圖1是Therac-25的電腦輸入界面。Therac-25支持兩種射線模式,一種是X射線,一種是電子束,在正常的流程中,操作員依次從左上角輸入到右下角,輸入患者姓名、射線類型、射線能量等參數(shù),最終光標會停到右下角,也就是綠色高亮的位置。

在這兩次事故中,操作員均是在一切都輸入完成后發(fā)現(xiàn)了錯誤:射線類型(BEAM TYPE)一欄應該是E(電子束),但錯誤輸入成了X(X射線)。于是他移動光標對其進行了修改,然后又將光標移回了綠色高亮位置,隨后點擊確認,啟動治療。

圖1 Therac-25的操作界面

但這個操作還不能保證復現(xiàn)問題,經過反復試驗,醫(yī)生找到了其中的關鍵,那就是時間,時間要快。

確切的說,修改要在八秒以內,這樣bug就能穩(wěn)定復現(xiàn)。

然后在醫(yī)生的幫助下,AECL終于找到了Therac-25的bug。

圖2 Therac-25 偽代碼片段

實際上這個bug相當簡單,僅僅是一句放錯了位置的代碼(見圖2),但其隱蔽性要結合Therac-25的操作流程(圖3)來解讀才能顯現(xiàn)出來。

圖3 Therac-25執(zhí)行流程圖

把大象裝冰箱要分三步,用Therac-25進行治療也要分三步:第一步,操作員輸入處方;第二步,Therac-25根據(jù)處方進行機器設置;第三步,開始治療。正常情況下,三步順序執(zhí)行沒有任何問題。

但這兩次事故中操作員修改處方數(shù)據(jù),實際上形成了一種并行。

并行是計算機領域的一個術語,指多件事同時執(zhí)行,很多簡單問題一并行就變的難以理解。

Therac-25的原始射線非常集中,而這對人體危害是很大的,所以Therac-25會在射線路徑上放置一系列磁鐵,來對射線進行分散。

設置磁鐵的偽代碼見圖2。

如果懂一些編程的話,應該可以發(fā)現(xiàn)其標黃的用以清除標記位的指令(注釋3)放錯了位置,應該放在Magnet函數(shù)的循環(huán)外(注釋4)。

不懂編程也沒關系,只需要知道這段代碼有bug,而這個bug會讓Therac-25在調節(jié)磁鐵的時候,忽略操作員對處方進行的修改。

調整磁鐵需要8秒鐘左右,這8秒,便是Therac-25的死亡窗口。

在這兩起事故中,操作員的修改均發(fā)生在這個窗口內,所以修改都沒有生效,也就是說,Therac-25實際執(zhí)行的是X射線模式。

在Therac-25的設計中,X射線模式的能量只有一種,就是系統(tǒng)最大的25MeV,然后用一個射線過濾器來調節(jié)高強度的原始射線,將其減弱到治療所需強度。

只不過這個過濾裝置需要手工放置到照射路徑上,而在這兩次事故中顯然都沒有,因為操作員都以為正在執(zhí)行的是電子束模式!

所以悲劇就這樣發(fā)生了。

患者受到了原始的高強度射線的照射,事故中他們聽到的滋滋聲不是電流聲,而是射線測量器被射線穿透后發(fā)出的聲音,就像把42度量程的體溫計扔到開水里一樣,它已經飽和失效了。

后來經過測算,當時的輻射強度為25000倫琴,是站在爆炸的切爾諾貝利反應堆旁邊十分鐘接受的量的5倍。

兩名患者均在不久后死亡。

04 后知后覺的監(jiān)管

第五次事故發(fā)生后,醫(yī)生把事故和復現(xiàn)事故的詳細步驟告知了AECL。

AECL立即給所有用戶發(fā)了一份聲明,告知Therac-25存在問題,并給出了修改方案:

禁止向上移動光標。

就這么簡單。

然后他又給FDA做了匯報。

這是AECL第一次正式給FDA匯報問題,前面四起事故中,只有第二起(發(fā)生在加拿大)AECL告知了美國的FDA,但只含糊的說Therac-25存在一個需要“目視檢查”的問題,而且他還進行了召回。

不過AECL到底還是晚了一步,在此之前,F(xiàn)DA已經獲得了來自德克薩斯州健康部門的“非法”匯報,并且已經開始調查AECL的問題了。

說“非法”,是因為當時的美國法律只要求醫(yī)療設備的制造商匯報問題,并沒要求醫(yī)院等使用者,所以FDA一直不知道發(fā)生了這么多起事故。實際上當時FDA對醫(yī)院發(fā)生的、因醫(yī)療設備問題而引起的傷亡事故所知不足1%。Therac-25事件后,美國對這條規(guī)則進行了修改,同樣要求使用者向FDA匯報問題。當然這都是后話。

當時FDA很快否定了AECL那個禁止向上移動光標的用戶聲明,并要求他按照《健康與安全輻射控制法》的規(guī)定進行整改,具體包括:通知所有購買者、調查問題、確定解決方案、提交對應的改進計劃。

這時時間是1986年4月,驚世駭俗的切爾諾貝利大爆炸也發(fā)生在這一個月。

1986年5月,F(xiàn)DA再次要求AECL重新通知用戶,詳細說明問題,并提交改進計劃。

這時Therac-25的用戶也坐不住了,他們聯(lián)合起來,舉辦了第一屆Therac-25用戶大會。

從某種意義上來說,這很像一種自救:事故在不斷發(fā)生,而廠家給出的信息總是令人失望,對問題避重就輕,對改進夸大其詞。作為用戶,他們至少享有知情權。用戶聚在一起,討論了事故的詳細經過,然后開始共同尋找解決方案。AECL也派人參加了會議,他們表示之前沒透露太多信息完全是不想引發(fā)謠言,AECL絕對沒有keep things quite的公司政治。

用戶討論后要求增加硬件鎖。

AECL拒絕了他們,理由是多余。

但他表示自己正在開發(fā)一個能夠把Therac-25的安全性再提升幾個量級的補丁。這個補丁于1986年6月13發(fā)布,叫補丁V1。

不過FDA馬上否定了補丁V1,并要求AECL給出詳細測試計劃。

AECL表示測試計劃很難,但可以再加一個補丁,于是在1986年12月22日發(fā)布了補丁V2。

V2上線后的第25天,第六起事故發(fā)生了。

1987年1月,美國雅基瑪谷紀念醫(yī)院,第六起。

第六起和第三起發(fā)生在同一個地方。

在用戶和FDA的壓力下,AECL很快查明了問題。

簡單來說,這起事故是由另一個bug引起的。和之前的一樣,單從本身看,這個bug本身也不是什么大問題,僅僅是一個字節(jié)使用不當而已,但它們的影響都是致命的。

至此,AECL的信任被消耗的差不多了,哪怕他宣布立即上線之前被否定的硬件鎖,也沒有再讓大家相信Therac-25的安全性。

FDA很快下線了所有的Therac-25。

AECL繼續(xù)孜孜不倦的開發(fā)補丁。1987年7月21日,他發(fā)布了最后一版補丁,第5版,所以叫補丁V5。

但這個補丁并沒有V5起來,后面的日子里,Therac-25江河日下。

1988年,AECL重組了開發(fā)Therac-25的醫(yī)療部門,將其更名為Theratronics,并試圖打包賣給別人,未遂。

1991年,因為Therac-25的問題,F(xiàn)DA禁止了該公司的全部產品線。

2005年,Theratronics公司解散。

Therac-25事件后,F(xiàn)DA開始仔細研究醫(yī)療軟件設備的審查標準,并逐漸發(fā)展成了現(xiàn)行的IEC62304(2006版,國內對應為YY/T0664)。這也是現(xiàn)在醫(yī)療軟件開發(fā)過程管理的基本標準。

05 尾聲

Therac-25其實就是一種機器人。

自機器人被發(fā)明,甚至被幻想出來開始,關于它不聽話了要怎么辦的擔憂就沒有停過。

而且這并不像科幻小說那么遙遠,你肯定聽過自動駕駛的故障,也用過只知道繞圈子息事寧人的智能客服,從廣義上來說,這都是機器對你的碾壓。

給牛頓寫了墓志銘的英國人蒲柏有這么一句詩:

To err is human; to forgive, divine。

犯錯是人性,寬恕是神性。

或許比起等待機器產生自我意識,然后要求它們憑借善良本性,遵循阿西莫夫的機器人三定律來,這會是一個更理性的選擇。

畢竟我們都知道人不能因噎廢食。

參考資料:

1.[Threac-25], https://en.wikipedia.org/wiki/Therac-25
2.[Medical Devices : The Therac-25], Nancy Leveson
3.[ An Investigation of the Therac-25 Accidents],Leveson, Nancy G.; Turner, Clark S
4.[Fatal Dose - Radiation Deaths linked to AECL Computer Errors],http://www.ccnr.org/fatal_dose.html

本文系作者 郭華 授權鈦媒體發(fā)表,并經鈦媒體編輯,轉載請注明出處、作者和本文鏈接。
本內容來源于鈦媒體鈦度號,文章內容僅供參考、交流、學習,不構成投資建議。
想和千萬鈦媒體用戶分享你的新奇觀點和發(fā)現(xiàn),點擊這里投稿 。創(chuàng)業(yè)或融資尋求報道,點擊這里。

敬原創(chuàng),有鈦度,得贊賞

贊賞支持
發(fā)表評論
0 / 300

根據(jù)《網(wǎng)絡安全法》實名制要求,請綁定手機號后發(fā)表評論

登錄后輸入評論內容

快報

更多

18:36

伊朗與巴基斯坦兩國外長通電話,討論地區(qū)局勢

18:35

2025年玩具(不含潮玩)國內市場零售總額達1035.3億元

18:08

全國豬價跌破5元,創(chuàng)歷史新低

18:07

時代天使2025年實現(xiàn)收入3.7億美元,同比增長37.8%

17:57

電魂網(wǎng)絡:擬投資4920萬元取得上海漫魂51%股權

17:51

美國1天超3000場反戰(zhàn)示威

17:28

雀巢12噸巧克力被盜

17:11

伊朗官員表示將“果斷反擊”美軍奪島

17:08

伊朗議長稱武裝部隊“正等著美軍地面行動”,并將“懲罰”其地區(qū)盟友

17:05

三安光電:董事長及總經理擬增持公司股份

16:58

全球多地爆發(fā)示威抗議,民眾高呼“不要戰(zhàn)爭”

16:55

中信證券:配置上建議繼續(xù)堅守中國優(yōu)勢制造業(yè),靜待4月決斷

16:38

美國土安全部資金中斷進入第44天,創(chuàng)美國史上最長政府部分“停擺”紀錄

16:17

北京啟動智能網(wǎng)聯(lián)新能源汽車商業(yè)保險開發(fā)應用,統(tǒng)一適配L2至L4全級別智能網(wǎng)聯(lián)新能源汽車

16:16

恒林股份發(fā)布AI體感工學白皮書,加速布局AI智能家居

16:15

中國國家創(chuàng)新指數(shù)綜合排名世界第9位,較上年提升1位

16:05

朗新科技:2025年歸母凈利潤1.05億元,同比扭虧為盈

16:05

錫業(yè)股份:2025年歸母凈利潤19.66億元,同比增長36.14%

16:04

摩恩電氣:2025年歸母凈利潤1058.2萬元,同比下降40.79%

15:50

宇信科技:2025年歸母凈利潤4.32億元,同比增長13.69%

掃描下載App