Les integer overflow ou wraparound, ou CWE-190 pour les intimes, sont une vulnérabilité présente en programmation depuis des décennies. Elle se produit lorsqu’une opération arithmétique tente de créer une valeur numérique supérieure à la valeur maximale ou inférieure à la valeur minimale pouvant être représentée dans l'espace de stockage alloué pour un type de données entier. Elle « déborde ».
Le 4 juin 1996, Ariane 5 décollait pour la première fois de la Guyane française. 37 secondes et une conversion arithmétique plus tard, elle pivotait subitement de 90 degrés dans la mauvaise direction, peu avant que les forces aérodynamiques n’arrachent les boosters de l’étage principal dans une immense boule de feu d’hydrogène liquide.
La cause de cet échec était liée à la centrale à inertie qui utilisait un programme d’Ariane 4 dont l’accélération horizontale était pourtant 5 fois inférieure. Pendant l'ascension, la variable stockant cette accélération dépassa sa capacité, entraînant la défaillance du système principal... ainsi que celle du système de secours qui présentait le même défaut.
1. Des entiers dans la mémoire
Le concept d’integer overflow vient fondamentalement de la façon dont un ordinateur représente et stocke une valeur entière. Dans la plupart des langages de programmation, ces valeurs se voient attribuer un...
- Accédez à tous les contenus de Connect en illimité
- Découvrez des listes de lecture et des contenus Premium
- Consultez les nouveaux articles en avant-première