請更新您的瀏覽器

您使用的瀏覽器版本較舊,已不再受支援。建議您更新瀏覽器版本,以獲得最佳使用體驗。

科網世代:新千年蟲威脅 2038年全球再死機?

明報

更新於 2024年07月27日17:37 • 發布於 2024年07月27日20:30
(設計圖片,網上圖片)
7月19日受Windows系統癱瘓影響,香港快運當天電子商務系統出現故障,須以人手辦理登機手續。(資料圖片)
1998年香港政府推出「立即處理千年蟲」宣傳影片,促請社會各界重視千年蟲問題,並作出「滅蟲」行動。(影片截圖)

【明報專訊】千禧後總愛把Y2K掛在嘴邊舉一個反向「yeah」手勢,開閃光燈高炒拍照,戴上復古的飾物,走在潮流尖端。跟着潮流走,是否一定好?美國西南航空被認為使用老舊的Windows系統,成功逃過7月19日的藍屏災難。事緣負責Microsoft Windows系統安全的網絡安全公司CrowdStrike的防毒軟件更新出現bug,搞垮了大部分Windows系統,全球電腦大規模死機,航空公司首當其衝,讓網民重提24年前預想會擊潰全世界電腦系統的千年蟲問題(Y2K),近期更興起討論另一「千年蟲」Y2K38……

Y2K38問題源自UNIX系統時間

還有4900多天就到Y2K38發生之日,我們要如面對千年蟲問題時般嚴陣以待嗎?香港中文大學工程學院副院長(外務)兼系統工程與工程管理學系教授、立法會議員黃錦輝卻淡然說Y2K38沒千年蟲問題般嚴重。Y2K38問題指部分電腦軟件或於「協調世界時」(UTC)2038年1月19日3時14分07秒後無法運作,因為大部分電腦作業系統沿用UNIX系統的時間表達方式,運算從1970年1月1日0分0秒開始到現在的秒數,不考慮閏秒。閏秒即協調世界時為確保原子鐘與地球自轉時間相差不超過0.9秒,而加減時間的1秒,惟國際度量衡局於2022年會議上,投票通過最遲於2035年取消閏秒。黃錦輝解釋,電腦操作系統使用4位元組整數(4-byte integer)儲存時間數據,原可儲存大至2的32次方數值,但系統會以最左方位元(bit)記錄正負數,故此只能儲存2的31次方數值,減去最初的0數值,最多可儲存2,147,483,647秒。由1970年1月1日0分0秒起計,那就是2038年1月19日3時14分07秒了,過了這個時間,時間數據就超出可存範圍。屆時電腦出現整數溢出錯誤,無法記錄2038年1月19日3時14分07秒以後的時間戳(timestamp),可能出現的問題包括無法讀取部分在1970 年後建立的文件。這問題可藉轉用更大的位元組整數儲存時間數據來解決。

千年蟲跟全球Windows死機不同

12年前的2012世界末日預言,有人當笑話一則,有人寧可信其有,問人:如果我們平安度過2012年世界末日,你會……?每當出現關於災難的傳聞,人類或三智五猜,或提心吊膽,這突顯人類的渺小。24年前我們面對千年蟲問題亦是如此,回溯至1998年,當時政府推出廣告,呼籲:「電腦千年蟲會喺2000年1月1日侵襲各類型嘅電腦系統,以及電子控制嘅設備,立即行動,殲滅千年蟲」,該宣傳動畫以一隻隻蟲攻擊電腦的畫面作警告。連政府也號召市民滅蟲,可以想像千年蟲一旦發生的嚴重程度。不過黃錦輝說,他當年沒擔心過Y2K問題,也沒事先做預防措施,「一來我工作範疇不在operating system(電腦作業系統),我寫的program(程式)所牽涉的應用與Y2K無太大關係」。

千年蟲果真是一條蟲嗎?黃錦輝簡單解釋,千年蟲問題有點類似平日的軟件系統更新,系統有時會設定某日某分某秒自動升級,這時便有人教路,如果不想自動更新,就更改電子設備的預設時間到系統更新之後幾日「呃部機」,但這方法不適用於解決千年蟲問題,因為當時電腦對時間表達的設計有限制。1999年之前的電腦為節省硬體成本,電腦系統以6個數字儲存年月日的時間數據,年份以兩個數位顯示,即「1999年會寫作99,當時只用0至99記年份,那麼踏入2000年寫為00,但00可代表1900」,當時流傳電腦會出現誤讀問題,造成系統錯誤。黃錦輝記得傳聞說若不處理Y2K問題,「(電腦)好多時間上的東西都無法計算,直接影響金融機構」。當年千年蟲問題並未真正造成大規模的嚴重影響,黃錦輝說這或多虧人們針對Y2K的年份顯示問題作出電腦更新。他說千年蟲問題是電腦邏輯運算出錯,而非作業系統讀取無效或未經許可的主記憶體位址出現的核心(kernel)錯誤,不能與19日發生的全球Microsoft Windows系統死機問題相提並論。

