Applications, sites et API
Particuliers et entreprisesDébordement d’entier
Integer overflow / Integer wraparound
Un calcul dépasse les valeurs représentables et peut produire une taille ou une décision incorrecte.
Je pense être concerné : que faire ?
Comprendre et agir
Découvrez le piège à partir d’un exemple, puis les gestes que vous pouvez faire. Vous pouvez suivre cette lecture sans connaissances en informatique.
Une situation concrète
Un service reçoit un fichier qui annonce beaucoup d’éléments. Pour réserver de la mémoire, il multiplie leur nombre par leur taille. Le résultat dépasse la capacité du nombre utilisé et devient trop petit. La réservation peut alors être insuffisante pour la suite du traitement.
Comment cela fonctionne
Les nombres entiers informatiques ont des limites qui dépendent de leur type. Un calcul hors de ces limites peut être refusé, changer de valeur ou avoir un comportement non défini selon le langage et le type. Si le programme utilise ce résultat comme une taille ou un compteur fiable, une entrée malveillante peut modifier sa décision. Les conséquences peuvent toucher la mémoire ou une règle de gestion.
- Des nombres sont reçus
Le fichier annonce des quantités ou des tailles.
- Le calcul dépasse sa capacité
Le résultat ne représente plus la quantité attendue.
- La suite utilise ce résultat
Réservation trop petite ou décision incorrecte.
Ce que vous pouvez faire
Vos premiers réflexes
Mettez à jour les logiciels qui ouvrent vos documents. Signalez un plantage en conservant le fichier et son contexte, sans chercher à en modifier les tailles vous-même.
Si vous êtes responsable du service ou de l’organisation
Faites contrôler les calculs qui précèdent les allocations et les décisions métier. Vérifiez les conversions et les tests de valeurs limites dans les composants réellement déployés.
Choisir un entier plus grand déplace sa limite. Cela ne remplace pas un contrôle du résultat et des conversions qui suivent.
À vous de décider
Remplacer un petit compteur par un compteur plus grand suffit-il à garantir que tous ses calculs restent corrects ?
Prenez un moment pour répondre et expliquer votre choix, puis ouvrez la correction.
Voir la réponse expliquée
Non. Le nouveau type possède encore des limites, et le résultat peut être converti ensuite dans un type plus petit. Les opérations et les conversions doivent être vérifiées avant leur utilisation.
Analyser un cas technique
Ce cas s’adresse aux personnes qui développent, administrent ou analysent ces systèmes. Si vous découvrez le sujet, commencez par « Comprendre et agir ».
Étude de cas fictive
Un calcul de taille réserve moins de place que nécessaire
Ce cas fictif utilise volontairement un entier non signé de huit bits pour rendre le calcul lisible. Il représente les valeurs de 0 à 255. Quarante éléments de huit octets demandent 320 octets ; le résultat stocké dans ce modèle revient à 64, soit 320 modulo 256.
La réservation de 64 octets ne suffit donc pas à une copie de 320 octets. La trace précise copy_performed=false : l’exercice s’arrête avant cette copie. Il établit une sous-allocation dans le modèle, sans démontrer une écriture hors limites ni une exploitation en production. Les entiers signés d’un programme réel ne suivent pas nécessairement ce bouclage.
La correction refuse la taille avant l’allocation. Vérifier seulement que le résultat stocké est petit laisserait passer l’erreur : le contrôle doit couvrir les opérandes, l’opération et les conversions. Stagefright illustre une chaîne réelle reliant un calcul de taille à une corruption mémoire ; le modèle huit bits ne reconstitue pas cette vulnérabilité.
Le déroulement en schéma
Faites défiler le diagramme pour suivre les échanges ; les noms des acteurs restent en haut. Sur petit écran, faites aussi défiler de gauche à droite.
- Action
Annonce de quarante éléments
Fichier reçu vers Lecteur
Trace huit octets par élément
- Action sur place
Calcul dans le modèle huit bits
Lecteur
Trace 320 devient 64
- Action
Demande de réservation
Lecteur vers Allocateur
Trace 64 octets
- Réponse
Mémoire réservée
Allocateur vers Lecteur
Trace taille insuffisante
- Action
Comparaison avant copie
Lecteur vers Équipe de test
Trace 320 octets nécessaires
- Action sur place
Constat de sous-allocation
Équipe de test
Trace copie non effectuée
- Refus / blocage
Vérification de la correction
Équipe de test vers Lecteur
Trace refus avant allocation
Comment repérer cette attaque
Indices à rechercher
- Un calcul de taille donne une valeur incohérente avec le nombre d’éléments annoncé.
- Un lecteur plante sur un fichier contenant des tailles inhabituelles.
- Une instrumentation numérique signale un calcul ou une conversion hors des limites prévues.
Suivre les valeurs depuis le fichier jusqu’au calcul, à l’allocation et à la copie prévue. Comparer la quantité mathématique attendue à la valeur effectivement représentée. Vérifier les contrôles numériques activés sur la compilation de test.
Quelles informations comparer
Rapprocher les opérandes de size-8, le modèle huit bits et la réservation de 64 octets. Rechercher ensuite la copie prévue, en conservant ici la limite explicite : elle n’a pas été effectuée dans le test.
Ce que ces indices ne permettent pas de conclure
Ce modèle montre une erreur arithmétique et une réservation insuffisante. Sans copie observée, il ne prouve pas un débordement mémoire. Les règles du type signé ou d’un autre langage peuvent produire un comportement différent.
Comment réagir
Corriger le calcul et les conversions avant toute réservation ou décision fondée sur leur résultat. Préserver le fichier et le binaire, examiner les autres lecteurs qui partagent cette routine et traiter les effets réellement constatés.
Vérifier la correction
L’équipe responsable du système peut utiliser ces contrôles dans un environnement de test autorisé. Vous pouvez lire et comprendre le cas sans effectuer ces manipulations.
- Les quantités non représentables sont refusées avant toute allocation.
- Les essais couvrent les bornes, les conversions et les formats légitimes.
- Le composant corrigé est chargé et les décisions en aval utilisent une taille vérifiée.
À vous de raisonner
Le résultat stocké vaut 64, inférieur à la taille maximale autorisée. Ce seul contrôle suffit-il lorsque le calcul attendu valait 320 ?
Quelle décision prendriez-vous, et sur quel indice vous appuieriez-vous ? Répondez avant d’ouvrir la correction.
Comparer avec le raisonnement expliqué
Non. Le calcul a déjà perdu l’information avant le contrôle. Il faut vérifier les opérandes et la représentabilité du résultat avant l’opération, ou employer une opération contrôlée, puis vérifier les conversions.
Consulter les détails techniques
Les extraits permettent de s’exercer à lire les traces du cas. Si vous disposez des outils et des accès nécessaires, le guide de collecte vous aide aussi à rechercher ces informations.
Lire les extraits commentés (reconstitution fictive)
Ces extraits contiennent des valeurs fictives. Certains champs correspondent à ceux des outils documentés ; d’autres réunissent plusieurs sources pour faciliter l’explication. Vos propres exports pourront donc avoir une autre forme. Lisez d’abord les explications des champs, puis repérez-les dans les extraits.
stored_bytes- Valeur représentée après le calcul dans le modèle pédagogique non signé ; ce champ n’est pas un événement natif du système.
copy_performed- Indicateur de l’exercice : false conserve le fait que la copie dangereuse a été arrêtée avant son exécution.
Reconstitution pédagogique du cas en laboratoire
JSONLValeurs et événements fictifs réunis pour expliquer le cas. Ce format est une reconstitution, pas un export natif du logiciel ou du système cité.
{"case":"size-8","environment":"isolated_test","model":"unsigned_8_bit","count":40,"item_bytes":8,"expected_bytes":320,"stored_bytes":64}
{"case":"size-8","allocation_bytes":64,"requested_copy_bytes":320,"copy_performed":false,"production_exploit":"not_established"}
{"case":"size-9","build":"fixed","result":"size_rejected_before_allocation"}Préparer une collecte dans votre environnement
Utilisez les sources disponibles dans vos outils et auxquelles vous êtes autorisé à accéder. Vous pouvez comprendre la fiche sans posséder ces outils. Vérifiez que les journaux étaient activés pendant la période étudiée. Gardez l’export original avec son fuseau horaire et sa provenance dans un espace à accès restreint. Pour l’analyse, travaillez sur une copie dont vous avez retiré les secrets.
LLVM : contrôles numériques en environnement de test
- Où les trouver
- Dans la sortie d’erreur du lecteur compilé avec l’instrumentation adaptée, ou dans les artefacts de sa chaîne de tests. Conserver le diagnostic, les types et l’emplacement de l’opération avec les symboles correspondants.
- Quoi relever
- Relever les diagnostics numériques activés et le type exact de l’opération. Documenter les options de compilation : la vérification du débordement non signé est distincte des contrôles de comportement indéfini.
- Accès et prérequis
- Copie de test autorisée et options de compilation documentées. Le groupe undefined ne couvre pas le bouclage des entiers non signés ; ce contrôle demande une option distincte. Un diagnostic actuel ne reconstitue pas les opérations passées en production.
Service concerné — audit et historique à vérifier
- Où les trouver
- Dans l’outil d’administration ou les journaux du service concerné. Demander à son mainteneur où sont enregistrées les décisions d’autorisation et les opérations métier.
- Quoi relever
- Conserver sur des données factices le nombre d’éléments, la taille unitaire et les tailles calculées puis allouées. Ces champs doivent être ajoutés au lecteur si son instrumentation ne les fournit pas.
- Accès et prérequis
- Il n’existe ni fichier ni vocabulaire universels. Les champs proposés ici doivent être instrumentés s’ils manquent ; ne pas enregistrer mots de passe, jetons ou contenu privé intégral.
Si vous pensez être concerné
Si vous utilisez le service
Mettez à jour les logiciels qui ouvrent vos documents. Signalez un plantage en conservant le fichier et son contexte, sans chercher à en modifier les tailles vous-même.
Pour l’équipe qui exploite le service
- Conservez le fichier, l’heure et les versions concernées sans relancer le traitement.
- Faites corriger le calcul en amont et suspendre le chemin exposé si nécessaire.
- Examinez l’allocation, la copie et les décisions qui utilisent le résultat incorrect.
Pour comprendre votre situation et trouver de l’aide : obtenir une assistance sur 17Cyber. Dans une organisation, prévenez aussi le responsable ou prestataire chargé de la sécurité.
Sources et repères pour approfondir
- CWE-190 : débordement et bouclage d’entier — cwe.mitre.org
- LLVM : contrôles des opérations numériques — clang.llvm.org
- Rapid7 : Stagefright MP4 tx3g — rapid7.com


