O eroare în GPSD în această duminică va aduce timpul înapoi cu 19 ani.

O problemă critică a fost identificată în pachetul GPSD, care este folosit pentru a extrage date precise de oră și poziție de pe dispozitivele GPS, din cauza căreia timpul se va schimba înapoi cu 24 de săptămâni pe 1024 octombrie, i.e. ora va fi schimbată în martie 2002. Problema apare în versiunile 3.20 până la 3.22 inclusiv și este rezolvată în GPSD 3.23. Toți utilizatorii de sisteme care utilizează GPSD trebuie să instaleze actualizări imediat sau să fie pregătiți pentru eșec.

Efectul erorii poate duce la defecțiuni imprevizibile pe diverse sisteme, inclusiv pe cele care nu folosesc direct GPSD, deoarece această aplicație este folosită pentru a obține date exacte de timp pe unele servere NTP utilizate pentru sincronizarea orei. Când apar schimbări de timp în sisteme, pot apărea probleme cu autentificarea (de exemplu, parolele unice, Kerberos și alte mecanisme de verificare a accesului care au o dată de expirare nu vor mai funcționa), cu verificarea certificatelor și cu calculele care manipulează intervalele de timp ( de exemplu, calcularea timpului sesiunii unui utilizator) . GPSD este disponibil și pe o varietate de dispozitive mobile și încorporate, multe dintre ele nu mai primesc actualizări de firmware.

Protocolul GPS include un numărător de săptămâni care numără săptămânile de la 5 ianuarie 1980. Problema este că în timpul difuzării, pentru acest contor sunt alocați doar 10 biți, ceea ce înseamnă că depășește la fiecare 1023 de săptămâni (19.7 ani). Prima revărsare a avut loc în 1999, a doua în 2019, iar a treia va avea loc în 2038. Aceste evenimente sunt monitorizate de producători și sunt asigurați pentru ei manipulatori speciali. În prezent, a fost introdus în paralel un nou format de mesaj GPS (CNAV), în care sunt alocați 13 biți pentru contor (adică, o depășire este așteptată abia în 2137).

În GPSD, în logica de ajustare a aspectului unei secunde în plus (adăugat pentru a sincroniza ceasurile atomice de referință ale lumii cu ora astronomică a Pământului), a fost făcută o eroare din cauza căreia pe 24 octombrie 2021, 1024 va fi scăzut prematur din contor de saptamani. Potrivit autorului codului, schimbarea ar fi trebuit să aibă loc la 31 decembrie 2022, dar traducerea acestei date în numărul de săptămâni nu a fost efectuată corect și, de fapt, numărul de săptămâni dat în cec a scăzut sub octombrie 2021. (valoarea indicată este 2180 în loc de 2600). /* Numărul săptămânii de verificare a logicii, epoca GPS, împotriva secundelor bisecte * Nu funcționează bine cu regresii deoarece leap_sconds * ar putea fi de la receptor sau de la BUILD_LEAPSECONDS. */ if (0 < session->context->leap_seconds && 19 > session->context->leap_seconds && 2180 < săptămână) { /* presupunem secundă biseclă = 19 până la 31 decembrie 2022 * deci săptămâna > 2180 este mult în viitor , nu-l permite */ saptamana -= 1024; GPSD_LOG(LOG_WARN, &session->context->errout, „Confuzie săptămâna GPS. Ajustat săptămâna %u pentru salt %d\n”, săptămână, sesiune->context->leap_seconds); }

Sursa: opennet.ru

Adauga un comentariu