測試百萬次 漏洞或第一百萬零一次出現

那麼Microsoft Windows系統死機是如何發生?這源於CrowdStrike為Windows感應器釋出內容配置(content configuration)更新,以遙距蒐集潛在威脅電腦安全的新型技術數據。CrowdStrike一般以兩種形式發放更新,一種是CrowdStrike感應器附帶的「Sensor Content」,另一種是快速應對安全威脅持續變化的「Rapid Response Content」。是次Windows系統癱瘓源於「Rapid Response Content」通過驗證的數據存在缺陷,讓系統感應器載入問題內容時,存取了超出界限的數據,令Windows系統出現「藍色熒幕錯誤畫面(Blue Screen of Death,BSoD),我們會看到「:( Your PC ran into a problem and needs to restart. We're just collecting error info and then we'll restart for you(你的個人電腦出現問題,需要重新開機,我們正蒐集相關錯誤的資訊,然後我們會為你重啟電腦)」的藍白界面。

何謂存取超出界限的數據?黃錦輝解釋,在電腦科學中,變數(variable)是儲存資料的容器,指針(pointer)則儲存變數的位置,讓電腦直接存取該變數的數據,而變數範圍(scope)劃定了可存取數據的變數邊界,當指針存取超出範圍的數據便是「out of bound(越界)」。黃錦輝稱 「out of bound」是常見的程式異常情况,他每次教學生寫program都叮囑一定要做bounds checking(邊界檢查),檢查變數的值是否處於範圍內。他說一般寫program會除錯(debugging),修正和減少程式錯誤,他未試過因「out of bound」釀成大錯。而預防系統誤讀超出界限的數據其中一個方法是,在內部儲存裝置設定存取權限,讓用戶的電腦跳轉至一個「救急program」,警告用戶不要存取範圍外的記憶體位址,這也好比我們平日瀏覽網站,欲click入網站上其他未知連結時,會彈出的「不安全網站」警示。用遊戲來打個比方,你的角色被設定只能在某個房間活動,但你偏要走到其他房間,觸發該房間裏的機關,令該房間發生爆炸。電腦也是如此,倘讀取設定範圍外其他程式的資料數據,就如「觸碰到不被允許的東西」,令系統故障。既然程式設計師會為程式除錯,為什麼還會出現問題?黃錦輝表示,「一般做testing有個限度,不會無限check,可能試1000次、100萬次都無問題,就覺得OK了」,殊不知那程式漏洞會在第一百萬零一次試驗出現,先前卻未能偵測。

審視現有不足 從錯誤中學習

以往Windows系統出現一些errors(錯誤)時,都可靠重新開機解決,但今次由於CrowdStrike的軟件更新錯誤位於Windows內核檔案中,故「無論怎麼重啟電腦,也只是讀取相同的錯誤數據」。為何這次CrowdStrike事件只有Windows系統受影響,Mac和Linux作業系統則相安無事?黃錦輝說這視乎涉事程式與哪個作業系統耦合(coupling),即它們之間互相聯繫。預防程式錯誤的措施是為系統做備份,甚至開發另一個軟件做backup,他說這雖是老生常談,但「一個軟件冧咗,仲有另一個頂住,做backup永遠都啱」。

回想19日Windows系統崩潰,全球混亂的景象,香港國際機場須人手辦理登機手續、澳洲多間銀行的應用程式異常,英國部分醫院服務因無法調取醫療紀錄而受阻等,人們意識到科技的脆弱。在這電腦系統「互聯互通」的年代,一個系統錯誤足以讓世界癱瘓。但黃錦輝說我們仍要擁抱科技,別因負面的東西而「斬腳趾避沙蟲」,反應從意外中學習如何改進,審視現有電腦系統的不足。

文˙ 姚超雯

{ 美術 } 朱勁培

{ 編輯 } 布偉倫

fb﹕http://www.facebook.com/SundayMingpao

查看原始文章

到府看診遇上貓咪家屬 牙醫笑:全程被緊盯

阿尼尛 Anima

驚蟄驅蟲︱10大草本天然妙方除害蟲 果皮防曱甴 八角辟書蟲

am730

你會吸引什麼樣的對象? 揭開你的愛情原型,愛錯人不如單身一輩子

姊妹淘Babyou
查看更多
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...