Passer au contenu principal
2038 Guide de survie aux bugs : leçons tirées des problèmes de code liés à l'année bissextile
Explications

2038 Guide de survie aux bugs : leçons tirées des problèmes de code liés à l'année bissextile

Découvrez ce qu'est le bug 2038 , pourquoi il est important et comment éviter qu'il ne provoque à l'avenir des pannes de vos systèmes

The 2038 bug refers to a known issue with how millions of systems store and calculate dates and times. Ce bug devrait entraîner des erreurs au niveau des dates et des heures starting January 19, 2038.

Vous vous dites peut-être : « Une date erronée ? » Un mauvais moment ? « Et alors ! » Mais qu’en est-il d’une date erronée dans une base de données bancaire qui programme régulièrement des virements et des paiements ? Ou encore une heure erronée sur un serveur qui entraînerait l'expiration du certificat SSL d'un site web, exposant ainsi les visiteurs à des risques potentiels en matière de sécurité ?

The reality is the 2038 bug isn't the first and won't be the last time date and time calculation issues have affected the systems we use daily.

En effet, l’année 2024 étant une année bissextile, nous pouvons établir de nombreux parallèles entre les problèmes liés à la prise en compte des années bissextiles dans les systèmes et l’année 2038 bug to à venir, ce qui nous aidera à mieux comprendre les causes possibles des erreurs de calcul de la date et de l’heure, ainsi que leur impact potentiel.

Le 2038 bug is n'est pas un scénario hypothétique, mais une menace réelle susceptible d'affecter un large éventail de systèmes, tels que les systèmes et appareils embarqués, les appareils de l'Internet des objets (IoT), les systèmes d'exploitation, les bases de données, les serveurs, les réseaux, les applications et les services web. This post aims to provide a deeper understanding of what the 2038 bug is, including some real-world examples and best practices you can start following today to help prevent significant issues in the not-so-distant future.

First, we'll provide a brief overview of similar problems that can occur when calculating leap years in systems to help set the stage for understanding the more complex 2038 bug and why it matters for device security.

Ce que les années bissextiles peuvent nous apprendre sur les calculs de date et d'heure

En 2024, le monde connaîtra un événement rare : une année bissextile. Cela signifie que le mois de février comptera 29 days instead jours sur 28, ce qui ajoute un jour supplémentaire au calendrier… et un jour non pris en compte dans certains systèmes logiciels et matériels.

Pourquoi donc ? De nombreux systèmes hérités intègrent une logique de traitement des années bissextiles trop simplifiée, ce qui peut conduire les systèmes à passer de manière erronée du 28 février au 1 mars, ce qui peut à son tour entraîner des dysfonctionnements dans les calculs de date et d'heure.

Une règle courante permettant de déterminer si une année est également une année bissextile consiste à vérifier si elle est divisible par quatre. Cependant, il existe d’autres exceptions qui ne sont généralement pas prises en compte dans ce calcul et qui peuvent le rendre erroné : une année doit être divisible par quatre , sauf si l’année est également divisible par 100, et , sauf si elle est également divisible par 400.

Prenons l'exemple du the year 2100 . Comme 2100 est divisible par quatre, certains systèmes peuvent supposer à tort qu'il s'agira d'une année bissextile. En utilisant le reste de la logique de calcul des années bissextiles, nous pouvons déterminer que, bien que 2100 soit divisible par 100, il est et non divisible par 400. Ainsi, le 2100 correspond en réalité à et non à , une année bissextile.

Le fait de sauter un jour tous les quatre ans peut sembler être un détail mineur, mais ce genre de problèmes liés au calcul de la date et de l'heure peut avoir de graves conséquences pour les systèmes et leurs utilisateurs.

Un autre exemple, plus inquiétant, de problèmes liés au calcul de la date et de l'heure est l'événement « 2038 bug » à venir, qui pourrait potentiellement causer de graves problèmes aux ordinateurs et aux appareils. Examinons de plus près en quoi cela consiste et pourquoi il en est ainsi.

Qu'est-ce que le « 2038 bug » ?

Le « 2038 bug », également appelé « bug du millénaire Unix » ou « Y2K38 », est un problème lié à la manière dont certains systèmes stockent et représentent les valeurs de date et d'heure à l'aide d'un nombre appelé « horodatage ».

