Hackeri na celom svete každý deň objavujú a využívajú nové zraniteľnosti webových stránok, aplikácií a dokonca aj systémovej architektúry. Jednou spoločnou vecou všetkých elektronických zariadení, starých alebo nových, je, že ich spúšťajú programy, ktoré sú uložené v pamäti. Hackeri to využili a našli slabé miesta známe ako pretečenie vyrovnávacej pamäte.

Hoci to nie je novinka, útoky a zraniteľné miesta s pretečením vyrovnávacej pamäte spôsobujú v kybernetickom priestore zmätok. Tu vám vysvetlíme, čo sú útoky s pretečením vyrovnávacej pamäte a ako im môžete zabrániť.

Pochopenie vyrovnávacích pamätí a systémovej pamäte

Aby ste pochopili, čo je útok s pretečením vyrovnávacej pamäte a ako funguje, musíte vedieť, čo je vyrovnávacia pamäť a ako funguje pamäť počítača.

Zásobník a halda pamäte sú dve hlavné vlastnosti pamäte počítača. Sú to dátové štruktúry používané na prideľovanie pamäte. Hoci sú podobné, zásobníková a haldová pamäť sa líšia viacerými spôsobmi.

Zásobník, ktorý využíva koncept Last-in, First-out (LIFO), sa používa v RAM (pamäti s náhodným prístupom) na dočasne ukladať vykonávania programov, zatiaľ čo halda priraďuje pamäť pomocou dynamickej alokácie globálnej premenné. Ale jedna vec, ktorú majú spoločnú, je nárazník.

instagram viewer

Čo je vyrovnávacia pamäť?

Vyrovnávacia pamäť je oblasť pamäte používaná na ukladanie údajov, s najväčšou pravdepodobnosťou v pamäti RAM počítača, zatiaľ čo sa presúvajú z jedného miesta na druhé. Tieto údaje sú zvyčajne programy, ktoré je potrebné vykonať. Buffery sú uložené v zásobníku alebo halde. Optimalizujú výkon dát.

Čo je pretečenie vyrovnávacej pamäte?

K pretečeniu vyrovnávacej pamäte dochádza, keď vyrovnávacia pamäť prijme viac údajov, než je jej úložná kapacita. Keďže nedokáže spracovať také množstvo údajov, dochádza k ich pretečeniu.

Teraz, v pamäti počítača, hneď za vyrovnávacou pamäťou alebo vyrovnávacím priestorom je návratová adresa. Táto návratová adresa sa v skutočnosti nazýva ukazovateľ rozšírenej inštrukcie (EIP). Jeho funkciou je po vyplnení nasmerovať počítač na určený program. Keď má vyrovnávacia pamäť viac údajov, než môže pojať, a pretečie, pretečie na návratovú adresu.

Aby ste to pochopili, predpokladajme, že máte medzipamäť, do ktorej sa zmestí iba päť písmen. Ak teda vyplníte slová ako „cukor“ alebo „mier“, tok vyrovnávacej pamäte ich môže obsahovať. Ale keď máte slovo ako "overenie", nevyhnutne sa to prevalí. To vedie k chybe alebo zlyhaniu systému. Hackeri však môžu túto zraniteľnosť zneužiť na spustenie útoku s pretečením vyrovnávacej pamäte.

Čo je to útok pretečenia vyrovnávacej pamäte a ako to funguje?

K útokom pretečenia vyrovnávacej pamäte dochádza, keď hacker prevezme kontrolu nad návratovou adresou alebo EIP. Keď útočník pozná veľkosť systémovej pamäte, môže úmyselne zapisovať údaje do tohto systému, len aby ho preplnil. Potom sa ubezpečia, že EIP alebo návratová adresa je zapísaná tak, aby ukazovala na program, ktorý im môže poskytnúť prístup do systému alebo odhaliť citlivé informácie uložené v systéme.

Útočník môže dokonca zapísať niektoré údaje, ktoré obsahujú škodlivý kód a spôsobiť pretečenie vyrovnávacej pamäte. Potom sa zapíše EIP, aby presmeroval systém späť na škodlivý kód, a spustí sa. Potom hacker získa kontrolu nad systémom.

Existuje päť hlavných krokov pri útokoch na pretečenie vyrovnávacej pamäte:

  1. Hroty
  2. Fuzzing
  3. Nájdenie posunu
  4. Prepísanie EIP alebo spiatočnej adresy
  5. Využitie zraniteľnosti

