Bevezetés a puffer túlcsordulásba

A puffer túlcsordulását puffer túllépésnek is nevezik, ez a számítógép állapota, ahol egy alkalmazás több adatot próbál tárolni a puffermemóriában, mint amennyit a memória tartalmaz. Ez ahhoz vezet, hogy az adatokat a szomszédos tárolókba tárolják, amelyek időnként felülírhatják a meglévő adatokat, potenciális adatvesztést okozva, és néha a rendszer összeomlását is. Általános programozási hiba, amelyet a legtöbb fejlesztő tudatosan elkövet. Ezt leginkább a hackerek használják ki a kéretlen adatokhoz való hozzáférés érdekében.

Mi a puffermemória?

Kiváló kérdés. A puffermemória vagy a puffer egyszerűen a RAM sorozatának része, amelyet azért tárolnak át, hogy ideiglenesen tárolja az adatokat, miközben áthelyezik egyik helyről a másikra - ez a hely általában bemeneti vagy kimeneti eszköz. Ennek célja az eszközök működési sebessége közötti különbség kompenzálása.

Például, ha néhány dokumentumot kinyomtat a nyomtatáshoz, akkor a legújabb i7 processzor elég gyors ahhoz, hogy a nyomtatási parancsot nanosekundumban végre tudja hajtani, míg a szegény régi nyomtató nem rendelkezik ezzel a gyors processzorral. Tehát a dokumentumokat a puffermemóriában tárolják, és a nyomtató által elfogadott sebességgel továbbítják a nyomtatóra. Ez felszabadítja a CPU RAM-ot más feladatok elvégzéséhez.

Puffer túlcsordulási támadás

Most, hogy a számítógépekkel szemben sebezhetőséget azonosítottak, a hackerek kötelesek kiaknázni azt, és megpróbálnak támadni a különböző rendszereket puffer túlcsordulási támadások révén. Felmerül a kérdés: hogyan hacker hajt végre ilyen támadást, és milyen következményekkel jár?

Egy puffer túlcsordulási támadás esetén az extra adatok olyan utasításokat tartalmaznak, amelyek olyan káros tevékenységeket indítanak el, mint például a fájlok sérülése, az adatok megváltoztatása, a személyes információk küldése az interneten stb. a többlet adatok bevitele és befecskendezése a pufferbe.

A puffer túlcsordulási támadás elsősorban két típusba sorolható

  • Verem-alapú: Ha a támadás verem-alapú memóriaelosztásra vonatkozik. Ezt egyszerűbben ki lehet használni, és így hajlamosabb a támadásokra.
  • Halom alapú: Ha a támadás halom alapú memória allokációt érinti. Ezt nem olyan könnyű kiaknázni, és így sokkal ritkábban.

A puffer túlcsordulás támadásainak leginkább kitéve a C, C ++, a Fortran és az Assembly, mivel verem-alapú memóriaelosztási technikákat használnak.

A kúra

Ha az adatok sérültek, az eredeti adatok helyreállítása egyszerűen nem lehetséges. Sőt, a támadás intenzitása nagyban meghatározza a gyógyulást. Ha a támadás csekély és az izolált gép memóriájának csak egy részét érinti, a megoldás az egyszerű rendszerformátum. Míg ha a támadás széles körben elterjedt és több gépen veszélyezteti az adatokat, akkor a teljes hálózat formázása csak akkor segítené, ha a rosszindulatú kódot befecskendező programot javítanák.

A megelőzés jobb mint az orvoslás

Fejlesztőként a mi felelősségünk ellenőrizni a puffer-túlcsordulást a kódban. Ha a puffer túlcsordulásokat maga a kód kezeli, a puffertúlcsordulási támadások nem akadályozzák a rendszer biztonságát.

