Úvod do celočíselného přetečení a podtečení
zranitelnosti celočíselného přetečení a podtečení jsou považovány za osmou nejnebezpečnější zranitelnost v seznamu Common slabost (CWE) Top 25 z roku 2019. Tyto typy zranitelností jsou vytvořeny zneužitím typů proměnných a lze je využít k obcházení ochrany proti jiným typům zranitelností, jako je přetečení vyrovnávací paměti.
typy a velikosti proměnných
každý programovací jazyk má koncept různých typů proměnných. Znak, který může obsahovat textová data, se velmi liší od celého čísla nebo plováku. Kromě těchto obecných typů však existují další rozdíly mezi proměnnými a tyto rozdíly umožňují zranitelnosti celočíselného přetečení a podútoku.
většina programovacích jazyků má koncept podepsaných a nepodepsaných celých čísel. Celé číslo se znaménkem (jak název napovídá) má znaménko, které mu umožňuje ukládat kladné i záporné hodnoty. Na druhé straně nepodepsaná proměnná může ukládat pouze kladná čísla.
jak je znázorněno na obrázku výše, podepsané a nepodepsané proměnné dané velikosti jsou zapsány identicky do paměti počítače. Jediným rozdílem je, jak je hodnota interpretována. V podepsané hodnotě znamená přední číslo záporné číslo, zatímco v nepodepsané hodnotě znamená číslo na prvním místě velké číslo.
dalším hlavním rozdílem mezi různými typy“ celočíselných “ proměnných je velikost hodnoty, kterou mohou obsahovat. Programovací jazyky mají pojmy krátký, celočíselný, dlouhý a mimo něj, z nichž každý definuje velikost paměťového prostoru přiděleného pro tuto proměnnou a rozsah hodnot, které může obsahovat.
celočíselné přetoky a underflow
celočíselné přetečení a chyby zabezpečení underflow se snižují na nebezpečnou konverzi mezi podepsanými a nepodepsanými proměnnými a typy celočíselných proměnných různých velikostí. Obecně je povoleno převádět mezi těmito různými typy a v mnoha případech (Přečtěte si více…)