Sous-depassement entier
Qu'est-ce que Sous-depassement entier ?
Sous-depassement entierFaille arithmetique (CWE-191) ou une soustraction sur un entier non signe sous zero se replie sur une enorme valeur, autorisant allocations excessives ou debordements.
Un sous-depassement (underflow) entier survient quand un entier non signe descend sous zero, ou que l'arithmetique signee traverse INT_MIN, le resultat se repliant sur une enorme valeur positive. Le motif classique : len = header_len - prefix_len ou prefix_len est controle par l'attaquant ; le len gigantesque resultant contourne les controles de bornes et provoque des debordements de tas ou de pile, ou des lectures hors limites. Exemples reels : CVE-2018-1000005 (libcurl) et de nombreux bugs reseau du noyau ou des soustractions size_t sur des longueurs de paquets sous-debordent. Parades : arithmetique signee avec comparaisons explicites, soustraction verifiee (__builtin_sub_overflow, std::safe_int), pieges d'overflow au niveau langage (Rust debug, Swift), fuzzing avec UBSan et validation stricte des entrees.
● Exemples
- 01
len = total - header_len qui devient 0xFFFFFFFF si total < header_len puis utilise comme taille memcpy.
- 02
Linux CVE-2019-11815 : une soustraction de longueur restante sous-deborde et permet un UAF.
● Questions fréquentes
Qu'est-ce que Sous-depassement entier ?
Faille arithmetique (CWE-191) ou une soustraction sur un entier non signe sous zero se replie sur une enorme valeur, autorisant allocations excessives ou debordements. Cette notion relève de la catégorie Attaques et menaces en cybersécurité.
Que signifie Sous-depassement entier ?
Faille arithmetique (CWE-191) ou une soustraction sur un entier non signe sous zero se replie sur une enorme valeur, autorisant allocations excessives ou debordements.
Comment fonctionne Sous-depassement entier ?
Un sous-depassement (underflow) entier survient quand un entier non signe descend sous zero, ou que l'arithmetique signee traverse INT_MIN, le resultat se repliant sur une enorme valeur positive. Le motif classique : len = header_len - prefix_len ou prefix_len est controle par l'attaquant ; le len gigantesque resultant contourne les controles de bornes et provoque des debordements de tas ou de pile, ou des lectures hors limites. Exemples reels : CVE-2018-1000005 (libcurl) et de nombreux bugs reseau du noyau ou des soustractions size_t sur des longueurs de paquets sous-debordent. Parades : arithmetique signee avec comparaisons explicites, soustraction verifiee (__builtin_sub_overflow, std::safe_int), pieges d'overflow au niveau langage (Rust debug, Swift), fuzzing avec UBSan et validation stricte des entrees.
Comment se défendre contre Sous-depassement entier ?
Les défenses contre Sous-depassement 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 Sous-depassement entier ?
Noms alternatifs courants : Underflow non signe, CWE-191.
● Termes liés
- vulnerabilities№ 543
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.
- vulnerabilities№ 131
Débordement de tampon
Faille de sûreté mémoire où un programme écrit au-delà de la fin d'un tampon alloué, corrompant la mémoire adjacente et permettant souvent l'exécution de code.
- attacks№ 772
Lecture hors limites
Bogue de securite memoire (CWE-125) ou un logiciel lit avant, apres ou en dehors du buffer prevu, fuitant le contenu de la memoire adjacente.
- vulnerabilities№ 667
Corruption mémoire
Terme générique pour les vulnérabilités où un programme écrit hors des limites prévues, compromettant sûreté de typage, flux de contrôle ou intégrité des données.
- appsec№ 538
Validation des entrées
Contrôle côté serveur vérifiant que chaque entrée non fiable correspond au type, à la longueur, à la plage, au format et à l'ensemble de valeurs attendus avant tout traitement.