Een fout in GPSD deze zondag zet de tijd 19 jaar terug.

Er is een kritiek probleem geïdentificeerd in het GPSD-pakket, dat wordt gebruikt om precieze tijd- en positiegegevens uit GPS-apparaten te extraheren, waardoor de tijd op 24 oktober 1024 weken teruggaat, d.w.z. de tijd wordt gewijzigd naar maart 2002. Het probleem komt voor in releases 3.20 tot en met 3.22 en is opgelost in GPSD 3.23. Alle gebruikers van systemen die GPSD gebruiken, moeten updates onmiddellijk installeren of voorbereid zijn op storingen.

Het effect van de fout kan leiden tot onvoorspelbare storingen op verschillende systemen, inclusief systemen die niet rechtstreeks GPSD gebruiken, aangezien deze applicatie wordt gebruikt om nauwkeurige tijdgegevens te verkrijgen op sommige NTP-servers die worden gebruikt voor tijdsynchronisatie. Wanneer er tijdsverschuivingen optreden in systemen, kunnen er problemen ontstaan ​​met authenticatie (bijvoorbeeld eenmalige wachtwoorden, Kerberos en andere toegangsverificatiemechanismen met een vervaldatum werken niet meer), met certificaatverificatie en met berekeningen die tijdsbereiken manipuleren ( bijvoorbeeld het berekenen van de tijd van de sessie van een gebruiker). GPSD is ook beschikbaar op een verscheidenheid aan ingebouwde en mobiele apparaten, waarvan er vele geen firmware-updates meer ontvangen.

Het GPS-protocol bevat een weekteller die de weken sinds 5 januari 1980 telt. Het probleem is dat tijdens het uitzenden slechts 10 bits worden toegewezen aan deze teller, wat betekent dat deze elke 1023 weken (19.7 jaar) overloopt. De eerste overstort vond plaats in 1999, de tweede in 2019 en de derde zal plaatsvinden in 2038. Deze gebeurtenissen worden gemonitord door fabrikanten en er worden speciale handlers voor ingezet. Momenteel is parallel een nieuw GPS-berichtformaat (CNAV) geïntroduceerd, waarin 13 bits zijn toegewezen voor de teller (dat wil zeggen dat er pas in 2137 een overflow wordt verwacht).

In GPSD is er in de logica voor het aanpassen van de verschijning van een extra seconde (toegevoegd om de referentie-atoomklokken van de wereld te synchroniseren met de astronomische tijd van de aarde) een fout gemaakt waardoor op 24 oktober 2021 1024 voortijdig zal worden afgetrokken van de week teller. Volgens de auteur van de code had de verschuiving op 31 december 2022 moeten plaatsvinden, maar is de vertaling van deze datum naar het aantal weken niet correct uitgevoerd en viel het in de cheque opgegeven aantal weken feitelijk onder oktober 2021. (de aangegeven waarde is 2180 in plaats van 2600). /* gezondheidscheck weeknummer, GPS-tijdperk, tegen schrikkelseconden * Werkt niet goed met regressies omdat de schrikkelseconden * afkomstig kunnen zijn van de ontvanger, of van BUILD_LEAPSECONDS. */ if (0 < session->context->leap_seconds && 19 > session->context->leap_seconds && 2180 < week) { /* neem aan dat schrikkelseconde = 19 op 31 december 2022 * dus week > 2180 ligt ver in de toekomst , sta dit niet toe */ week -= 1024; GPSD_LOG(LOG_WARN, &session->context->errout, "GPS-weekverwarring. Week %u aangepast voor sprong %d\n", week, sessie->context->leap_seconds); }

Bron: opennet.ru

Voeg een reactie