Jump to content

[Update: Fixed] Y22K - Microsoft rings in the New Year by breaking Email Globally. Only solution? Disable Antimalware.

rcmaehl

Update

 

Microsoft issues a fix for Exchange Y2K22 bug that shut down company emails - The Verge

 

Summary

By storing the date as a signed INT in Exchange. Microsoft broke exchange servers globally as the year ticked over to 2022. The only current solution is to disable Antimalware services.

 

Media

Image
 

Quotes

Quote

Microsoft Exchange servers have not been able to properly process the new date, and therefore, can't process mail. The first social report for this rolled in at 1am EST. Microsoft released a bad update, aptly named “220101001”. This was presumably a scheduled patch to allow for processing the new date, but it didn’t go as planned. “ Cannot convert “220101001” to long,” This aligns with reports from Norwegian firm Sopra Steria, who released a detailed synopsis of the cause. Microsoft Exchange servers have stopped processing mail all together because it isn't prepared to handle today’s date. The reason for this is because Microsoft is using a signed int32 for the date and with the new value of 2,201,010,001 is over the max value of the “long” int being 2,147,483,647. The most troubling part of this is the stop-gap solution. In order to resume processing of mail, sysadmins are disabling malware scanning on their exchange servers, leaving their users, and possibly the servers themselves, vulnerable to attack.

 

My thoughts

Well Happy New Year Microsoft. I hate that the solution is to disable the antimalware service, but ideally companies with have additional antimalware and quarantining for their emails. At worst case, it's a holiday, so email can stay down or stay held until a proper patch is released which I'm sure will be any time now... any second...

 

Sources

Neowin

Microsoft Community

PLEASE QUOTE ME IF YOU ARE REPLYING TO ME

Desktop Build: Ryzen 7 2700X @ 4.0GHz, AsRock Fatal1ty X370 Professional Gaming, 48GB Corsair DDR4 @ 3000MHz, RX5700 XT 8GB Sapphire Nitro+, Benq XL2730 1440p 144Hz FS

Retro Build: Intel Pentium III @ 500 MHz, Dell Optiplex G1 Full AT Tower, 768MB SDRAM @ 133MHz, Integrated Graphics, Generic 1024x768 60Hz Monitor


 

Link to comment
Share on other sites

Link to post
Share on other sites

So it's Y2K all over again. 😆

 

I remember reading that Microsoft or a 3rd party knew this was coming. Not necessarily to their e-mail services but that 2022 marked the end of the date counter for how the code worked and that a patch needed to go out. Guess that didn't happen in time.

Link to comment
Share on other sites

Link to post
Share on other sites

36 minutes ago, rcmaehl said:

storing the date as a signed INT in Exchange.

this is an incomprehensibly stupid idea. wouldn't even have been a problem if they used the last two digits for the year rather than the first two.

Don't ask to ask, just ask... please 🤨

