Fejl i GPSD denne søndag oversættes til en tidsændring for 19 år siden

Der er identificeret et kritisk problem i GPSD-pakken, som bruges til at udtrække præcise tids- og positionsdata fra GPS-enheder, hvorfor tiden vil rykke 24 uger tilbage den 1024. oktober, dvs. tidspunktet ændres til marts 2002. Problemet opstår i udgivelser 3.20 til og med 3.22 og er løst i GPSD 3.23. Alle brugere af systemer, der bruger GPSD, skal installere opdateringer med det samme, eller være forberedt på fejl.

Effekten af ​​fejlen kan føre til uforudsigelige fejl på forskellige systemer, inklusive dem, der ikke direkte bruger GPSD, da denne applikation bruges til at opnå nøjagtige tidsdata på nogle NTP-servere, der bruges til tidssynkronisering. Når der opstår tidsforskydninger i systemer, kan der opstå problemer med autentificering (f.eks. vil engangsadgangskoder, Kerberos og andre adgangsbekræftelsesmekanismer, der har en udløbsdato, ikke længere virke), med certifikatbekræftelse og med beregninger, der manipulerer tidsintervaller ( for eksempel beregning af tidspunktet for en brugers session). GPSD er også tilgængelig på en række indlejrede og mobile enheder, hvoraf mange ikke længere modtager firmwareopdateringer.

GPS-protokollen inkluderer en ugetæller, der tæller ugerne siden 5. januar 1980. Problemet er, at der under udsendelsen kun er tildelt 10 bits til denne tæller, hvilket betyder, at den løber over hver 1023. uge (19.7 år). Det første overløb fandt sted i 1999, det andet i 2019, og det tredje vil ske i 2038. Disse hændelser overvåges af fabrikanter, og der stilles særlige handlere til rådighed for dem. I øjeblikket er et nyt GPS-meddelelsesformat (CNAV) blevet introduceret parallelt, hvor 13 bit er allokeret til tælleren (dvs. et overløb forventes først i 2137).

I GPSD, i logikken for justering af udseendet af et ekstra sekund (tilsat for at synkronisere verdens reference atomure med Jordens astronomiske tid), blev der lavet en fejl, som den 24. oktober 2021, vil 1024 blive trukket for tidligt fra ugetæller. Ifølge forfatteren af ​​koden skulle skiftet have fundet sted den 31. december 2022, men oversættelsen af ​​denne dato til antallet af uger blev ikke udført korrekt, og faktisk faldt antallet af uger i kontrollen under oktober 2021 (den angivne værdi er 2180 i stedet for 2600). /* fornuftstjek ugenummer, GPS-epoke, mod springsekunder * Fungerer ikke godt med regressioner, fordi leap_sconds * kunne være fra modtageren eller fra BUILD_LEAPSECONDS. */ if (0 < session->context->leap_seconds && 19 > session->context->leap_seconds && 2180 < week) { /* antag springsekund = 19 inden 31. december 2022 * så uge > 2180 er langt ude i fremtiden , tillad det ikke */ uge -= 1024; GPSD_LOG(LOG_WARN, &session->kontekst->fejl, "GPS-ugeforvirring. Justeret uge %u for spring %d\n", uge, session->kontekst->leap_seconds); }

Kilde: opennet.ru

Tilføj en kommentar