微軟2022新bug:大量程序員連夜加班,只因日期數(shù)據(jù)溢出
蕭簫 發(fā)自 凹非寺
量子位 報(bào)道 | 公眾號(hào) QbitAI
沒想到,2022年的到來,也給微軟帶來了一個(gè)新bug。
隨著日期從2021年12月31日跳轉(zhuǎn)到2022年1月1日,不少使用微軟Exchange的公司發(fā)現(xiàn),自己寫好的新年祝福等郵件,突然發(fā)不出去了。
Exchange Server是微軟推出的一套電子郵件服務(wù)組件,可用于構(gòu)建企業(yè)、高?;驒C(jī)構(gòu)的郵件系統(tǒng)。簡單來說,用它不止能構(gòu)建“郵箱工作群”,還能協(xié)調(diào)內(nèi)部工作流等。
這些公司的郵箱服務(wù)器內(nèi)滯留了大量郵件,有些甚至達(dá)到數(shù)十萬封,面臨服務(wù)器存儲(chǔ)不下的問題。
目前這個(gè)bug已經(jīng)在Reddit熱度上千,許多人表示“年都沒跨好就在這修bug”:

新年(嗶)快樂!

我本來還在度假呢,就給我拉回來處理這個(gè)玩意了……

所以到底是怎么回事?
微軟2022版“千年蟲”
據(jù)一位Exchange管理員Joseph Roosen表示,這是一個(gè)由于“2022年”的到來而導(dǎo)致的bug。
這個(gè)bug的根源,是微軟Exchange上面的郵件過濾管理系統(tǒng)(FIP-FS),采用了一種名叫“yymmddHHMM”的有符號(hào)變量(Int32,也就是long)來存儲(chǔ)日期。

其中,yymmddHHMM分別指代用兩位來存儲(chǔ)年(years)、月(months)、日(days)、小時(shí)(Hours)、分鐘(Minutes)。
這個(gè)數(shù)據(jù)類型存在一個(gè)問題:
有符號(hào)的Int32最多只能存儲(chǔ)-2147483647到+2147483647的數(shù)據(jù)。
然而,從2022年1月1日0時(shí)開始,“yymmddHHMM”的yy就已經(jīng)變成了“22”,超過了Int32所能存儲(chǔ)的數(shù)據(jù)最大范圍:
2147483647
22XXXXXXX
于是,在2022年1月1日這天,所有用Exchange服務(wù)器發(fā)郵件的公司,都收到了這樣一條錯(cuò)誤提醒:
The FIP-FS Scan Process failed initialization. Error: 0x8004005. Error Details: Unspecified Error” or “Error Code: 0x80004005. Error Description: Can’t convert “2201010001” to long.(FIP-FS掃描處理初始化失敗……無法將“2201010001”轉(zhuǎn)變?yōu)閘ong數(shù)據(jù)類型)
它最初被一位名叫@miketheitguy的推特用戶發(fā)現(xiàn):

由于和“千年蟲”一樣都是日期給計(jì)算機(jī)帶來的bug,這次bug也被一些Exchange管理員命名為Y2K22。
其中,Y2K指的是著名的“千年蟲”問題,由于部分計(jì)算機(jī)程序只采用兩位十進(jìn)制數(shù)表示年份,在跨世紀(jì)時(shí)就會(huì)出現(xiàn)錯(cuò)誤的結(jié)果;22指的則是2022年。
這個(gè)bug在不少Exchange Server版本中都出現(xiàn)了相同的問題,包括2016和2019等。

目前,微軟的Exchange團(tuán)隊(duì)正在緊急修復(fù)中。
他們表示,幾天后會(huì)發(fā)布一個(gè)Exchange Server更新,里面將用一個(gè)更大的變量類型來保存日期。

