Johdanto kokonaislukujen ylivuotoihin ja alivirtauksiin
kokonaislukujen ylivuoto-ja alivirtaushaavoittuvuuksia pidetään vuoden 2019 Common Weakness Enumeration (CWE) Top 25-listan kahdeksanneksi vaarallisimpana haavoittuvuutena. Tämäntyyppiset haavoittuvuudet syntyvät vaihtelevien tyyppien väärinkäytöstä, ja niitä voidaan hyödyntää ohittamaan suojaukset muuntyyppisiä haavoittuvuuksia, kuten puskurien ylivuotoja vastaan.
muuttujat ja koot
jokaisella ohjelmointikielellä on erityyppisten muuttujien käsite. Merkki, joka voi sisältää tekstidataa, on hyvin erilainen kuin kokonaisluku tai float. Näiden yleisten tyyppien lisäksi on kuitenkin olemassa muita muuttujien välisiä eroja, ja nämä erot tekevät kokonaislukujen ylivuoto-ja alivirtaushaavoittuvuuksista mahdollisia.
useimmissa ohjelmointikielissä on käsite allekirjoitettu ja allekirjoittamaton kokonaisluku. Allekirjoitetulla kokonaisluvulla (kuten nimestä voi päätellä) on merkki, jonka avulla se voi tallentaa sekä positiivisia että negatiivisia arvoja. Allekirjoittamaton muuttuja taas voi tallentaa vain positiivisia lukuja.
kuten yllä olevasta kuvasta näkyy, tietyn kokoiset allekirjoitetut ja allekirjoittamattomat muuttujat kirjoitetaan identtisesti tietokoneen muistiin. Ainoa ero on siinä, miten arvoa tulkitaan. Allekirjoitetussa arvossa johtava tarkoittaa negatiivista lukua, kun taas allekirjoittamattomassa arvossa ykkönen tarkoittaa vain suurta lukua.
toinen tärkein ero eri ”kokonaisluku” – muuttujatyyppien välillä on sen arvon suuruus, jonka ne voivat sisältää. Ohjelmointikielissä on käsitteet lyhyt, kokonaisluku, pitkä ja sitä pidempi, joista jokainen määrittelee kyseiselle muuttujalle varatun muistiavaruuden koon ja sen sisältämän arvoalueen.
kokonaisluku ylivuotoja ja alivirtoja
kokonaisluku ylivuotoja ja alivirtauksia haavoittuvuudet koostuvat vaarallinen muuntaminen allekirjoitettu ja allekirjoittamaton muuttujien ja kokonaisluku muuttuja tyypit erikokoisia. On yleensä sallittua muuntaa näiden eri tyyppien välillä ja monissa tapauksissa (Lue lisää…)