• Aller au contenu
  • Aller au menu
  • Aller à la recherche

CPU ⬜ Carré Petit Utile

CPU

Carré, Petit, Utile : Le programme radio des gens du numérique.
Tous les Jeudi à 11h sur Radio <FMR>

  • Programmes
  • Interviewes
  • Chroniques
  • Chercher
  • Suivez-nous !
  • CPU
  • ⬜
  • Chroniques
  • ›
  • Plantage
  • ›
  • Plantage : Ms Exchange et le bug de l'An 2022 fut !
  • ← précédent
  • ⬜
  • suivant →

Plantage : Ms Exchange et le bug de l'An 2022 fut !

jeudi 20 janvier 2022. Chroniques › Plantage

  • base de donnée
  • bugs
  • logiciel
  • serveur
  • situation de crise

Extrait de l'émission CPU release Ex0181 : lost + found (volume 15 : Il est interdit de danser).

Si je demande à un néophyte de stocker une information dans un système informatique, il cherchera d’abord à stocker du texte. Le texte c’est la façon dont les humains stockent l’information, depuis les tablettes d’argile jusqu’aux murs des cités HLM. Mais en informatique, transformer du texte en 0 et en 1, ça prend de la place, alors autant que possible on utilise des types de variables plus efficaces. Par exemple une variable binaire peut stocker 0 ou 1, vrai ou faux. Si vous n’avez pas d’autre état à gérer, c’est très suffisant.

Mais à vouloir utiliser des variables trop petites on peut perdre de l’information ou manquer de place pour coder la donnée correctement, ce qui a donné lieu a quelques bugs assez connus. Le plus connu est le Bug de l’An 2000, celui qui devait causer la fin de l’Humanité en faisant s’écraser la station Mir sur la Terre. Il était dû au fait que les années étaient stockées sur 2 chiffres, ce qui rendait différenciable l’année 1900 et l’année 2000.

Heureusement le bug fut suffisamment anticipé et patché dans tous les sens à grands renforts de CD-Rom dans la presse (eh oui en 2000, l’ADSL arrivait à peine et les foyers qui avaient Internet étaient connectés en RTC).

Mais ce n’est pas le seul puisque le 1er janvier 2022, les plateformes de filtrage d’Exchange versions 2016 et 2019 ont rencontré un bug qui n’avait été anticipé par les équipes de Microsoft.
Si vous ne savez pas ce qu’est Exchange, c’est tout simplement l’un des logiciels de serveur e-mail (mail exchanger) les plus utilisés dans le monde.

