更多

    日期格式出事! Exchange Server 爆「千年蟲」?! Microsoft 發佈緊急修正

    Mickey Chan
    Mickey Chan
    愛模擬飛行、希望終有一日回到單車上的宅,眼鏡娘控。座右銘: 1.膽固醇跟美味是成正比的; 2.所有人都可以騙,但絕對不能騙自己; 3.賣掉的貨才是錢,不賣的收藏品不值一文; 4.踩單車,是為了吃更多美食! 5.正義的話語,不一定出自正義之人的口;

    踏入 2022 年,很多企業採用的 Microsoft Exchange Server 爆出「千年蟲」問題,導致電郵系統無法收發信件。 Microsoft 已經發佈緊急修正檔緩解問題。

    據 Windows 的事件日誌紀錄顯示,問題出在 Exchange Server 在 FIP-FS 防惡意軟件掃描引擎的版本與簽名檔作比對時,嘗試儲存日期失敗。原來 Exchange Server 嘗試將日期「 2201010001 ( 2022 年 1 月 1 日 0 時 1 分)」以有正負號的 32-bit 整數( signed int32 )來儲存,不過實際上有正負號的 32-bit 整數的上限是 2,147,483,647 , 2,201,010,001 顯然已超出上限,導到掃描引擎崩潰,導致電郵阻塞在佇列中。這種錯誤,原理上是與千年蟲相似的。

    Microsoft 發現問題後,隨即推出緊急修正。該修正名為「Reset-ScanEngineVersion.ps1.」,需要技術人員在 PowerShell 裡執行有關腳本程式。執行後腳本程式會停止 Microsoft Filtering Management 和 Microsoft Exchange Transport 服務,移除舊的防惡意軟件引擎,並下載新的引擎,然後重啟上一述服務。

    解決 2038 年問題

    今次事件提醒技術人員「 2038 年問題」,該問題主要發生在 Unix 類型電腦系統上。由於 Unix 類系統的日期是以由 1970 年 1 月 1 日起的秒數來計算,同樣是 32-bit 整數,所以上限也是 2,147,483,647 ,將會在 2038 年 1 月 19 日到達上限,如果不加以修正的話,屆時系統時間將會歸零,重新開始計算。

    近十年來,電腦業界已經逐步將系統升級至 64-bit 系統,可望解決有關問題。而今次 Microsoft 所採用的「 2201010001 」標示方法,也是其中一種迴避 2038 年問題的手法,不過就忘了將資料格式轉為「無符號的 32-bit 整數」或直接使用 64-bit 整數。

    您會感興趣的內容

    相關文章