Az alábbiakban bemutatunk néhány egyszerű óvintézkedést, amelyek segíthetnek megakadályozni a puffer túlcsordulását.

  • A kivételkezelést ki kell használni a puffer túlcsordulások észlelése és a kód végrehajtásának megakadályozása érdekében.
  • Helyezzen el elég nagy méretet a pufferoláshoz, hogy a nem szándékolt nagy adatmennyiségeket megfelelő módon kezeljék.
  • Ne használjon olyan könyvtári funkciókat vagy harmadik féltől származó módszereket, amelyekre nincs puffer-túlcsordulások ellenőrzése. Az elkerülhető funkciók általános példái a következők: get (), scanf (), strcpy () Ezek elsősorban C / C ++ nyelven jelennek meg.
  • A kódtesztelésnek figyelembe kell vennie az ilyen biztonsági réseket, és szigorúan ellenőriznie kell a kódot, és javítania kell azokat a hibákat, amelyek túlcsorduláshoz vezethetnek.
  • A modern programozási nyelvek, operációs rendszerek és kódfordítók fejlesztettek ki, hogy megállítsák a parancs végrehajtását puffer túlcsordulás esetén. Ez lett a legmegbízhatóbb módszer a puffer-túlcsordulások automatikus észlelésére.

Próbáld ki magad…

Annyira megértettek a puffer túlcsordulásról és a puffer támadásokról, miért nem próbálja meg magad valami rosszindulatú kódot szerezni?

Jogi nyilatkozat - A következő program csak szemléltetési célokat szolgál, és nem szabad semmiféle károkat okozni. A rosszindulatú kódokkal való bármilyen hasonlóság pusztán véletlenszerű. Ráadásul manapság az operációs rendszerek elég okosak ahhoz, hogy a puffer-támadások megelőzésére szolgáló ellenőrzéseket elvégezzék.

Az alábbiakban látható a C program, amely potenciális puffer túllépést okozhat. Miért a C nyelv? Ennek oka az, hogy a fejlettebb programozási nyelveket a puffer túllépések kezelésére fejlesztették ki csak fordítási idő alatt. Noha manapság a C fordítóinak is vannak bizonyos ellenőrzései a puffer túlcsordulás észlelésének elkerülése érdekében. Tehát csak egy hibaüzenetet fog látni, amely azt jelzi, hogy puffer túllépést észleltek.

#include
#include
#include
int main(int argc, char *argv())
(
char mybuffer(8);
// copy the user input to mybuffer, without any bound checking
printf("Storing user input to mybuffer…\n");
strcpy(mybuffer, argv(1));
printf("mybuffer content= %s\n", mybuffer);
return 0;
)

Mi történt, amikor a 123456789-et parancssori argumentumként adták a programnak? A program hibát generált, amelyet akkor dobtak el, amikor a fordító puffer túlcsordulást észlel. A fordítók és az operációs rendszerek manapság hozzáadott védelmi réteggel rendelkeznek. Ez a réteg nem más, mint a Kanári-szigeteknek nevezett változók, amelyeket a fordításkor bizonyos értékekre kezdeményeznek. Ezeket a változókat a szomszédos memóriaegységekben a puffer tárolja. Tehát, amikor a puffer túlcsordul, az extra adatok beáramlanak a szomszédos memóriába, és megrontják a Kanári-szigetek értékét. Amint bármilyen sérült kanáriát észlelnek, a rendszer megszakítja a végrehajtást.

További példa a C ++ nyelvre:

#include
using namespace std;
int main()
(
char buf(8);
cin>>buf;
return 0;
)

Bemenet - 123456789

Teljesítmény -

Következtetés - puffer túlcsordulás

Tehát most már biztos vagyok benne, hogy megértette a pufferkezelés fontosságát a programjában. Vegye figyelembe ezt a gyakorlatot, hogy ellenőrizze az esetleges pufferhatárokat írás közben, valamint a kód tesztelését is. Ez segít biztonságos kód megírásában.

Ajánlott cikkek

Ez egy útmutató a Mi az a puffer túlcsordulás című témakörben. Itt megvitattuk a meghatározást, a megelőzést, a memóriát és a támadást a puffer túlcsordulásban. A további javasolt cikkeken keresztül további információkat is megtudhat -

  1. Mi a JavaScript?
  2. Mi az a Django?
  3. Mi az SQL Developer?
  4. Mi az Azure?

Kategória: