Inleiding tot integer overflows en underflows
integer overflow en underflow kwetsbaarheden worden beschouwd als de achtste meest gevaarlijke kwetsbaarheid in de Common Weakness Enumeration (CWE) Top 25 lijst van 2019. Deze soorten kwetsbaarheden worden gecreëerd door misbruik van variabele types en kunnen worden benut om bescherming tegen andere soorten kwetsbaarheden te omzeilen, zoals buffer overflows.
variabele types en groottes
elke programmeertaal heeft het concept van verschillende typen variabelen. Een karakter, dat tekstgegevens kan bevatten, is heel anders dan een geheel getal of een float. Echter, voorbij deze algemene types zijn extra onderscheid tussen variabelen, en deze verschillen zijn wat integer overflow en underflow kwetsbaarheden mogelijk te maken.
de meeste programmeertalen hebben het concept van getekende en niet-getekende gehele getallen. Een ondertekend geheel getal (zoals de naam al doet vermoeden) heeft een teken, waardoor het zowel positieve als negatieve waarden kan opslaan. Een niet-ondertekende variabele kan daarentegen alleen positieve getallen opslaan.
zoals te zien is in de afbeelding hierboven, worden ondertekende en niet-ondertekende variabelen van een bepaalde grootte identiek geschreven in het geheugen van een computer. Het enige verschil is hoe de waarde wordt geïnterpreteerd. In een ondertekende waarde betekent een leidende een negatief getal, terwijl in een niet-ondertekende waarde een één op de eerste plek gewoon een groot getal betekent.
het andere belangrijke onderscheid tussen verschillende” integer ” variabele types is de grootte van de waarde die ze kunnen bevatten. Programmeertalen hebben de concepten van kort, integer, lang en verder, die elk de grootte van de geheugenruimte die voor die variabele wordt toegewezen en het bereik van waarden die het kan bevatten definieert.
integer overflows en underflows
integer overflow en underflow kwetsbaarheden komen neer op onveilige conversie tussen ondertekende en niet-ondertekende variabelen en integer variabele types van verschillende groottes. Het is over het algemeen toegestaan om te converteren tussen deze verschillende types en, in veel gevallen, (Lees meer…)