Le bug est aussi discret qu’inévitable, en effet l’antispam d’Exchange stocke les dates en int32 signé, ce qui signifie que la valeur 2 201 010 001 correspondant au 1er janvier 2022 dépasse la valeur maximum possible pour un int32 signé 2 147  483 647.
La solution est de remplacer le type de variable int32 par une variable long capable de stocker des nombres beaucoup plus grands, ce qui est à priori la solution disponible dans les correctifs. [Le choix immédiat a été de passer la définition de date à unit32, c'est à dire à un entier sur 32 bits non signé].

Malheureusement les bugs liés au stockage de variable sont plus courants qu’on ne le pense. Un autre exemple récent est celui de Tous Anti-Covid Vérif, l’application qui sert encore aujourd’hui à vérifier les pass sanitaires. L’application souffre de défauts de conceptions assez évidents, d’autant plus que le code source est ouvert [Euh ? Du code est publié mais pas compilable]. L’un de ses défauts est lié au fait que la vérification de la validité d’un pass sanitaire se faisait en comparant un string, c’est à dire une variable texte à une autre variable texte stockée en dur directement dans le code.

Une telle pratique est déconseillée même aux développeurs débutants, il faut normalement gérer les différents états du pass sanitaire sur une variable de type entier, par exemple 0 pour valide, 1 pour invalide, 2 pour expiré, etc… Ensuite pour chaque état il faut gérer des labels qui viendront afficher un texte dans la langue de l’utilisateur.

Et c’est là que le bât blesse, les variables étaient stockées en dur et en français dans le code (Cocorico !) ce qui provoquait un dysfonctionnement de l’application si le smartphone de l’utilisateur était en anglais par exemple. En scannant un pass valide, l’application renvoie une valeur Invalid sans le e qui ne correspond pas à la valeur Invalide attendue par le programme.
Heureusement le bug a été assez vite corrigé mais il est assez désolant de voir la liberté de circulation de millions de personnes dépendre d’un logiciel codé à la va vite et qui honte à un étudiant en 1ère année de licence informatique.

Et le prochain bug de date c’est pour quand ?
Eh bien figurez-vous que d’ici 2038, tous les systèmes se basant sur les dates POSIX rencontreront le même problème. Les dates POSIX sont codées elles aussi sur 32 bits donc ont cette limite de 2 milliards et des poussières. Le 19 janvier 2038 à 3 h 14 min 8 s UTC, ils afficheront alors 13 décembre 1901 et 20 h 45 min 52 s.

Espérons que les 16 ans qu’ils nous restent soient bien mis à profit.

Texte : Solarus
Photo : Le Dr Anthony Fauci esquissant une réaction à des propos du Pdt Donald Trump lors d'un de ses points sur le Covid en 2020. Capture TV via D.R. via imgflip.com

Pièces jointes

  • 0181-CPU-Plantage-Exchange2022(2O-01-22).mp3

Aucun commentaire

Ajouter un commentaire

Le code HTML est affiché comme du texte et les adresses web sont automatiquement transformées. Votre e-mail ne sera pas affiché.

Menu

Catégories

  • Programmes
  • Interviewes
  • Chroniques
    • Enfant du futur immédiat
    • Ainsi naquit
    • Artefact du passé
    • Feedback
    • Histoire
    • How to
    • La mascotte
    • Le Gourou
    • Lexique
    • Plantage
    • Standard
    • Archéologie du Futur
    • Légende
    • Paillasse du design
  • Hors micro
  • Teaser

Séries

  • Arrière-guichet
  • Au service informatique de Sa Majesté
  • Bio is the new Black
  • Bulletin de santé d´Internet 2017
  • Crie si tu sais…
  • Cryptoparty
  • Elles codent
  • Futurs alternatifs
  • Histoires de la cryptographie
  • Killed By App
  • Langages machine
  • lost and found
  • Made in Japan 日本製
  • Parce que c’est Notre Projet Souverain
  • Quelque chose de totalement différent
  • Radio numérique
  • Read That Funky Manual !
  • Situation critique
  • Webmasters

Toutes les séries

Mots-clés

  • communication
  • communauté
  • design
  • politique
  • infrastructure
  • développement
  • matériel
  • organisation
  • sécurité
  • éducation
  • électronique
  • logiciel
  • standard
  • éthique
  • prototypage
  • humour
  • maker
  • marketing
  • situation de crise
  • vie privée

Tous les mots-clés

Menu extra

Suivez-nous !

  • 🎵 Podcast des émissions
  • 🎧 …pour Android
  • 🎧 …via Apple Podcast
  • 🎧 …via Google Podcast
  • 🎧 …en newsletter
  • Comment faire

Réseaux sociaux

  • Twitter @CPUprogramme
  • @cpu@Mastodon.tetaneutral.net
  • LinkedIn company/cpuprogramme
  • Facebook /programmecpu
  • Nous écrire par e-mail

Développeurs

  • Da Scritch
  • Enflammée
  • Fs0c131y
  • Gabriel
  • Infested Grunt
  • Vicla
  • Solarus
  • Philippe Martorell
  • Megami Yume
  • Chris O'Brien
  • Élise Rigot
  • René Speranza
  • Toute l'équipe

Producteurs

  • Radio <FMR>
  • Silicium
  • Ça Fait Écho
  • Régie publicitaire

Code source (github)

  • CPU-Audio web component
  • Thème Dotclear "CPU-15"
  • CPU podcaster
  • Youtube future playlist

Pages juridiques

  • Documentation du programme
  • Licence de l'émission et des sonores
  • Politique de confidentialité 🍪
  • Mentions légales

Interviewes et chroniques en licence CC-BY-NC ⬜ Émissions © DaScritch et l'équipe pour Radio <FMR> ⬜ Propulsé par Dotclear