heap overflow
Megjelenés
Főnév
heap overflow (tsz. heap overflows)
- (informatika) A heap overflow (kupac túlcsordulás) egy olyan programozási hiba vagy sebezhetőség, amikor a program több memóriát ír a heap-en, mint amennyit számára lefoglalt. Ez memóriakorrupciót, összeomlást, vagy akár kódfuttatást is eredményezhet, különösen nyelvekben, amelyek nem végeznek automatikus memóriavédelmet (pl. C, C++).
🧠 A heap jelentése
A heap (vagy dinamikus memória) az a memóriaterület, ahol a program futásidőben dinamikusan foglal le memóriát például malloc() (C), new (C++) vagy new (Java, Python) használatával.
- A heap nem azonos a stack-kel (ahol pl. lokális változók élnek).
💥 Mi az a heap overflow?
Akkor következik be, ha egy program:
Túllépi azt a memóriaterületet, amit a heap-en lefoglalt, és más memória területre (pl. szomszédos objektumok, vezérlési struktúrák) kezd írni.
⚠️ Mi okozhat heap overflow-t?
- Nem megfelelő méretű memóriafoglalás:
char* p = malloc(10); // 10 bájt helyet kér
strcpy(p, "This is more than 10 bytes!"); // Írás túl a határon
- Hibás ciklusok / indexelés:
char* p = malloc(5);
for (int i = 0; i <= 5; ++i) { // Helytelen határfeltétel!
p[i] = 'A';
}
Szándékos támadás (exploit):
- Támadó speciálisan kialakított inputot küld, ami felülírja a heap adatszerkezeteket, és rosszindulatú kód futtatására használja.
💣 Miben különbözik a stack overflow-tól?
| Jellemző | Stack Overflow | Heap Overflow |
|---|---|---|
| Memória típusa | Stack (pl. függvényhívások) | Heap (dinamikus memória) |
| Tipikus ok | Végtelen rekurzió, nagy tömb | Helytelen dinamikus írás |
| Könnyebben észlelhető? | Igen | Nehezebb, gyakran rejtett hiba |
| Kihasználható biztonsági célokra? | Igen (buffer overflow) | Igen (heap spraying, heap corruption) |
🧷 Védekezési módszerek
- Biztonságos függvények használata (pl.
strncpyvsstrcpy) - Valós idejű határ-ellenőrzés
- Modern fordítók védelmei:
- Stack canary
- ASLR (Address Space Layout Randomization)
- Heap hardening (pl. glibc malloc protekciók)
- Futtatás közbeni hibakeresők:
- Valgrind, AddressSanitizer, Electric Fence
🛡️ Példa hibajelzésre
Ha egy program heap overflow-t okoz, ilyen hibák jelentkezhetnek:
*** buffer overflow detected ***: terminated
Segmentation fault (core dumped)
✅ Összefoglalás
- A heap overflow akkor következik be, amikor a program túlírja a heap-re lefoglalt memória határait.
- Ez vezethet memóriakorrupcióhoz, összeomláshoz, vagy támadásokhoz (pl. kódfuttatás).
- Főleg alacsony szintű nyelvekben (C/C++) fordul elő, ahol a programozó felelős a memóriakezelésért.
- Megelőzhető biztonságos programozási technikákkal és eszközökkel.
- heap overflow - Szótár.net (en-hu)
- heap overflow - Sztaki (en-hu)
- heap overflow - Merriam–Webster
- heap overflow - Cambridge
- heap overflow - WordNet
- heap overflow - Яндекс (en-ru)
- heap overflow - Google (en-hu)
- heap overflow - Wikidata
- heap overflow - Wikipédia (angol)