Windows Server včasih skoči stoletje v prihodnost

Matej Huš

18. avg 2023 ob 09:08:00

Na strežnikih, ki jih poganja Windows Server, se lahko sistemski čas nepričakovano spremeni za več mesecev v preteklosti v prihodnost, kar ima često katastrofalne posledice. Napaka ni zelo pogosta, a se je zgodila že številnim administratorjem, ki so bolj ali manj uspešno lovili krivca. To je funkcija Secure Time Seeding (STS), ki jo je Microsoft z dobrimi nameni uvedel leta 2016, a ne deluje pravilno.

STS bi morala zagotavljati točen čas na sistemih, četudi so ugasnjeni in četudi bi se baterije izpraznile. V takih primerih seveda lahko sistem po ponovnem zagonu za uro vpraša dosegljive strežnike s časom, denimo prek protokola NTP. A Microsoft pojasnjuje, da naprava z nepravilnim časom ne more varno komunicirati po omrežju, da bi izvedela točen čas, ki bi ji omogočil varno komunikacijo. To bi se sicer dalo rešiti s kakšno izjemo, a Microsoft se je odločil, da bo problem rešil drugače. V zahtevkih pri šifrirani komunikaciji (SSL handshake) je tudi polje ServerUnixTime, v katerega naj bi tuji strežnik zapisal svoj čas. To vrednost lahko uporabimo.

Odlična zamisel, so dejali pri Microsoftu, saj lahko iz zadostnega števila takšnih zahtevkov izračunamo povprečen čas, ki je zadosti blizu točnega časa. Kako točno algoritem deluje, Microsoft ne razkriva. Nekje pa so ga polomili, saj včasih strežniki čas nastavijo povsem nerazumno. To se ne zgodi vedno, ko dobijo neumne podatke, kar ni tako redko. Implementacija OpenSSL namreč ne dostavlja točnega časa na strežniku, temveč naključne vrednosti. Microsoft je to vedel in upošteval, a nekje se je zalomilo. Razlog ni nujno OpenSSL, saj ni jasno, kakšne vrednosti ure in pod katerimi pogoji povzročijo kaos. A ko ga povzročijo, je ta precej hud. V ekstremnih primerih se je letnica prestavila za več kot stoletje v prihodnosti.

Rešitev je preprosta. Na strežnikih se lahko Secure Time Seeding izklopi z eno potezo v registru. Microsoft sicer vztraja, da funkcije deluje pravilno, a dodaja, da jo lahko kdorkoli izklopi, če mu ne ustreza.