По информации CISA (американского агентства по обеспечению кибербезопасности и безопасности инфраструктуры), 24 октября 2021 года из-за ошибки в исходном коде открытого пакета GPSD (в версиях 3.20-3.22) произойдет сброс при получении точного системного времени из GPS-устройств на март 2002 года. Баг в программе устранен разработчиками в версии 3.23 пакета GPSD.
Ошибка в обработке данных 10 битного счетчика недель может привести к различным коллапсам в работе GPS-устройств у пользователей — их системы и службы станут недоступными или перестанут отвечать. Этот счетчик переполняется каждые 1023 недели. Последний раз это произошло в августе 2019 года. Следующее его переполнение произойдет в 2038 году.
Разработчик модуля timebase.c пакета GPSD внес в код корректировку появления лишней секунды для синхронизации эталонных мировых атомных часов с астрономическим временем Земли. Это событие со сдвигом времени на секунду вперед должно было произойти 31 декабря 2022 года. Однако, программист неверно перевел нужную дату в число недель и внес в текст модуля значение 2180 — это неделя, начинающаяся с 24 октября 2021 года.
/* sanity check week number, GPS epoch, against leap seconds * Does not work well with regressions because the leap_sconds * could be from the receiver, or from BUILD_LEAPSECONDS. */ if (0 < session->context->leap_seconds && 19 > session->context->leap_seconds && 2180 < week) { /* assume leap second = 19 by 31 Dec 2022 * so week > 2180 is way in the future, do not allow it */ week -= 1024; GPSD_LOG(LOG_WARN, &session->context->errout, "GPS week confusion. Adjusted week %u for leap %d\n", week, session->context->leap_seconds); } \
Пакет GPSD используется для работы с GPS-устройствами на различном оборудовании, включая навигаторы, мультикоптеры, мобильные устройства на Android, для которых производители часто не выпускают вовремя обновлений или вообще не поддерживают их через некоторое время.
ссылка на оригинал статьи https://habr.com/ru/articles/585066/
Добавить комментарий