Une erreur dans le GPSD ce dimanche fera reculer le temps de 19 ans.

Un problème critique a été identifié dans le package GPSD, qui est utilisé pour extraire des données précises d'heure et de position des appareils GPS, en raison de laquelle l'heure reculera de 24 semaines le 1024 octobre, soit l'heure sera changée à mars 2002. Le problème apparaît dans les versions 3.20 à 3.22 incluses et est résolu dans GPSD 3.23. Tous les utilisateurs de systèmes utilisant GPSD doivent installer les mises à jour immédiatement ou se préparer à un échec.

L'effet de l'erreur peut entraîner des pannes imprévisibles sur divers systèmes, y compris ceux qui n'utilisent pas directement GPSD, puisque cette application est utilisée pour obtenir des données temporelles précises sur certains serveurs NTP utilisés pour la synchronisation de l'heure. Lorsque des décalages horaires se produisent dans les systèmes, des problèmes peuvent survenir avec l'authentification (par exemple, les mots de passe à usage unique, Kerberos et autres mécanismes de vérification d'accès ayant une date d'expiration ne fonctionneront plus), avec la vérification des certificats et avec les calculs qui manipulent les plages de temps ( par exemple, calculer la durée d'une session d'un utilisateur) . GPSD est également disponible sur divers appareils embarqués et mobiles, dont beaucoup ne reçoivent plus de mises à jour du micrologiciel.

Le protocole GPS comprend un compteur hebdomadaire qui compte les semaines depuis le 5 janvier 1980. Le problème est que lors de la diffusion, seuls 10 bits sont alloués à ce compteur, ce qui fait qu'il déborde toutes les 1023 semaines (19.7 ans). Le premier débordement s’est produit en 1999, le deuxième en 2019 et le troisième aura lieu en 2038. Ces événements sont surveillés par les fabricants et des gestionnaires spéciaux sont prévus pour eux. Actuellement, un nouveau format de message GPS (CNAV) a été introduit en parallèle, dans lequel 13 bits sont alloués au compteur (c'est-à-dire qu'un débordement n'est attendu qu'en 2137).

Dans le GPSD, dans la logique d'ajustement de l'apparition d'une seconde supplémentaire (ajoutée pour synchroniser les horloges atomiques de référence mondiales avec l'heure astronomique de la Terre), une erreur a été commise à cause de laquelle le 24 octobre 2021, 1024 sera soustrait prématurément à l'heure astronomique de la Terre. compteur de semaines. Selon l'auteur du code, le décalage aurait dû avoir lieu le 31 décembre 2022, mais la traduction de cette date en nombre de semaines n'a pas été effectuée correctement et en fait le nombre de semaines indiqué sur le chèque est tombé sous octobre 2021. (la valeur indiquée est de 2180 au lieu de 2600). /* Numéro de semaine de contrôle d'intégrité, époque GPS, par rapport aux secondes intercalaires * Ne fonctionne pas bien avec les régressions car les leap_sconds * pourraient provenir du récepteur ou de BUILD_LEAPSECONDS. */ if (0 < session->context->leap_seconds && 19 > session->context->leap_seconds && 2180 < week) { /* suppose que la seconde intercalaire = 19 d'ici le 31 décembre 2022 * donc la semaine > 2180 est bien dans le futur , ne l'autorisez pas */ semaine -= 1024; GPSD_LOG(LOG_WARN, &session->context->errout, "Confusion de la semaine GPS. Semaine %u ajustée pour le saut %d\n", semaine, session->context->leap_seconds); }

Source: opennet.ru

Ajouter un commentaire