Un horodatage correspond au nombre de secondes écoulées depuis le 1 janvier 1070, appelé « époque Unix ». Par exemple, the timestamp for January 1, 2024, à 01:00:00 UTC, is 1704070800, ce qui correspond à means 1704070800 secondes écoulées depuis l'époque.

Cependant, certains systèmes utilisent un type de données appelé a signed 32-bit integer to qui stocke l’horodatage dans le système d’exploitation Unix et ses dérivés. A signed 32-bit integer can ne stocke que les nombres compris entre -2147483648 et 2147483647. Cela signifie que l'horodatage le plus élevé que ces systèmes peuvent prendre en charge est 2147483647, ce qui correspond à to January 19, 2038, à l'adresse 03:14:07 UTC. Par la suite, l'horodatage subira un débordement et deviendra un nombre négatif, ce qui entraînera une erreur dans la date et l'heure.

Par exemple, the timestamp for January 20 et 2038 correspondent à 2147483648 en temps Unix. Comme il ne s'agit pas d'un horodatage valide au format Unix, il y aura un débordement et la valeur deviendra -2147483648, ce qui correspond à 13 décembre 1901, à 20:45:52 UTC. C'est le cours the year 2038 bug.

Types de systèmes concernés par le bug 2038

De nombreuses personnes s’attendent à ce que ce bogue entraîne de graves problèmes pour les systèmes qui utilisent des entiers signés de 32 bits pour stocker la date et l’heure, ce qui se traduirait par un comportement incorrect et imprévisible susceptible d’affecter le fonctionnement et la sécurité, notamment sous forme de plantages, d’erreurs et de pertes de données.

Examinons les types de systèmes connus pour utiliser des horodatages basés sur Unix afin de stocker des dates et des heures susceptibles d'être affectées par le bug 2038 :

  • de bases de données : plusieurs types de bases de données, notamment les bases de données relationnelles et NoSQL
  • de programmes en C : programmes en C et autres programmes écrits dans des langages dérivés du C, tels que le C++ et le PHP
  • des systèmes et appareils embarqués : appareils médicaux, systèmes de contrôle industriels destinés à des installations telles que les centrales électriques, les systèmes de transport, les véhicules équipés de systèmes informatiques embarqués assurant la surveillance du contrôle électronique de stabilité et du contrôle de traction, les routeurs, les commutateurs, les capteurs, ainsi que les appareils connectés à l'Internet des objets (IoT) tels que les appareils électroménagers intelligents
  • des systèmes d'exploitation : Windows, Linux et les systèmes d'exploitation basés sur Linux, tels qu'Android et iOS pour les téléphones portables

Exemples récents du bug de l'an 2038

Certains systèmes montrent déjà, de diverses manières, l'impact de la norme 2038 bug in .

Par exemple, les développeurs peuvent utiliser des dates très éloignées dans le futur pour des besoins tels que la planification, l’expiration ou le chiffrement, notamment en utilisant la date « 9999-12-31 » comme valeur de remplacement afin de représenter une période indéfinie ou infinie. Cependant, cette date correspond approximativement à 253402236000 et dépasse largement la valeur maximale du format de temps Unix.

D'autres peuvent utiliser des dates futures supérieures à 2038 à des fins de test ou de simulation, ou pour représenter des événements historiques ou géologiques survenus avant l'ère commune. Dans tous ces cas de figure, l'année 2038 problem can entraîne des résultats erronés, des erreurs et des conclusions peu fiables.

