史上導(dǎo)致數(shù)百萬美元損失的10大計算機漏洞 |
來源:聚銘網(wǎng)絡(luò) 發(fā)布時間:2017-01-15 瀏覽次數(shù): |
信息來源:FreeBuf
在此,我們列舉了史上造成數(shù)百萬美元損失的10大著名安全漏洞,一起來看看: 1 阿麗亞娜5型火箭升空爆炸事件阿麗亞娜5型火箭,為歐洲空間局研發(fā)的民用衛(wèi)星一次性運載火箭,名稱來源于神話人物阿麗雅杜妮(Ariadne)的法語拼寫。1996年6月4日,在風(fēng)和日麗的法屬圭亞那太空發(fā)射場,阿麗亞娜5型運載火箭首航,計劃運送4顆太陽風(fēng)觀察衛(wèi)星到預(yù)定軌道。但在點火升空之后的40秒后,在4000米高空,這個價值5億美元的運載系統(tǒng)就發(fā)生了爆炸,瞬間灰飛煙滅化為烏有。 爆炸原因由于火箭某段控制程序直接移植自阿麗亞娜4型火箭,其中一個需要接收64位數(shù)據(jù)的變量為了節(jié)省存儲空間而使用了16位字節(jié),從而在控制過程中產(chǎn)生了整數(shù)溢出,導(dǎo)致導(dǎo)航系統(tǒng)對火箭控制失效,程序進入異常處理模塊,引爆自毀。 2 愛國者反導(dǎo)系統(tǒng)軟件失靈事故1991年2月25日,部署沙特宰赫蘭基地的美軍“愛國者”防空導(dǎo)彈居然沒有發(fā)現(xiàn)伊拉克來襲的“飛毛腿”導(dǎo)彈,導(dǎo)致美軍兵營被炸,28人死亡98人受傷,而事故原因則由于“愛國者”防空導(dǎo)彈系統(tǒng)的一個致命軟件錯誤。該錯誤導(dǎo)致其雷達(dá)探測系統(tǒng)不能有效識別、跟蹤和攔截敵方導(dǎo)彈。 在后來的調(diào)查中發(fā)現(xiàn),由于一個簡單的計算機bug,使基地的愛國者反導(dǎo)彈系統(tǒng)失效,未能在空中攔截飛毛腿導(dǎo)彈。當(dāng)時,負(fù)責(zé)防衛(wèi)該基地的愛國者反導(dǎo)彈系統(tǒng)已經(jīng)連續(xù)工作了100個小時,每工作一個小時,系統(tǒng)內(nèi)的時鐘會有一個微小的毫秒級延遲,這就是這個失效悲劇的根源。愛國者反導(dǎo)彈系統(tǒng)的時鐘寄存器設(shè)計為24位,因而時間的精度也只限于24位的精度。在長時間的工作后,這個微小的精度誤差被漸漸放大。在工作了100小時后,系統(tǒng)時間的延遲是三分之一秒。伊拉克戰(zhàn)爭開始前,美軍專業(yè)人士就對“愛國者”導(dǎo)彈的可靠性持懷疑態(tài)度。但雷神公司卻辯解稱,公司在試射“愛國者”導(dǎo)彈過程中的確發(fā)現(xiàn)存在難以分辨敵我的問題,但已經(jīng)進行了技術(shù)改進。因此,“愛國者”防空導(dǎo)彈倉促投入了實戰(zhàn)。 3 千年蟲問題計算機2000年問題,又叫做“千年蟲”、“電腦千禧年千年蟲問題”或“千年危機”。縮寫為“Y2K”。在90年代末,千年蟲問題是許多專家廣泛討論的話題,它可能引發(fā)飛機碰撞、輪船偏離航向、證券交易所崩盤等問題。 問題原因在于某些使用了計算機程序的智能系統(tǒng)(包括計算機系統(tǒng)、自動控制芯片等)中,由于其中的年份只使用兩位十進制數(shù)來表示,因此當(dāng)系統(tǒng)進行(或涉及到)跨世紀(jì)的日期處理運算時(如多個日期之間的計算或比較等),就會出現(xiàn)錯誤的結(jié)果,進而引發(fā)各種各樣的系統(tǒng)功能紊亂甚至崩潰。如1970年用70表示,1999年用99表示,所以當(dāng)?shù)搅?000年1月1日時,很多采用這種計時方法的系統(tǒng)都錯誤地把日期識別為1900年1月1日。從根本上說千年蟲是一種程序處理日期上的bug(計算機程序故障),而非病毒。 4 PayPal系統(tǒng)錯誤導(dǎo)致的92萬億客戶存款2013年6月悶熱的一天,56歲的美國男子Chris Reynolds吃驚地發(fā)現(xiàn),在PayPal發(fā)給他的對賬單中,他的賬戶余額竟然高達(dá)$92,233,720,368,547,800,接近92萬億美元!這個數(shù)字富可敵國,是當(dāng)時世界首富墨西哥電信大亨Carlos Slim的一百萬倍。不過,經(jīng)PayPal及時核實后,發(fā)現(xiàn)這是個嚴(yán)重的系統(tǒng)Bug。當(dāng)他再次登陸自己的賬戶時,發(fā)現(xiàn)里面只剩下自己原本的100美元。 5 江南Style點擊量超出Youtube播放上限2014年,鳥叔的《江南Style》視頻在Youtube的播放次數(shù)超過了計數(shù)上限,導(dǎo)致谷歌不得不對Youtube進行技術(shù)調(diào)整。Youtube之前的播放計數(shù)上限為32位,即最多為2,147,483,647次觀看量,當(dāng)《江南Style》出現(xiàn)后,點擊量遠(yuǎn)遠(yuǎn)超過該數(shù),谷歌及時調(diào)整播放上限為64位,即9,223,372,036,854,775,808次播放數(shù)。對此,谷歌在其Google+上發(fā)表聲明稱:“我們從未想過一段視頻的觀看量會超過32比特的整數(shù)(=2,147,483,647次觀看量),直到我們遇到了鳥叔”。 6 美F-22軟件錯誤導(dǎo)致系統(tǒng)癱瘓2008年,美國空軍聲稱12架“猛禽”執(zhí)行從夏威夷飛往日本的任務(wù)中,當(dāng)途經(jīng)國際日期變更線的時候,飛機上的全球定位系統(tǒng)都失靈了,多個電腦系統(tǒng)發(fā)生崩潰,多次重啟也均告失敗。飛行員們再也沒有辦法正確辨識戰(zhàn)機的位置、飛行的高度和速度。他們不得不掉頭返航,但是幸運的是,當(dāng)時天氣很好,能見度也非常高,這給“猛禽”加油的KC-135型加油機可以引導(dǎo)它們安全降落,順利地返回位于夏威夷的??房哲娀?。 “猛禽”一到??窓C場,不出幾個小時,問題就真相大白:軟件開發(fā)工程師在電腦系統(tǒng)編碼中犯了一個錯誤,引發(fā)了一系列的問題。當(dāng)時美國空軍退役少將史皮爾德稱:“對于那些“猛禽”戰(zhàn)斗機飛行員來說,他們很幸運,因為如果在實戰(zhàn)中發(fā)生這個問題,他們可能會被擊落。并且這個小小的軟件錯誤,將可能成為扭轉(zhuǎn)整個戰(zhàn)局的關(guān)鍵點,使美國陷入短時不利的戰(zhàn)爭局面”。 7 32位UNIX系統(tǒng)時間編碼機制的2038年問題當(dāng)工程師在上個世紀(jì)七十年代開發(fā)出世界上的第一款UNIX操作系統(tǒng)時,他們做出了一個很隨意的決定,即使用32位簽名整數(shù)(或數(shù)字)來代表時間,整個計時系統(tǒng)的起始時間是1970年1月1日。但這個時間編碼機制存在一個嚴(yán)重的問題,因為32位軟件能夠檢測到的最大秒值為2147483647,對應(yīng)時間為2038年1月19日。也就是說,如果無法解決這個問題,地球上的所有計算機將在那個時刻點將時間計數(shù)“歸零”,重新從1970年1月1日起算起。與千年蟲問題類似。 也就是說所有使用UNIX時間編碼的系統(tǒng)將在2038年發(fā)生溢出錯誤,計時器可能會停止工作,跟時間有關(guān)的所有系統(tǒng)都會亂套。值得慶幸的是,要解決這個問題,從技術(shù)上來說并不困難。我們只要將時鐘系統(tǒng)換成更高位數(shù)的值比如64位就行了,那樣就會得到一個更大的最大值。64位系統(tǒng)只是將這個問題發(fā)生的時間向后推了而已,雖然看似治標(biāo)不治本,但是其時鐘系統(tǒng)的最大計數(shù)值對應(yīng)的時間是2920億年之后!因此這也等于很好地解決了這個難題。 8 軟件競爭條件錯誤引發(fā)的美國大面積停電事故2003年8月14日,酷暑中的美國東北部和加拿大部分地區(qū)發(fā)生大面積停電事故,給當(dāng)?shù)亟煌?、通信和居民生活造成?yán)重影響。直到16日上午, 紐約市才全部恢復(fù)正常供電。據(jù)電腦專家分析認(rèn)為,停電的直接原因在于電控系統(tǒng)的競爭條件錯誤,其中一個操作的兩個獨立線程在調(diào)用一段相同代碼時,導(dǎo)致輸電系統(tǒng)突然發(fā)生故障。由于沒有適當(dāng)?shù)耐胶腿蒎e機制,線程陷入崩潰,致使輸電系統(tǒng)出現(xiàn)連鎖反應(yīng)。 9 軟件錯誤導(dǎo)致的火星氣候探測者號解體失聯(lián)火星氣候探測者號(Mars ClimateOrbiter)是美國國家航空航天局的火星探測衛(wèi)星,也是火星探測98計劃的一部份,于1999年發(fā)射進入預(yù)定軌道。不幸的是,在運行286天之后,這個價值3億2760萬美元的飛行器失聯(lián)了。失聯(lián)原因在于,探測器的地面控制團隊使用英制單位來發(fā)送導(dǎo)航指令,而探測器的軟件系統(tǒng)使用公制來讀取指令。這一錯誤大大改變了導(dǎo)航控制的路徑。最后探測器進入過低的火星軌道,在過大的火星大氣壓力和摩擦下解體。 10 AT&T9小時長途電話網(wǎng)癱瘓事件90年代,AT&T公司在美國占據(jù)70%的長途通訊量,電話呼叫轉(zhuǎn)發(fā)超過11.5億次,是美國最大的電信通訊公司。然而就在1990年1月15日下午,該公司所有客戶都不能正常撥打長途電話,全國各地的長途電話交換機接連發(fā)生故障,陷入癱瘓。大量技術(shù)團隊參與了事故應(yīng)急與分析,原因令所有人瞠目結(jié)舌。這個Bug是由一個非常簡單的語法錯誤引起:大型交換機軟件中一個C關(guān)鍵字break用法錯誤。最終AT&T工程師重裝了電話交換機以前的軟件版本才得以解決這個問題。但在電話網(wǎng)絡(luò)癱瘓的九個小時里,AT&T公司至少損失6000萬美元,該Bug可以算得上一個昂貴的Bug了。 |