然而在這之前,使用Exchange Server的公司們必須想辦法把郵件發(fā)出去。
一些權(quán)宜之計(jì)
微軟團(tuán)隊(duì)表示,如果有非常緊急的郵件需要發(fā)送,需要先關(guān)掉Exchange中的FIP-FS功能。
這是個(gè)Exchange上的垃圾郵件過濾器,平時(shí)會(huì)用來掃描郵件中自帶的惡意軟件、或是垃圾郵件。
目前微軟官方也提供了一些禁用或繞過惡意軟件掃描的方法。
然而,這樣操作的后果是公司郵箱“可能收到更多垃圾郵件”。
對(duì)此有網(wǎng)友調(diào)侃,如果微軟在修復(fù)中把有符號(hào)變量改成無符號(hào)變量,那么數(shù)據(jù)的表示范圍就會(huì)變成0~4294967295,Exchange郵箱又可以用到2043年了
。

除此之外,目前Reddit網(wǎng)友還給出了一些其他的解決方案。
例如,有網(wǎng)友發(fā)布了一個(gè)非官方的自定義腳本,可以將日期回滾到2021年,但他對(duì)此表示,一切風(fēng)險(xiǎn)需要使用者自己承擔(dān)。
如果還沒想好怎么解決你的Exchange郵箱系統(tǒng)問題,可以先用上面這些方法試一試。

非官方腳本:
https://blog.markdepalma.com/?p=810
微軟官方答復(fù):
https://techcommunity.microsoft.com/t5/exchange-team-blog/email-stuck-in-transport-queues/ba-p/3049447
參考鏈接:
[1]https://www.reddit.com/r/sysadmin/comments/rt91z6/exchange_2019_antimalware_bad_update/
[2]https://www.bleepingcomputer.com/news/microsoft/microsoft-exchange-year-2022-bug-in-fip-fs-breaks-email-delivery/
[3]https://www.neowin.net/news/y2k22-bug-microsoft-rings-in-the-new-year-by-breaking-exchange-servers-all-around-the-world/
[4]https://twitter.com/miketheitguy/status/1477097527593734144

推薦閱讀:
入門:?最全的零基礎(chǔ)學(xué)Python的問題? |?零基礎(chǔ)學(xué)了8個(gè)月的Python??|?實(shí)戰(zhàn)項(xiàng)目?|學(xué)Python就是這條捷徑
干貨:爬取豆瓣短評(píng),電影《后來的我們》?|?38年NBA最佳球員分析?|? ?從萬眾期待到口碑撲街!唐探3令人失望? |?笑看新倚天屠龍記?|?燈謎答題王?|用Python做個(gè)海量小姐姐素描圖?|碟中諜這么火,我用機(jī)器學(xué)習(xí)做個(gè)迷你推薦系統(tǒng)電影
趣味:彈球游戲? |?九宮格? |?漂亮的花?|?兩百行Python《天天酷跑》游戲!
AI:?會(huì)做詩的機(jī)器人?|?給圖片上色?|?預(yù)測(cè)收入?|?碟中諜這么火,我用機(jī)器學(xué)習(xí)做個(gè)迷你推薦系統(tǒng)電影
小工具:?Pdf轉(zhuǎn)Word,輕松搞定表格和水??!?|?一鍵把html網(wǎng)頁保存為pdf!|??再見PDF提取收費(fèi)!?|?用90行代碼打造最強(qiáng)PDF轉(zhuǎn)換器,word、PPT、excel、markdown、html一鍵轉(zhuǎn)換?|?制作一款釘釘?shù)蛢r(jià)機(jī)票提示器!?|60行代碼做了一個(gè)語音壁紙切換器天天看小姐姐!|
年度爆款文案
2).學(xué)Python真香!我用100行代碼做了個(gè)網(wǎng)站,幫人PS旅行圖片,賺個(gè)雞腿吃
9).發(fā)現(xiàn)一個(gè)舔狗福利!這個(gè)Python爬蟲神器太爽了,自動(dòng)下載妹子圖片
點(diǎn)閱讀原文,看200個(gè)Python案例!
