Kļūda GPSD šo svētdien novirzīs laiku atpakaļ par 19 gadiem.

GPSD pakotnē, kas tiek izmantota precīzu laika un atrašanās vietas datu iegūšanai no GPS ierīcēm, konstatēta kritiska problēma, kuras dēļ laiks 24. oktobrī nobīdīsies par 1024 nedēļām atpakaļ, t.i. laiks tiks mainīts uz 2002. gada martu. Problēma parādās laidienos no 3.20 līdz 3.22 (ieskaitot), un tā ir atrisināta GPSD 3.23. Visiem sistēmu lietotājiem, kas izmanto GPSD, ir nekavējoties jāinstalē atjauninājumi vai jābūt gataviem neveiksmei.

Kļūdas sekas var izraisīt neparedzamas atteices dažādās sistēmās, tostarp tajās, kas tieši neizmanto GPSD, jo šī lietojumprogramma tiek izmantota, lai iegūtu precīzus laika datus dažos NTP serveros, ko izmanto laika sinhronizēšanai. Kad sistēmās notiek laika nobīdes, var rasties problēmas ar autentifikāciju (piemēram, vienreizējās paroles, Kerberos un citi piekļuves pārbaudes mehānismi, kuriem ir derīguma termiņš, vairs nedarbosies), ar sertifikātu verifikāciju un aprēķiniem, kas manipulē ar laika diapazoniem ( piemēram, aprēķinot lietotāja sesijas laiku) . GPSD ir pieejams arī dažādās iegultās un mobilajās ierīcēs, no kurām daudzas vairs nesaņem programmaparatūras atjauninājumus.

GPS protokolā ir iekļauts nedēļu skaitītājs, kas skaita nedēļas kopš 5. gada 1980. janvāra. Problēma ir tā, ka apraides laikā šim skaitītājam tiek piešķirti tikai 10 biti, kas nozīmē, ka tas pārplūst ik pēc 1023 nedēļām (19.7 gadi). Pirmā pārplūde notika 1999. gadā, otrā 2019. gadā, bet trešā notiks 2038. gadā. Šos notikumus uzrauga ražotāji, un tiem tiek nodrošināti īpaši apstrādātāji. Šobrīd paralēli ir ieviests jauns GPS ziņojumu formāts (CNAV), kurā skaitītājam atvēlēti 13 biti (t.i., pārpilde gaidāma tikai 2137. gadā).

GPSD papildu sekundes izskata pielāgošanas loģikā (pievienots, lai sinhronizētu pasaules atsauces atompulksteņus ar Zemes astronomisko laiku) tika pieļauta kļūda, kuras dēļ 24. gada 2021. oktobrī priekšlaicīgi tiks atņemti 1024 nedēļas skaitītājs. Pēc koda autora domām, nobīdei vajadzēja notikt 31. gada 2022. decembrī, taču šī datuma tulkošana nedēļu skaitā netika veikta pareizi un faktiski čekā norādītais nedēļu skaits ietilpa 2021. gada oktobrī. (norādītā vērtība ir 2180, nevis 2600). /* Saprāta pārbaudes nedēļas numurs, GPS laikmets, pret lēciena sekundēm * Nedarbojas labi ar regresiju, jo leap_sconds * var būt no uztvērēja vai no BUILD_LEAPSECONDS. */ if (0 < sesija->konteksts->lēciena_sekundes && 19 > sesija->konteksts->lēciena_sekundes && 2180 < nedēļa) { /* pieņemsim, ka lēciena sekunde = 19 līdz 31. gada 2022. decembrim * tātad nedēļa > 2180 ir nākotnē , neatļaut to */ nedēļa -= 1024; GPSD_LOG(LOG_WARN, &session->context->errout, "GPS nedēļas apjukums. Pielāgota nedēļa %u lēcienam %d\n", nedēļa, sesija->konteksts->leap_seconds); }

Avots: opennet.ru

Pievieno komentāru