Hackeři po celém světě každý den objevují a využívají nové zranitelnosti webových stránek, aplikací a dokonce i systémové architektury. Jedna běžná věc u všech elektronických zařízení, starých nebo nových, je, že jsou provozována programy, které jsou uloženy v paměti. Hackeři toho využili a našli zranitelnost známá jako přetečení vyrovnávací paměti.
Ačkoli to není nic nového, útoky a zranitelnosti přetečením vyrovnávací paměti způsobují v kyberprostoru zmatek. Zde vám vysvětlíme, co jsou útoky přetečením vyrovnávací paměti a jak jim můžete zabránit.
Pochopení vyrovnávacích pamětí a systémové paměti
Abyste pochopili, co je útok přetečením vyrovnávací paměti a jak funguje, musíte vědět, co je vyrovnávací paměť a jak funguje paměť počítače.
Zásobník a halda paměti jsou dvě hlavní vlastnosti paměti počítače. Jsou to datové struktury používané pro alokaci paměti. Přestože jsou podobné, zásobníková a haldová paměť se liší více způsoby.
Zásobník, který využívá koncept Last-in, First-out (LIFO), se používá v RAM (paměť s náhodným přístupem) k dočasně ukládat provádění programů, zatímco halda přiřazuje paměť pomocí dynamické alokace globální proměnné. Ale jedna věc, kterou mají společné, je nárazník.
Co je vyrovnávací paměť?
Vyrovnávací paměť je oblast paměti používaná k ukládání dat, s největší pravděpodobností v paměti RAM počítače, zatímco jsou přesunuta z jednoho místa na druhé. Tato data jsou obvykle programy, které je třeba spustit. Vyrovnávací paměti jsou uloženy v zásobníku nebo hromadě. Optimalizují provádění dat.
Co je přetečení vyrovnávací paměti?
K přetečení vyrovnávací paměti dochází, když vyrovnávací paměť přijme více dat, než je její kapacita. Protože není schopen takové množství dat zpracovat, dochází k jejich přetečení.
Nyní, v paměti počítače, je hned po vyrovnávací paměti nebo vyrovnávací paměti návratová adresa. Tato návratová adresa se ve skutečnosti nazývá ukazatel rozšířené instrukce (EIP). Jeho funkcí je nasměrovat počítač po naplnění na zadaný program. Když má vyrovnávací paměť více dat, než může pojmout, a přeteče, přeteče na návratovou adresu.
Abychom to pochopili, předpokládejme, že máte vyrovnávací prostor, který pojme pouze pět písmen. Pokud tedy vyplníte slova jako „cukr“ nebo „mír“, tok vyrovnávací paměti je může obsahovat. Ale když máte slovo jako „ověření“, nevyhnutelně se to přenese. To vede k chybě nebo zhroucení systému. Hackeři však mohou tuto zranitelnost zneužít ke spuštění útoku přetečením vyrovnávací paměti.
Co je útok přetečením vyrovnávací paměti a jak to funguje?
K útokům přetečením vyrovnávací paměti dochází, když hacker převezme kontrolu nad zpáteční adresou nebo EIP. Když útočník zná velikost systémové paměti, může do systému záměrně zapisovat data, jen aby je přeplnil. Poté se přesvědčí, že EIP nebo zpáteční adresa je zapsána tak, aby ukazovala na program, který jim může poskytnout přístup do systému nebo odhalit citlivé informace uložené v systému.
Útočník může dokonce zapsat některá data, která obsahují škodlivý kód a způsobit přetečení vyrovnávací paměti. EIP je poté zapsán, aby přesměroval systém zpět na škodlivý kód, a je spuštěn. Poté hacker získá kontrolu nad systémem.
Existuje pět hlavních kroků při útocích s přetečením vyrovnávací paměti:
- Špice
- Fuzzing
- Nalezení offsetu
- Přepsání EIP nebo zpáteční adresy
- Využití zranitelnosti
Špičkování je prvním krokem. Zde hackeři najdou část paměti programu, která je zranitelná vůči přetečení vyrovnávací paměti. Pak přichází fuzzing, který je podobný spikingu, ale zde hacker posílá znaky do programu, aby zjistil, zda jej lze prolomit. Jakmile je úspěšný, útočník pokračuje v hledání offsetu, což je místo, kde došlo k přetečení vyrovnávací paměti. To se provádí za účelem zjištění velikosti vyrovnávací paměti a návratové adresy. Poté hacker vloží škodlivý kód shellu a ovládne systém.
Jaké jsou typy útoků přetečením vyrovnávací paměti?
Existují dva hlavní typy útoků s přetečením vyrovnávací paměti: útoky založené na zásobníku a útoky založené na haldě.
1. Útoky přetečení vyrovnávací paměti založené na zásobníku
Útoky s přetečením vyrovnávací paměti založené na zásobníku jsou nejoblíbenějším typem útoků s přetečením vyrovnávací paměti. Vyskytují se při přetečení a zneužití systémové paměti zásobníku. To je také známé jako rozbíjení zásobníku.
2. Útoky přetečením vyrovnávací paměti založené na haldě
Tento typ přetečení zásobníku není příliš běžný, protože je obtížné jej implementovat a využít. Nastává, když paměť přidělená programu přeteče. V lednu 2021 Google objevil přetečení vyrovnávací paměti založené na haldě zranitelnost v komponentě V8 prohlížeče Chrome.
Jak můžete zabránit útokům přetečením vyrovnávací paměti?
Útoky s přetečením vyrovnávací paměti lze zmírnit pomocí ochrany za běhu OS, bezpečných programovacích jazyků, randomizace rozložení adresního prostoru a zajištění celkových správných bezpečnostních opatření.
1. Použití OS Runtime Protection
Runtime ochrana je také známá jako kontrola hranic runtime pole. Tím je zajištěno, že každý spuštěný program je v dostupné vyrovnávací paměti nebo paměti. A kontroluje všechna data zapsaná do paměti systému. To ztěžuje hackerům přepisování dat do systému a zneužití zranitelnosti.
2. Použití bezpečných programovacích jazyků
Programovací jazyky jako C a C++ neimplementují kontrolu hranic běhového pole, protože kontrola každého programu zapsaného do systému vyžaduje další kód a zpomaluje jej. Proto jsou náchylnější k útokům přetečení vyrovnávací paměti. Použití bezpečnějších jazyků jako C#, Java a Python je lepší, protože u nich hrozí nižší riziko útoků přetečením vyrovnávací paměti.
3. Použít randomizaci rozložení adresního prostoru (ASLR)
Toto bezpečnostní opatření náhodně přiřazuje adresy programů a funkcí v paměti systému různým datovým oblastem. Útočníkovi ztěžuje procházení citlivými funkcemi v paměti.
4. Zajistěte přísné bezpečnostní zásady
To zahrnuje pravidelnou aktualizaci systému, ověřování všech dat zapsaných do systému a přidělování nejmenších oprávnění uživatelům. Se správnými bezpečnostními zásadami byste se neměli obávat útoku přetečení vyrovnávací paměti.
Udržování pevného zabezpečení je nezbytné pro boj s útoky přetečením vyrovnávací paměti
Podle populárního přísloví v oblasti bezpečnosti „dokud je systém používán lidmi, existuje zranitelnost“, což je pravda a nevyhnutelné. Vždy však lze snížit šance na útok tím, že zajistíte, aby byla zavedena a přísně dodržována správná bezpečnostní opatření.
Pamatujte, že hackeři neustále nacházejí nové způsoby, jak zneužít zranitelnosti, jako je tato. Je tedy na vás, abyste před nimi byli o krok dál a sledovali nejnovější pokroky v oblasti kybernetické bezpečnosti.