sudo chmod -R 000 /*

Link to comment
Share on other sites

Link to post
Share on other sites

2 hours ago, Sauron said:

this is an incomprehensibly stupid idea. wouldn't even have been a problem if they used the last two digits for the year rather than the first two.

Ah yes but in 100 years it would have been so I'm such a smart and diligent coder that I accounted for this problem in 100 years and have already made sure it would never be a problem because my code in 100 years time might be still used, because it such great coder.

 

But FYI they did only use 2 digits for the year, read the post again 🙃

Link to comment
Share on other sites

Link to post
Share on other sites

12 minutes ago, leadeater said:

But FYI they did only use 2 digits for the year, read the post again 

yes, I'm saying that if they had the year as the least significant two digits this wouldn't have happened since the months only go up to 12 😛

 

and it wouldn't have been a problem in 100 years since I'm assuming the century was already being truncated

Don't ask to ask, just ask... please 🤨

sudo chmod -R 000 /*

Link to comment
Share on other sites

Link to post
Share on other sites

9 minutes ago, Sauron said:

yes, I'm saying that if they had the year as the least significant two digits this wouldn't have happened since the months only go up to 12 😛

Oh right, flip the format the other way, lol doh.

 

MMYYDDHHMM

Link to comment
Share on other sites

Link to post
Share on other sites

Microsoft.. not suprised.. or kinda.. its 2am.

Useful threads: PSU Tier List | Motherboard Tier List | Graphics Card Cooling Tier List ❤️

Baby: MPG X570 GAMING PLUS | AMD Ryzen 9 5900x /w PBO | Corsair H150i Pro RGB | ASRock RX 7900 XTX Phantom Gaming OC (3020Mhz & 2650Memory) | Corsair Vengeance RGB PRO 32GB DDR4 (4x8GB) 3600 MHz | Corsair RM1000x |  WD_BLACK SN850 | WD_BLACK SN750 | Samsung EVO 850 | Kingston A400 |  PNY CS900 | Lian Li O11 Dynamic White | Display(s): Samsung Oddesy G7, ASUS TUF GAMING VG27AQZ 27" & MSI G274F

 

I also drive a volvo as one does being norwegian haha, a volvo v70 d3 from 2016.

Reliability was a key thing and its my second car, working pretty well for its 6 years age xD

Link to comment
Share on other sites

Link to post
Share on other sites

6 hours ago, Sauron said:

yes, I'm saying that if they had the year as the least significant two digits this wouldn't have happened since the months only go up to 12 😛

 

and it wouldn't have been a problem in 100 years since I'm assuming the century was already being truncated

I honestly don't get why they were even storing it as an int (and the way they were) in the first place.

 

In regards to why they wouldn't do MMYYDD...is because it messes up the simple if(val < val2) scenario.  Doing YYMMDD allows for a simple comparison to tell if a date is...although really it should have been just stored as time_t...but at the very least they should have just used an unsigned long type [or if negative dates were thought possible signed long].

 

Really glad I'm not working with MS exchange servers anymore (wouldn't like to have to explain this to the boss, who use to always think any downtime was the IT departments fault)

3735928559 - Beware of the dead beef

Link to comment
Share on other sites

Link to post
Share on other sites

Huh, think someone wanted the Apocalypse to happen a bit too early /s

"A high ideal missed by a little, is far better than low ideal that is achievable, yet far less effective"

 

If you think I'm wrong, correct me. If I've offended you in some way tell me what it is and how I can correct it. I want to learn, and along the way one can make mistakes; Being wrong helps you learn what's right.

Link to comment
Share on other sites

Link to post
Share on other sites

In the days of major software issues on servers and shit (log4j for example), this seems pretty insignificant and easy to fix.

 

Grammar and spelling is not indicative of intelligence/knowledge.  Not having the same opinion does not always mean lack of understanding.  

Link to comment
Share on other sites

Link to post
Share on other sites

13 hours ago, rcmaehl said:

By storing the date as a signed INT in Exchange

good lord, who thought this was a good idea?

Spoiler

image.png.6bdd2cae882344678ebb40c814764997.png

 

5 minutes ago, mr moose said:

log4j for example

Oh, log4j was also avoidable. I mean why would a logger even have a feature that would let you access some arbitrary URL... Using LDAP of all things. It is just beyond me

Link to comment
Share on other sites

Link to post
Share on other sites

6 hours ago, wanderingfool2 said:

In regards to why they wouldn't do MMYYDD...is because it messes up the simple if(val < val2) scenario.

sure, but of course this is also the reason you just shouldn't be doing this with a numeric value. you should just have a date type/class and implement the correct comparison operator. it's not like we have had this type of memory constraint since the year 2000.

Don't ask to ask, just ask... please 🤨

sudo chmod -R 000 /*

Link to comment
Share on other sites

Link to post
Share on other sites

I thought something was a bit weird, I work in IT and on the night of New Years I was working and I noticed non of my emails were sending from Outlook.

 

They all suddenly came through in one go today however. 

System Specs:

CPU: Ryzen 7 5800X

GPU: Radeon RX 7900 XT 

RAM: 32GB 3600MHz

HDD: 1TB Sabrent NVMe -  WD 1TB Black - WD 2TB Green -  WD 4TB Blue

MB: Gigabyte  B550 Gaming X- RGB Disabled

PSU: Corsair RM850x 80 Plus Gold

Case: BeQuiet! Silent Base 801 Black

Cooler: Noctua NH-DH15

 

 

 

Link to comment
Share on other sites

Link to post
Share on other sites

2 hours ago, Sauron said:

sure, but of course this is also the reason you just shouldn't be doing this with a numeric value. you should just have a date type/class and implement the correct comparison operator. it's not like we have had this type of memory constraint since the year 2000.

Well like I said, it really should be utilizing time_t if anything.  It doesn't really make sense converting the way they are because they are wasting a ton of numbers.  Given this involves antimalware portion, I don't know how often they call it/pass data through it...if they utilize it a lot using a class and implementing a comparison operator could add too much of a performance hit than using a straight up time_t type (which would be 64 bits on a 64 bit compile)

3735928559 - Beware of the dead beef

Link to comment
Share on other sites

Link to post
Share on other sites

Didn't seem to have affected our Exchange 2010 server.

I guess this depends on the locale the service is running on.

Link to comment
Share on other sites

Link to post
Share on other sites

At a previous job I resisted management’s requests for using Exchange for our mail. They only wanted it for shared calendaring and weren’t interested in alternative solutions. We ended up with a hybrid system where specific mailboxes only were routed to Exchange. 
 

I feel weirdly vindicated by this news item. Enterprise ready my arse. 

Link to comment
Share on other sites

Link to post
Share on other sites

1 hour ago, wanderingfool2 said:

Well like I said, it really should be utilizing time_t if anything.  It doesn't really make sense converting the way they are because they are wasting a ton of numbers.  Given this involves antimalware portion, I don't know how often they call it/pass data through it...if they utilize it a lot using a class and implementing a comparison operator could add too much of a performance hit than using a straight up time_t type (which would be 64 bits on a 64 bit compile)

Ditto on the use of time_t

 

I’ve seen many implementations that use int or long for time stamps, it’s genuinely frustrating. 

Link to comment
Share on other sites

Link to post
Share on other sites

3 hours ago, wanderingfool2 said:

Well like I said, it really should be utilizing time_t if anything.  It doesn't really make sense converting the way they are because they are wasting a ton of numbers.  Given this involves antimalware portion, I don't know how often they call it/pass data through it...if they utilize it a lot using a class and implementing a comparison operator could add too much of a performance hit than using a straight up time_t type (which would be 64 bits on a 64 bit compile)

If you compare the dates one datapoint at a time, at the absolute worst you can take 6x as many comparisons (in cases where only the seconds differ). It's a linear performance hit so it shouldn't be a problem on any remotely modern hardware. Of course a time_t works too if you really can't afford the computational cost for some reason; if it's not user-facing and checked thousands of times per second then it shouldn't be in a human readable format.

Don't ask to ask, just ask... please 🤨

sudo chmod -R 000 /*

Link to comment
Share on other sites

Link to post
Share on other sites

A company I worked for sometime stored dates like this. I always thought it was weird, but I was working with code from the early 2000s, so I thought it was the norm back then. I thought maybe it was an easy way to do date comparisons.

 

I should ask some of my old co-workers if they had issues with this yet.  Lol

 

Link to comment
Share on other sites

Link to post
Share on other sites

Didn't notice any downtime on my side, so I guess I don't use Microsoft's exchange servers. Was still getting emails on outlook on my Android phone and on Thunderbird on PC.

 

Why didn't they just use UINT (double the available numbers, but no negatives... which should be fine for dates).

CPU: AMD Ryzen 3700x / GPU: Asus Radeon RX 6750XT OC 12GB / RAM: Corsair Vengeance LPX 2x8GB DDR4-3200
MOBO: MSI B450m Gaming Plus / NVME: Corsair MP510 240GB / Case: TT Core v21 / PSU: Seasonic 750W / OS: Win 10 Pro

Link to comment
Share on other sites

Link to post
Share on other sites

Update:

Quote

“The problem relates to a date check failure with the change of the new year and is not a failure of the AV engine itself,” Microsoft explains in a post on its Tech Community forum... Microsoft outlines the solution to the problem in its post, requiring administrators to either implement the fix manually or apply an automated script. The post also contains a detailed FAQ, noting that the solution “will take some time” for administrators to implement. And depending on how many emails are stuck in the queue, it may take a while for the messages to land in their intended recipients’ inboxes.

 

PLEASE QUOTE ME IF YOU ARE REPLYING TO ME

Desktop Build: Ryzen 7 2700X @ 4.0GHz, AsRock Fatal1ty X370 Professional Gaming, 48GB Corsair DDR4 @ 3000MHz, RX5700 XT 8GB Sapphire Nitro+, Benq XL2730 1440p 144Hz FS

Retro Build: Intel Pentium III @ 500 MHz, Dell Optiplex G1 Full AT Tower, 768MB SDRAM @ 133MHz, Integrated Graphics, Generic 1024x768 60Hz Monitor


 

Link to comment
Share on other sites

Link to post
Share on other sites

GREAT MORE STUFF THAT I NEED TO WORK ON...... THANKS MICROSHIT AND YOUR SHITTY SOFTWARE,

CPU: AMD Ryzen 5 5600X | CPU Cooler: Stock AMD Cooler | Motherboard: Asus ROG STRIX B550-F GAMING (WI-FI) | RAM: Corsair Vengeance LPX 16 GB (2 x 8 GB) DDR4-3000 CL16 | GPU: Nvidia GTX 1060 6GB Zotac Mini | Case: K280 Case | PSU: Cooler Master B600 Power supply | SSD: 1TB  | HDDs: 1x 250GB & 1x 1TB WD Blue | Monitors: 24" Acer S240HLBID + 24" Samsung  | OS: Win 10 Pro

 

Audio: Behringer Q802USB Xenyx 8 Input Mixer |  U-PHORIA UMC204HD | Behringer XM8500 Dynamic Cardioid Vocal Microphone | Sound Blaster Audigy Fx PCI-E card.

 

Home Lab:  Lenovo ThinkCenter M82 ESXi 6.7 | Lenovo M93 Tiny Exchange 2019 | TP-LINK TL-SG1024D 24-Port Gigabit | Cisco ASA 5506 firewall  | Cisco Catalyst 3750 Gigabit Switch | Cisco 2960C-LL | HP MicroServer G8 NAS | Custom built SCCM Server.

 

 

Link to comment
Share on other sites

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×