微軟2022新bug:大量程式設計師連夜加班,只因日期數據溢出

2022-01-26 C語言題庫
蕭簫 發自 凹非寺量子位 報導 | 公眾號 QbitAI

沒想到,2022年的到來,也給微軟帶來了一個新bug。

隨著日期從2021年12月31日跳轉到2022年1月1日,不少使用微軟Exchange的公司發現,自己寫好的新年祝福等郵件,突然發不出去了。

Exchange Server是微軟推出的一套電子郵件服務組件,可用於構建企業、高校或機構的郵件系統。簡單來說,用它不止能構建「郵箱工作群」,還能協調內部工作流等。

這些公司的郵箱伺服器內滯留了大量郵件,有些甚至達到數十萬封,面臨伺服器存儲不下的問題。

目前這個bug已經在Reddit熱度上千,許多人表示「年都沒跨好就在這修bug」:

新年(嗶)快樂!

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

所以到底是怎麼回事?

微軟2022版「千年蟲」

據一位Exchange管理員Joseph Roosen表示,這是一個由於「2022年」的到來而導致的bug。

這個bug的根源,是微軟Exchange上面的郵件過濾管理系統(FIP-FS),採用了一種名叫「yymmddHHMM」的有符號變量(Int32,也就是long)來存儲日期

其中,yymmddHHMM分別指代用兩位來存儲年(years)、月(months)、日(days)、小時(Hours)、分鐘(Minutes)。

這個數據類型存在一個問題:

有符號的Int32最多只能存儲-2147483647到+2147483647的數據。

然而,從2022年1月1日0時開始,「yymmddHHMM」的yy就已經變成了「22」,超過了Int32所能存儲的數據最大範圍:

2147483647

22XXXXXXX

於是,在2022年1月1日這天,所有用Exchange伺服器發郵件的公司,都收到了這樣一條錯誤提醒

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」轉變為long數據類型)

它最初被一位名叫@miketheitguy的推特用戶發現:

由於和「千年蟲」一樣都是日期給計算機帶來的bug,這次bug也被一些Exchange管理員命名為Y2K22

其中,Y2K指的是著名的「千年蟲」問題,由於部分電腦程式只採用兩位十進位數表示年份,在跨世紀時就會出現錯誤的結果;22指的則是2022年。

這個bug在不少Exchange Server版本中都出現了相同的問題,包括2016和2019等。

目前,微軟的Exchange團隊正在緊急修復中。

他們表示,幾天後會發布一個Exchange Server更新,裡面將用一個更大的變量類型來保存日期。

然而在這之前,使用Exchange Server的公司們必須想辦法把郵件發出去。

一些權宜之計

微軟團隊表示,如果有非常緊急的郵件需要發送,需要先關掉Exchange中的FIP-FS功能。

這是個Exchange上的垃圾郵件過濾器,平時會用來掃描郵件中自帶的惡意軟體、或是垃圾郵件。

目前微軟官方也提供了一些禁用或繞過惡意軟體掃描的方法。

然而,這樣操作的後果是公司郵箱「可能收到更多垃圾郵件」。

對此有網友調侃,如果微軟在修復中把有符號變量改成無符號變量,那麼數據的表示範圍就會變成0~4294967295,Exchange郵箱又可以用到2043年了

除此之外,目前Reddit網友還給出了一些其他的解決方案。

例如,有網友發布了一個非官方的自定義腳本,可以將日期回滾到2021年,但他對此表示,一切風險需要使用者自己承擔。

如果還沒想好怎麼解決你的Exchange郵箱系統問題,可以先用上面這些方法試一試。

非官方腳本:
https://blog.markdepalma.com/?p=810

微軟官方答覆:
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

<END>