Špičkovanie je prvým krokom. Hackeri tu nájdu časť pamäte programu, ktorá je náchylná na pretečenie vyrovnávacej pamäte. Potom prichádza fuzzing, ktorý je podobný spikingu, ale tu hacker posiela znaky do programu, aby zistil, či ho možno prelomiť. Akonáhle je úspešný, útočník pokračuje v hľadaní offsetu, čo je miesto, kde došlo k pretečeniu vyrovnávacej pamäte. Toto sa robí, aby ste poznali veľkosť vyrovnávacej pamäte a návratovú adresu. Potom hacker vloží škodlivý kód shellu a ovláda systém.

Aké sú typy útokov na pretečenie vyrovnávacej pamäte?

Existujú dva hlavné typy útokov na pretečenie vyrovnávacej pamäte: útoky založené na zásobníku a útoky založené na halde.

1. Útoky s pretečením vyrovnávacej pamäte založené na zásobníku

Útoky s pretečením vyrovnávacej pamäte na báze zásobníkov sú najobľúbenejším typom útokov s pretečením vyrovnávacej pamäte. Vyskytujú sa, keď je zásobníková pamäť systému preplnená a zneužitá. Je tiež známy ako rozbíjanie zásobníkov.

2. Útoky s pretečením vyrovnávacej pamäte založené na halde

Tento typ pretečenia zásobníka nie je veľmi bežný, pretože je ťažké ho implementovať a využiť. Vyskytuje sa pri pretečení pamäte pridelenej programu. V januári 2021 Google objavil pretečenie vyrovnávacej pamäte založené na halde zraniteľnosť v komponente V8 prehliadača Chrome.

Ako môžete zabrániť útokom pretečenia vyrovnávacej pamäte?

Útoky s pretečením vyrovnávacej pamäte možno zmierniť pomocou ochrany operačného systému, bezpečných programovacích jazykov, randomizácie rozloženia adresného priestoru a zaistenia celkových správnych bezpečnostných opatrení.

1. Používanie OS Runtime Protection

Runtime ochrana je známa aj ako kontrola hraníc poľa runtime. To zaisťuje, že každý spustený program je vo vyrovnávacej pamäti alebo dostupnej pamäti. A kontroluje všetky údaje zapísané do pamäte systému. Hackerom to sťažuje prepísanie údajov do systému a zneužitie zraniteľnosti.

2. Používanie bezpečných programovacích jazykov

Programovacie jazyky ako C a C++ neimplementujú kontrolu hraníc poľa runtime, pretože si vyžaduje dodatočný kód na kontrolu každého programu zapísaného do systému a spomaľuje ho. Preto sú náchylnejšie na útoky s pretečením vyrovnávacej pamäte. Používanie bezpečnejších jazykov ako C#, Java a Python je lepšie, pretože majú nižšie riziko útokov na pretečenie vyrovnávacej pamäte.

3. Použiť randomizáciu rozloženia adresného priestoru (ASLR)

Toto bezpečnostné opatrenie náhodne priraďuje adresy programov a funkcií v pamäti systému rôznym oblastiam údajov. Útočníkovi sťažuje orientáciu v citlivých funkciách v pamäti.

4. Zabezpečte prísne bezpečnostné zásady

To zahŕňa pravidelnú aktualizáciu systému, overovanie všetkých údajov zapísaných do systému a prideľovanie najmenších privilégií používateľom. So správnymi bezpečnostnými politikami by ste sa nemali obávať útoku pretečenia vyrovnávacej pamäte.

Udržiavanie prísneho zabezpečenia je nevyhnutné na boj proti útokom pretečenia vyrovnávacej pamäte

Podľa populárneho príslovia v oblasti bezpečnosti „pokiaľ systém používajú ľudia, existuje zraniteľnosť“, čo je pravda a nevyhnutné. Pravdepodobnosť útoku je však vždy možné znížiť tým, že zabezpečíte, aby boli zavedené a prísne dodržiavané bezpečnostné opatrenia.

Pamätajte, že hackeri neustále nachádzajú nové spôsoby, ako zneužiť slabé miesta, ako je táto. Preto je na vás, aby ste pred nimi predbehli a sledovali najnovšie pokroky v oblasti kybernetickej bezpečnosti.