Voici quelques exemples concrets de systèmes qui ont déjà rencontré des problèmes similaires liés à l’ utilisation des horodatages Unix :

  • Panne des serveurs : Sur 13 mai 2006, AOLserver, le serveur web open source d'AOL (s'ouvre dans un nouvel onglet), a subi une panne du fait que le délai d'attente des requêtes à la base de données avait été fixé à 1 milliard de secondes, soit environ 32 years in fois l'avenir.
  • d'une interruption de service imprévue : Un grand détaillant spécialisé a subi une panne matérielle de son réseau VPN (s'ouvre dans un nouvel onglet) due à des défaillances de l'autorité de certification (CA) qui ont entraîné des erreurs lors du calcul de deux dates : « notBefore » (la date avant laquelle la CA n'est pas valide) et « notAfter » (la date d'expiration). En raison de problèmes supplémentaires liés au protocole NTP (Network Time Protocol), l’autorité de certification a estimé que l’heure était de 2037, et comme elle signe des certificats valables pendant dix ans, elle s’est heurtée au problème 2038 lors du calcul des dates d’expiration.
  • Les systèmes tombent en panne : En 2014, le clip de « Gangnam Style » a battu (s'ouvre dans un nouvel onglet) à la fois les records et YouTube lorsqu'il a atteint hit 2 147 483 647 vues, ce nombre de vues correspondant également à la valeur maximale que les systèmes Unix peuvent enregistrer.

Conseils pour éviter la 2038 bug

Corriger la mise à niveau de la version 2038 bug requires , supprimer ou remplacer le type de données « entier signé 32 bits » dans les systèmes et dans tout code avec lequel il interagit, ce qui peut s'avérer coûteux et prendre beaucoup de temps. Toutefois, prendre dès maintenant les mesures préventives suivantes pour mettre à jour vos systèmes, vos applications et vos appareils pourrait faire toute la différence le 19 janvier :

  • L'utilisation d'un format 64 bits pour stocker et représenter les valeurs de date et d'heure permettra d'étendre la plage des valeurs possibles à des milliards d'années.
  • Utilisation de différents formats de date et d'heure pour stocker et représenter des valeurs, telles que le format ISO 8601
  • Tester et auditer l' afin de détecter d'éventuels problèmes liés à la date et à l'heure, dans le but d'identifier le code, les bibliothèques ou les logiciels obsolètes susceptibles d'être vulnérables au bug 2038
  • Mettre à jour et corriger régulièrement le code, les logiciels et les appareils d' afin de garantir leur compatibilité avec les normes et les technologies les plus récentes

De nombreuses entreprises ont déjà pris conscience de la nécessité the year 2038 problem and de prendre des mesures proactives pour mettre à jour their systems to use 64-bit data les types ou les formats alternatifs des horodatages et des valeurs de date. Par exemple, Apple a commencé à intégrer la prise en charge du 64 bits dans macOS à partir de la version 2003 (s'ouvre dans un nouvel onglet), ce qui peut contribuer à garantir que les utilisateurs de Mac ne rencontreront pas issues with dates after January 2038.

Le problème the year 2038 problem be a-t-il été résolu ?

Les années bissextiles 2038 bug and et 2024 nous rappellent que les calculs de date et d'heure ne sont pas anodins, mais constituent des aspects complexes et essentiels du développement de code et de logiciels. La bonne nouvelle, c'est que le the year 2038 problem is n'est pas l'apocalypse inévitable que certains articles laissent entendre, à condition que des mesures proactives soient prises.

By being aware of the potential problems and prioritizing solutions, you can more easily minimize the impact of the 2038 bug and help ensure your systems run smoothly and securely for a long time.

How can you begin addressing the 2038 bug in your environment? Une façon d’y parvenir consiste à obtenir une visibilité complète sur vos actifs et l’état de leurs logiciels. By monitoring and scanning your endpoint devices (opens in a new tab) regularly, you can more easily identify devices running outdated code or software, replace any devices near the end of their life cycles, or update those using 32-bit systems that may be more prone to the 2038 bug.

Étant donné que la modification du type de données et du code permettant de corriger le bug 2038 peut entraîner des erreurs, des problèmes de compatibilité et une baisse des performances, le fait de disposer d’une visibilité en temps réel sur vos appareils peut vous aider à mieux prévenir les vulnérabilités potentielles et les risques liés à la sécurité des terminaux (s’ouvre dans un nouvel onglet).

Découvrez comment la plateforme Tanium est conçue pour simplifier la gestion des terminaux dans le cadre de l’ (s’ouvre dans un nouvel onglet) et propose des fonctionnalités permettant de rationaliser vos efforts tout en donnant plus d’autonomie aux utilisateurs, notamment en automatisant l’application des configurations, en réagissant rapidement aux menaces et en permettant aux collaborateurs de résoudre eux-mêmes les problèmes courants, le tout au sein d’une seule et même solution.

De plus, notre approche de la gestion autonome des terminaux (AEM) de (s'ouvre dans un nouvel onglet) permettra d’intégrer de nouvelles fonctionnalités assistées par l’IA dans la plateforme Tanium XEM afin de fournir des recommandations d’automatisation et des actions intelligentes associées, hautement personnalisables, conçues dans un souci de sûreté, de sécurité et d’évolutivité.