Chyba v GPSD túto nedeľu znamená zmenu času pred 19 rokmi

Kritický problém bol identifikovaný v balíku GPSD, ktorý sa používa na extrahovanie presných údajov o čase a polohe zo zariadení GPS, vďaka čomu sa čas 24. októbra posunie o 1024 týždňov, t.j. čas sa zmení na marec 2002. Problém sa objavuje vo vydaniach 3.20 až 3.22 vrátane a je vyriešený v GPSD 3.23. Všetci používatelia systémov, ktoré používajú GPSD, si musia okamžite nainštalovať aktualizácie alebo byť pripravení na zlyhanie.

Vplyv chyby môže viesť k nepredvídateľným poruchám na rôznych systémoch, vrátane tých, ktoré priamo nepoužívajú GPSD, keďže táto aplikácia sa používa na získanie presných časových údajov na niektorých serveroch NTP používaných na synchronizáciu času. Keď sa v systémoch vyskytnú časové posuny, môžu nastať problémy s autentifikáciou (napríklad jednorazové heslá, Kerberos a iné mechanizmy overovania prístupu, ktoré majú dátum vypršania platnosti), s overovaním certifikátu a s výpočtami, ktoré manipulujú s časovými rozsahmi ( napríklad výpočet času relácie používateľa) . GPSD je k dispozícii aj na rôznych vstavaných a mobilných zariadeniach, z ktorých mnohé už nedostávajú aktualizácie firmvéru.

Protokol GPS obsahuje počítadlo týždňov, ktoré počíta týždne od 5. januára 1980. Problém je v tom, že počas vysielania je pre toto počítadlo pridelených len 10 bitov, čo znamená, že pretečie každých 1023 týždňov (19.7 roka). Prvý prepad nastal v roku 1999, druhý v roku 2019 a tretí v roku 2038. Tieto udalosti sledujú výrobcovia a zabezpečujú ich špeciálne manipulátory. V súčasnosti je paralelne zavedený nový formát správy GPS (CNAV), v ktorom je pre počítadlo alokovaných 13 bitov (t. j. pretečenie sa očakáva až v roku 2137).

V GPSD sa v logike na úpravu vzhľadu sekundy navyše (pridanej na synchronizáciu svetových referenčných atómových hodín s astronomickým časom Zeme) urobila chyba, kvôli ktorej sa 24. októbra 2021 predčasne odpočíta 1024 od počítadlo týždňov. Podľa autora kódexu k posunu malo dôjsť k 31, avšak prepočet tohto dátumu na počet týždňov nebol vykonaný správne a v skutočnosti počet týždňov uvedený v kontrole spadal pod október 2022. (uvedená hodnota je 2021 namiesto 2180). /* Číslo týždňa kontroly zdravého rozumu, epocha GPS, oproti prestupným sekundám * Nefunguje dobre s regresiami, pretože skoky * môžu pochádzať z prijímača alebo z BUILD_LEAPSECONDS. */ if (2600 < relácia->kontext->prestupné_sekundy && 0 > relácia->kontext->prestupné_sekundy && 19 < týždeň) { /* predpokladať prestupnú sekundu = 2180 do 19. decembra 31 * takže týždeň > 2022 je ďaleko v budúcnosti , nedovoľte */ týždeň -= 2180; GPSD_LOG(LOG_WARN, &session->context->chyba, "Zmätok v týždni GPS. Upravený týždeň %u na skok %d\n", týždeň, relácia->kontext->prestupné_sekundy); }

Zdroj: opennet.ru

Pridať komentár