buffer overflow attack (tsz. buffer overflow attacks)
Számos módon lehet manipulálni egy programot a verem alapú puffertúlcsordulások kihasználásával:
A program viselkedésének megváltoztatása a verem sérülékeny pufferének közelében található helyi változó felülírásával; A verem keretben lévő visszatérési cím felülírásával a támadó által kiválasztott kódra mutat, amelyet általában shellcode-nak hívnak . Amint a függvény visszatér, a végrehajtás a támadó shellkódjával folytatódik; Egy függvénymutató vagy kivételkezelő felülírásával a shellkódra mutat, amely ezt követően végrehajtódik; Egy másik verem keret helyi változójának (vagy mutatójának) felülírásával, amelyet később az adott keretet birtokló függvény fog használni. A támadó úgy tervezi meg az adatokat, hogy az egyik ilyen kizsákmányolást okozza, majd ezeket az adatokat a sebezhető kód által a felhasználóknak biztosított pufferbe helyezi. Ha a verempuffer túlcsordulást befolyásoló, felhasználó által megadott adatok címe megjósolhatatlan, a verempuffer túlcsordulás kihasználása a távoli kódvégrehajtás előidézésére sokkal nehezebbé válik. Egy ilyen puffertúlcsordulás kihasználására használható technika az úgynevezett trambulinozás . Itt a támadó talál egy mutatót a sebezhető verempufferre, és kiszámítja a shellkódja helyét a mutatóhoz képest. A támadó ezután a felülírással egy már a memóriában lévő utasításra ugrik, amely egy második ugrást hajt végre, ezúttal a mutatóhoz képest. Ez a második ugrás leágazza a végrehajtást a shellkódba. A megfelelő utasítások gyakran nagy kódban jelennek meg. A Metasploit Project például karbantartja a megfelelő műveleti kódok adatbázisát, bár csak azokat sorolja fel, amelyek a Windows operációs rendszerben találhatók.
A kupac adatterületen előforduló puffertúlcsordulást kupac túlcsordulásnak nevezik, és a verem alapú túlcsordulástól eltérő módon használható ki. A kupac memóriáját az alkalmazás dinamikusan lefoglalja futási időben, és jellemzően programadatokat tartalmaz. A kiaknázást úgy hajtják végre, hogy bizonyos módon megsértik ezeket az adatokat, hogy az alkalmazás felülírja a belső struktúrákat, például a hivatkozott listamutatókat. A kanonikus kupac túlcsordulási technika felülírja a dinamikus memóriafoglalási kapcsolatot (például a malloc metaadatokat), és az eredményül kapott mutatócserét használja a programfüggvény-mutató felülírására.
A Microsoft GDI+ sebezhetősége a JPEG-fájlok kezelésében jó példa arra a veszélyre, amelyet a halom túlcsordulás jelenthet.