相關焦點

  • 微軟修復 bug 的神奇?
    純手工打造每一篇開源資訊與技術乾貨,數十萬程式設計師和
  • 我發現VSCode有個bug,微軟工程師凌晨這樣回復...
    不過在找bug和推動修復bug的過程有點意思,「通過一系列嘗試最終定位和復現了bug,並且給這個項目的微軟官方倉庫提了issue,最終在最新版本得到了修復,把這個有趣的過程分享給大家」。「夜已深,起來喝杯水,看了下時間,加班班車快到末班了。」
  • 那些讓程式設計師目瞪口呆的奇葩Bug都有什麼?
    程式設計師一生與bug奮戰,可謂是殺敵無數,見怪不怪了!
  • 大過年的,程式設計師在家改bug…
    分享一份網傳Facebook程式設計師提高工作效率的15個技巧:1,Days always fill up. Only plan for 3-4 hours of real work per day.其實每天只有3-4個小時能專心編碼,充分利用這些時間。2,Work more when you’re in the zone.
  • 緩衝區溢出
    簡單的說,緩衝區就是一塊連續的計算機內存區域,它可以保存相同數據類型的多個實例,如字符數組。而緩衝區溢出則是指當計算機向緩衝區內填充數據位數時超過了緩衝區本身的容量,溢出的數據覆蓋在合法數據上。程序在內存的映射棧區(stack):由編譯器自動分配與釋放,存放為運行時函數分配的局部變量、函數參數、返回數據、返回地址等。其操作類似於數據結構中的棧。堆區(heap):一般由程式設計師自動分配,如果程式設計師沒有釋放,程序結束時可能有OS回收。其分配類似於鍊表。全局區(靜態區static):數據段,程序結束後由系統釋放。
  • 程式設計師遇到BUG的解釋
    很明顯可以看出,構建一個框架就需要許多的基礎 庫,甚至一些JavaScript的插件也需要很多大量的附加文件。有時候這些亂七八糟的東西會很讓人心煩,但是至少它能運行。  4、網上一定有解決辦法  遇到困難時,我的第一反應就是上網查資料,很多程式設計師會在論壇上發布他們的問題,最終這些問題都會被解決並存檔。
  • 讓AI自動修復程序中的bug:微軟亞洲研究院新研究 | 附論文
    幫程式設計師找bug這件事,已經達到了不錯的水平。北京大學、微軟亞洲研究院和中國電子科技大學就一起嘗試著讓AI找bug。微軟亞洲研究院的Lily Sun在微軟官方博客上介紹稱,他們開發的精確狀態系統(Accurate Condition System, ACS),能在人類不加幹預的情況下自動修復軟體系統中的Bug。
  • 微軟承認Win11新Bug!已推送更新修復
    微軟最近承認了Windows 11中的兩個bug,它們可能使應用程式崩潰或使你的整個系統變慢。通過最新的安全更新(KB5008215),微軟已經修復了這兩個已知的問題,強調了這個問題有多嚴重。在其補丁星期二更新的更新日誌中,微軟確認該修復現在適用於所有配置。
  • Linus轉投AMD,裝機配置近3萬元;全球僅10%開發者從不加班;三星手機因鎖屏App閏月bug無限重啟丨架構視點
    本期架構視點:Linus 更新主力開發機配置,15 年來首次從 Intel 轉投 AMD;微軟新品被指剽竊開源項目;三星手機因鎖屏 App 閏月 bug 無限重啟;全球僅 10% 開發者從不加班;騰訊宣布投 5000 億加碼新基建。
  • C語言緩衝區溢出詳解
    電腦程式一般都會使用到一些內存,這些內存或是程序內部使用,或是存放用戶的輸入數據,這樣的內存一般稱作緩衝區。簡單的說,緩衝區就是一塊連續的計算機內存區域,它可以保存相同數據類型的多個實例,如字符數組。而緩衝區溢出則是指當計算機向緩衝區內填充數據位數時超過了緩衝區本身的容量,溢出的數據覆蓋在合法數據上。
  • 程式設計師拒絕「春節」工作被開除!獲賠19.4萬元;抖音回應封殺騰訊系謠言;2020白領年終獎人均7826元;GnuPG曝嚴重Bug
    被開除後,小張申請勞動仲裁,要求公司支付違法解除勞動合同的賠償金 19.4 萬元以及加班工資等費用,獲得支持。對此不認可的公司將小張告上法庭,要求判決公司無需支付該賠償金。經勞動仲裁,小張獲賠 19.4 萬元,公司不服,將小張告上法庭。
  • 只因少打一個字符 「&」,大量谷歌 Chromebook 無法解鎖
    初學編程的程式設計師難免會犯一些低級錯誤,這不難理解。
  • 鐵證如山,難怪bug頻出,程式設計師背鍋了!
    爐石傳說最近的bug有多少?這個真統計不出來。只說我知道的起碼就有這麼幾個:1、凡是進入標準的狂野卡,無論你之前有還是沒有,都不能分解原來就有的卡(非贈送);2、冒險模式因為種種原因直接關閉;3、霜之哀傷亡語不能觸發;4、各種閃退各種崩潰;5、酒館日常打烊,原來是全年無休,現在是看心情隨便休;6、文本bug就不提了。
  • 程式設計師debug三大定律
    很多時候找到bug並不難,但很多時候,真的很難!即使找到了,也通常不容易解決。最糟糕的莫過於,有時候難以驗證是否已解決。值得慶幸的是,大多數的bug都比較簡單。因此,雖然海量的bug填滿了程式設計師的工作時間,但軟體項目仍然能跑。至於能不能按時跑完,那就要看程式設計師的效率了。一個程式設計師,效率的最大因變量,毫無疑問是個人能力。如何提高自己的能力?
  • 每四年就出現一次的bug,兇手竟是他?
    提到閏年有一種bug叫做閏年蟲(leap year bug)接下來進入小N科普時間第一種:沒有設置閏年將2月都默認為只有28現在百度Zune貼吧還有用戶開玩笑調侃微軟四年一度的閏月bug。不過吐槽完bug,還是會大喊「索尼大法好!」
  • visual studio 2022 終於問世了!
    visual studio 2022(vs 2022)是由微軟官方出品的最新版本的開發工具包系列產品。它是一個完整的開發工具集,囊括了整個軟體生命周期中所需要的大部分工具,如UML工具、代碼管控工具、集成開發環境(IDE)等等。vs 2022預覽版已經於2021年6月17日正式推出,這是具有裡程碑意義的,RTM版本將在不久後正式上市。
  • 微軟公布WinServer 2022標準版與數據中心版GVLK KMS激活密鑰
    來源丨經授權轉自 藍點網(ID:landianwx)微軟早些時候宣布即將推出的LSTC長期服務版的新產品,包括 Office LTSC、Windows 10 LSTC 及伺服器系統。其中 Office LTSC 長期服務版目前已經推出測試版 , 有興趣的用戶可以點擊這裡查看藍點網此前發布的安裝教程。
  • Win10發布重要補丁,解決大量系統bug
    加上大量 bug,讓用戶苦不堪言。即便是現在,Windows 10 20H2 和 2004 版本仍然有一些影響體驗的 bug存在。微軟急需解決目前已經存在的 bug,新一年的 bug「留出舞臺」。所以兩天前微軟發布了一個新的補丁 KB4598291。
  • 微軟 Visual Studio 2022 公開預覽版(64 位)發布
    64 位升級附帶 .NET 6目前最好的 IntelliCode微軟表示,Visual Studio 2022 第一個預覽版的主要目的是「測試和調整新 64 位平臺的可擴展性」。新的 Visual Studio 將充分利用你的系統資源,這應該會提高程序的可靠性,特別是在長期使用 Visual Studio 時。切換到 64 位是一個很大的變化,微軟希望開發者利用這個預覽版進行項目工作,發現軟體的任何問題,以便在以後 Visual Studio 的最終版本發布之前向微軟報告,進行修復。
  • 程式設計師連續加班在餐廳淚崩,誰不是每逢上線必通宵!
    電話裡是日常的分享和關懷,但是聊著聊著,他就突然情緒崩潰淚流不止,但又強忍著不讓電話那邊的親人發現…… 小夥子淚崩的原因,是最近連續加班,天天都在凌晨2點結束工作,而小睡3個小時之後,又要起來繼續敲代碼。成年人的世界裡,果然沒有容易二字。