Błąd w GPSD w tę niedzielę cofnie czas o 19 lat.

W pakiecie GPSD, który służy do wydobywania precyzyjnych danych o czasie i pozycji z urządzeń GPS, zidentyfikowano krytyczny problem, dzięki któremu 24 października, tj. 1024 października, czas przesunie się o 2002 tygodnie do tyłu. czas zostanie zmieniony na marzec 3.20. Problem pojawia się w wersjach od 3.22 do 3.23 włącznie i został rozwiązany w GPSD XNUMX. Wszyscy użytkownicy systemów korzystających z GPSD muszą natychmiast zainstalować aktualizacje, w przeciwnym razie przygotuj się na awarię.

Skutek błędu może prowadzić do nieprzewidywalnych awarii w różnych systemach, w tym w tych, które nie korzystają bezpośrednio z GPSD, ponieważ ta aplikacja służy do uzyskiwania dokładnych danych czasowych na niektórych serwerach NTP używanych do synchronizacji czasu. Kiedy w systemach występują przesunięcia czasowe, mogą pojawić się problemy z uwierzytelnianiem (na przykład hasła jednorazowe, Kerberos i inne mechanizmy weryfikacji dostępu, które mają datę ważności, nie będą już działać), z weryfikacją certyfikatu i obliczeniami manipulującymi zakresami czasu ( na przykład obliczanie czasu sesji użytkownika). GPSD jest również dostępny na różnych urządzeniach wbudowanych i mobilnych, z których wiele nie otrzymuje już aktualizacji oprogramowania sprzętowego.

Protokół GPS zawiera licznik tygodni, który liczy tygodnie od 5 stycznia 1980 r. Problem w tym, że podczas nadawania na ten licznik przydzielane jest tylko 10 bitów, co oznacza, że ​​przepełnia się on co 1023 tygodnie (19.7 lat). Pierwsze przepełnienie miało miejsce w 1999 r., drugie w 2019 r., a trzecie nastąpi w 2038 r. Zdarzenia te są monitorowane przez producentów i zapewniane są dla nich specjalne procedury obsługi. Obecnie równolegle wprowadzono nowy format wiadomości GPS (CNAV), w którym na licznik przydzielanych jest 13 bitów (czyli przepełnienie spodziewane jest dopiero w 2137).

W GPSD w logice dostosowania wyglądu dodatkowej sekundy (dodanej w celu synchronizacji referencyjnych zegarów atomowych świata z czasem astronomicznym Ziemi) popełniono błąd, przez który 24 października 2021 roku odejmowane zostanie przedwcześnie od czasu 1024 licznik tygodnia. Zdaniem autora kodeksu przesunięcie powinno nastąpić 31 grudnia 2022 r., jednak przeliczenie tej daty na liczbę tygodni nie zostało przeprowadzone prawidłowo i faktycznie podana na czeku liczba tygodni przypadła na październik 2021 r. (wskazana wartość to 2180 zamiast 2600). /* sprawdzenie poprawności numeru tygodnia, epoki GPS, względem sekund przestępnych * Nie działa dobrze w przypadku regresji, ponieważ wartości przestępne * mogą pochodzić z odbiornika lub z BUILD_LEAPSECONDS. */ if (0 < sesja->kontekst->sekundy przestępne && 19 > sesja->kontekst->sekundy przestępne && 2180 < tydzień) { /* załóż, że sekunda przestępna = 19 do 31 grudnia 2022 r. * więc tydzień > 2180 jest odległą przyszłością , nie zezwalaj na to */ tydzień -= 1024; GPSD_LOG(LOG_WARN, &sesja->kontekst->błąd, "Zamieszanie w tygodniu GPS. Skorygowano tydzień %u dla skoku %d\n", tydzień, sesja->kontekst->sekundy przestępne); }

Źródło: opennet.ru

Dodaj komentarz