Грешка во GPSD оваа недела ќе го врати времето 19 години назад.

Идентификуван е критичен проблем во пакетот GPSD, кој се користи за извлекување на прецизни податоци за времето и положбата од ГПС уредите, поради што времето ќе се врати за 24 недели на 1024 октомври, т.е. времето ќе се смени во март 2002 година. Проблемот се појавува во изданијата 3.20 до 3.22 вклучително и е решен во GPSD 3.23. Сите корисници на системи кои користат GPSD треба веднаш да инсталираат ажурирања или да бидат подготвени за неуспех.

Ефектот на грешката може да доведе до непредвидливи дефекти на различни системи, вклучително и оние кои директно не користат GPSD, бидејќи оваа апликација се користи за добивање точни податоци за времето на некои NTP сервери што се користат за синхронизација на времето. Кога се случуваат временски поместувања во системите, може да се појават проблеми со автентикацијата (на пример, еднократните лозинки, Kerberos и другите механизми за проверка на пристап кои имаат датум на истекување повеќе нема да работат), со верификацијата на сертификатот и со пресметките што манипулираат со временските опсези ( на пример, пресметување на времето на сесијата на корисникот) . GPSD е исто така достапен на различни вградени и мобилни уреди, од кои многу повеќе не добиваат ажурирања на фирмверот.

Протоколот ГПС вклучува бројач за недела што ги брои неделите од 5 јануари 1980 година. Проблемот е што за време на емитувањето се доделуваат само 10 бита за овој бројач, што значи дека се прелева на секои 1023 недели (19.7 години). Првото прелевање се случи во 1999 година, второто во 2019 година, а третото ќе се случи во 2038 година. Овие настани ги следат производителите и за нив се обезбедени специјални ракувачи. Во моментов, паралелно е воведен нов формат на пораки за GPS (CNAV), во кој се распределуваат 13 бита за бројачот (т.е. се очекува прелевање само во 2137 година).

Во GPSD, во логиката за прилагодување на изгледот на дополнителна секунда (додадена за да се синхронизираат светските референтни атомски часовници со астрономското време на Земјата), направена е грешка поради која на 24 октомври 2021 година 1024 година предвреме ќе се одземе од неделен бројач. Според авторот на кодот, смената требало да се случи на 31 декември 2022 година, но преводот на овој датум во бројот на недели не бил правилно извршен и всушност бројот на недели дадени во проверката паднал под октомври 2021 година. (наведената вредност е 2180 наместо 2600). /* Неделен број на проверка на разум, епоха на GPS, против престапни секунди * Не работи добро со регресии бидејќи скокните_сконди * може да бидат од ресиверот или од BUILD_LEAPSECONDS. */ if (0 < session->context->leap_seconds && 19 > session->context->leap_seconds && 2180 < седмица) { /* претпоставиме престапна секунда = 19 до 31 декември 2022 година * така што неделата > 2180 е во иднина , не дозволувај */ недела -= 1024; GPSD_LOG(LOG_WARN, &session->context->errout, "GPS-неделна збунетост. Прилагодена седмица %u за скок %d\n", седмица, сесија->контекст->престапни_секунди); }

Извор: opennet.ru

Додадете коментар