Skip to content
Vol. 1 · Ed. 2026
CyberGlossary
Entry № 608

Débordement d'entier

Vérifié parCybersecurity entrepreneur & security researcher

Qu'est-ce que Débordement d'entier ?

Débordement d'entierBug où une opération arithmétique produit une valeur hors de la plage représentable du type entier, avec un wraparound ou une troncature aux conséquences critiques.


Les débordements d'entier surviennent lorsqu'un calcul dépasse la valeur maximale (ou minimale) que le type peut contenir, provoquant un wraparound, un changement de signe ou une troncature. Cela devient un problème de sécurité quand la valeur erronée est ensuite utilisée comme taille de tampon, compteur de boucle, index de tableau ou contrôle d'autorisation, produisant souvent des débordements de tampon, des boucles infinies ou des contournements de limites.

Le schéma classique. Un point de convergence fréquent est malloc(count * size) : si count * size déborde au-delà de SIZE_MAX, l'allocateur renvoie un tampon bien plus petit que ce que le code suppose, et la copie qui suit écrit au-delà de la fin — un débordement provoqué par une multiplication, et non par une mauvaise longueur de memcpy. La famille Stagefright d'Android en 2015 (CVE-2015-1538) a exploité exactement cela : un débordement d'entier dans l'atome de métadonnées stsc d'un fichier MP4 provoquait une allocation de tas trop courte, permettant à un seul message MMS d'obtenir l'exécution de code à distance sur environ 950 millions d'appareils estimés. La faille challenge-response d'OpenSSH de 2002 (CVE-2002-0639) ainsi que de nombreux bugs de codecs image et de parseurs de polices suivent la même forme. Les conversions signé vers non signé sont un piège apparenté : une longueur négative interprétée comme une énorme valeur non signée déjoue une vérification naïve du type if (len > max).

Les défenses incluent l'arithmétique vérifiée (checked_add/checked_mul de Rust, ckd_* de C23, -ftrapv du compilateur et UBSan), le calcul dans un type plus large suivi d'une vérification de plage avant de réduire, le choix de types adaptés au domaine, la validation des tailles contrôlées par l'attaquant avant l'allocation, et un fuzzing agressif des parseurs.

flowchart TD
  A[count et size contrôlés<br/>par l'attaquant] --> B[size = count * elem]
  B --> C{Le produit dépasse-t-il<br/>le max du type ?}
  C -->|Non| D[Allocation correcte]
  C -->|Oui| E[La valeur déborde vers<br/>un petit nombre]
  E --> F[Tampon sous-dimensionné alloué]
  F --> G[La copie écrit au-delà de la fin<br/>corruption de tas / RCE]

Exemples

  1. 01

    CVE-2002-0639 (OpenSSH challenge-response) : débordement d'entier conduisant à une corruption de tas.

  2. 02

    CVE-2015-1538 (Android Stagefright) : débordement d'entier dans l'atome 'stsc' d'un MP4 permettant l'exécution de code à distance.

Questions fréquentes

Qu'est-ce que Débordement d'entier ?

Bug où une opération arithmétique produit une valeur hors de la plage représentable du type entier, avec un wraparound ou une troncature aux conséquences critiques. Cette notion relève de la catégorie Vulnérabilités en cybersécurité.

Que signifie Débordement d'entier ?

Bug où une opération arithmétique produit une valeur hors de la plage représentable du type entier, avec un wraparound ou une troncature aux conséquences critiques.

Comment se défendre contre Débordement d'entier ?

Les défenses contre Débordement d'entier combinent habituellement des contrôles techniques et des pratiques opérationnelles, comme détaillé dans la définition ci-dessus.

Quels sont les autres noms de Débordement d'entier ?

Noms alternatifs courants : Wraparound d'entier.

Termes liés

Voir aussi