Fout in GPSD hierdie Sondag vertaal na 'n tydsverandering van 19 jaar gelede

'n Kritieke probleem is geïdentifiseer in die GPSD-pakket, wat gebruik word om presiese tyd- en posisiedata van GPS-toestelle te onttrek, waardeur die tyd op 24 Oktober 1024 weke terug sal skuif, d.w.s. die tyd sal na Maart 2002 verander word. Die probleem verskyn in vrystellings 3.20 tot en met 3.22 en word opgelos in GPSD 3.23. Alle gebruikers van stelsels wat GPSD gebruik, moet onmiddellik opdaterings installeer, of voorbereid wees op mislukking.

Die effek van die fout kan lei tot onvoorspelbare mislukkings op verskeie stelsels, insluitend dié wat nie direk GPSD gebruik nie, aangesien hierdie toepassing gebruik word om akkurate tyddata te verkry op sommige NTP-bedieners wat vir tydsinchronisasie gebruik word. Wanneer tydverskuiwings in stelsels voorkom, kan probleme met stawing ontstaan ​​(byvoorbeeld, eenmalige wagwoorde, Kerberos en ander toegangsverifikasiemeganismes wat 'n vervaldatum het, sal nie meer werk nie), met sertifikaatverifikasie en met berekeninge wat tydreekse manipuleer ( byvoorbeeld die berekening van die tyd van 'n gebruiker se sessie) . GPSD is ook beskikbaar op 'n verskeidenheid ingeboude en mobiele toestelle, waarvan baie nie meer firmware-opdaterings ontvang nie.

Die GPS-protokol sluit 'n weekteller in wat die weke sedert 5 Januarie 1980 tel. Die probleem is dat tydens uitsaai slegs 10 bisse vir hierdie teller toegeken word, wat beteken dit loop elke 1023 weke (19.7 jaar) oor. Die eerste oorloop het in 1999 plaasgevind, die tweede in 2019 en die derde sal in 2038 plaasvind. Hierdie gebeure word deur vervaardigers gemonitor en spesiale hanteerders word daarvoor voorsien. Tans is 'n nuwe GPS-boodskapformaat (CNAV) parallel ingestel, waarin 13 bisse vir die teller toegeken word (d.w.s. 'n oorloop word eers in 2137 verwag).

In GPSD, in die logika vir die aanpassing van die voorkoms van 'n ekstra sekonde (bygevoeg om die wêreld se verwysingsatoomhorlosies met die Aarde se astronomiese tyd te sinchroniseer), is 'n fout gemaak as gevolg waarvan op 24 Oktober 2021, 1024 voortydig van die week teller. Volgens die skrywer van die kode moes die verskuiwing op 31 Desember 2022 plaasgevind het, maar die vertaling van hierdie datum in die aantal weke is nie korrek uitgevoer nie en in werklikheid het die aantal weke wat in die tjek gegee is onder Oktober 2021 geval. (die waarde aangedui is 2180 in plaas van 2600). /* Gesondheidskontrole weeknommer, GPS-tydperk, teen skrikkelsekondes * Werk nie goed met regressies nie omdat die leap_sconds * van die ontvanger af kan wees, of van BUILD_LEAPSECONDS. */ if (0 < sessie->konteks->leap_seconds && 19 > session->context->leap_seconds && 2180 < week) { /* neem aan skrikkel sekondes = 19 teen 31 Des 2022 * dus week > 2180 is ver in die toekoms , moenie dit toelaat nie */ week -= 1024; GPSD_LOG(LOG_WARN, &sessie->konteks->fout, "GPS week verwarring. Aangepaste week %u vir sprong %d\n", week, sessie->konteks->leap_seconds); }

Bron: opennet.ru

Voeg 'n opmerking