L'error al GPSD aquest diumenge es tradueix en un canvi d'hora de fa 19 anys

S'ha identificat un problema crític al paquet GPSD, que s'utilitza per extreure dades precises d'hora i posició dels dispositius GPS, a causa del qual el temps es desplaçarà enrere 24 setmanes el 1024 d'octubre, és a dir. l'hora es canviarà al març de 2002. El problema apareix a les versions 3.20 a 3.22 inclusivament i es resol a GPSD 3.23. Tots els usuaris de sistemes que utilitzen GPSD han d'instal·lar les actualitzacions immediatament o estar preparats per fallar.

L'efecte de l'error pot provocar errors impredictibles en diversos sistemes, inclosos els que no utilitzen directament GPSD, ja que aquesta aplicació s'utilitza per obtenir dades d'hora precises en alguns servidors NTP utilitzats per a la sincronització de l'hora. Quan es produeixen canvis de temps als sistemes, poden sorgir problemes amb l'autenticació (per exemple, les contrasenyes d'un sol ús, Kerberos i altres mecanismes de verificació d'accés que tinguin una data de caducitat ja no funcionaran), amb la verificació de certificats i amb càlculs que manipulen intervals de temps ( per exemple, calcular el temps de la sessió d'un usuari). El GPSD també està disponible en una varietat de dispositius mòbils i integrats, molts dels quals ja no reben actualitzacions de microprogramari.

El protocol GPS inclou un comptador de setmanes que compta les setmanes des del 5 de gener de 1980. El problema és que durant l'emissió, només s'assignen 10 bits per a aquest comptador, la qual cosa significa que es desborda cada 1023 setmanes (19.7 anys). El primer desbordament es va produir el 1999, el segon el 2019 i el tercer es produirà el 2038. Aquests esdeveniments són controlats pels fabricants i se'ls proporcionen gestors especials. Actualment, s'ha introduït en paral·lel un nou format de missatge GPS (CNAV), en el qual s'assignen 13 bits per al comptador (és a dir, només s'espera un desbordament el 2137).

En GPSD, en la lògica per ajustar l'aspecte d'un segon addicional (afegit per sincronitzar els rellotges atòmics de referència del món amb l'hora astronòmica de la Terra), es va cometre un error pel qual el 24 d'octubre de 2021, 1024 es restarà prematurament del comptador de setmanes. Segons l'autor del codi, el canvi s'hauria d'haver produït el 31 de desembre de 2022, però la traducció d'aquesta data al nombre de setmanes no es va dur a terme correctament i, de fet, el nombre de setmanes donat al xec va caure per sota de l'octubre de 2021. (el valor indicat és 2180 en lloc de 2600). /* número de setmana de control de cordura, època GPS, contra segons intercalar * No funciona bé amb regressió perquè els salt_sconds * poden ser del receptor o de BUILD_LEAPSECONDS. */ if (0 < session->context->leap_segons && 19 > session->context->leap_segons && 2180 < setmana) { /* suposa un segon intercalador = 19 el 31 de desembre de 2022 * així que la setmana > 2180 és molt en el futur , no ho permetis */ setmana -= 1024; GPSD_LOG(LOG_WARN, &session->context->errout, "Confusió de la setmana GPS. Setmana %u ajustada per al salt %d\n", setmana, sessió->context->segons_bisest); }

Font: opennet.ru

Afegeix comentari