Hackeri môžu prevziať kontrolu nad systémom maximalizáciou úložnej kapacity služby. Ako teda hackeri vykonávajú takéto útoky s pretečením vyrovnávacej pamäte?

Ako hackeri útočia na systémy pomocou vírusov a malvéru? Niekedy to môže byť ransomware; niekedy to môže byť útok, ktorý spotrebuje vaše systémové požiadavky. Pretečenie vyrovnávacej pamäte je jednou z týchto metód útoku – ale čo to vlastne je? Ako tieto útoky fungujú?

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

Takže čo sú vlastne vyrovnávacia pamäť a zásobník? Vyrovnávacia pamäť je pole, kde niektoré vstupné informácie, ktoré poskytnete počítaču, čakajú, kým sa dostanú do pamäte. Vyvolanie údajov z pamäte je únavná operácia systému. Keď je teda v oblasti vyrovnávacej pamäte dostatok miesta, zavoláte dáta priamo odtiaľto. To znamená zvýšenie výkonu vášho zariadenia. Samozrejme, keď sa miesto dostupné pre vyrovnávaciu pamäť zaplní, je potrebné ho zapísať do pamäte.

Zásobník je v podstate dátová štruktúra, v ktorej sa uskutočňujú operácie presunu (pridania) a vyzdvihnutia (odstránenia). Koncepty vyrovnávacej pamäte a zásobníka sú dosť podobné; vyrovnávacia pamäť však funguje ako zásobník, ktorý dočasne ukladá prichádzajúce údaje.

instagram viewer

Pretečenie vyrovnávacej pamäte môže byť náročnou témou, no ako už názov napovedá, vyskytuje sa pri preťažení dát. Napríklad sa chcete prihlásiť do systému. Vývojári môžu pre používateľské meno prideliť 250 bajtov priestoru. Ak zadáte 300 bajtov údajov, vyrovnávacia pamäť pretečie. Toto pretečenie môže ovplyvniť ďalšie údaje v pamäti a spôsobiť poškodenie.

To je skvelé pre hackerov. Kyberzločinci môžu skombinovať tento neporiadok s rôznymi vektormi útokov, napríklad hacknúť systém a prihlásiť sa ako správca.

Aby ste pochopili pretečenie vyrovnávacej pamäte, hlavnými témami, ktoré musíte poznať, budú Vnútorná architektúra CPU, pamäťové registre a ako pamäť spracováva dáta. Tu je niekoľko pojmov o CPU, o ktorých potrebujete vedieť.

Montážny kód

Nízkoúrovňový programovací jazyk, teda blízko strojovému jazyku.

Buffer

Pevná veľkosť pridelený pamäťový priestor.

Bajtový kód

Kompilovateľná stredná jazyková forma kódu napísaná v jazyku vysokej úrovne.

Kompilátor

Program, ktorý prevádza programovací jazyk na strojový kód.

Hromada

Dynamický, variabilný pamäťový priestor.

Základy teórie pamäti

Bez pochopenia teórie pamäte môže byť v praxi ťažké riešiť problémy s pretečením vyrovnávacej pamäte. Môžete si to predstaviť, ako keď sa pokúšate postaviť dom bez toho, aby ste vedeli, ako urobiť stenu.

Predstavte si, že chcete spustiť pretečenie vyrovnávacej pamäte z pohľadu hackera. Na to musíte manipulovať s pamäťou a nechať CPU spustiť váš kód. Ak by ste boli niekto so zlými úmyslami, vaším cieľom by bolo preťažiť pamäť a manipulovať aj so súvislými oblasťami pamäte.

Najprv sa však musíte zamerať na koncepty haldy, zásobníka a textového segmentu.

Počas vytvárania zásobníka pamäť používa vysoké adresy pamäte. Vysoké adresy pamäte znamenajú oblasť rozšírenej pamäte. Potom začnú hodnoty adresy klesať. Pamäťový zásobník používa počas využívania pamäte metódu nazývanú LIFO (Last In, First Out). Premenné v pamäti zásobníka sú platné len v rozsahu, v ktorom sú definované. Ak sú mimo tohto rozsahu, dôjde k chybe.

Na druhej strane zásobníková pamäť pracuje dynamicky a nemusí začínať na vysokých adresách. Nie je stanovený limit na haldovú pamäť; všetky limity sú dané operačným systémom. Pamäť haldy je možné meniť dynamicky a tieto limity sa môžu meniť podľa potrieb užívateľa počas používania haldy. Limity haldy pamäte závisia od faktorov určených operačným systémom a hardvérom. Inými slovami, ponúka dynamické využitie v rámci týchto limitov.

Textový segment obsahuje kód programu a dátové segmenty obsahujú globálne údaje. Vysoký podiel adries zásobník a halda pamäte medzi nimi. Systém prideľuje obe pamäte za behu.

Aby ste lepšie porozumeli pretečeniu vyrovnávacej pamäte, mali by ste preskúmať univerzálne dátové registre, ktoré architektúra vášho počítača používa na ukladanie údajov. Namiesto toho, aby ste analyzovali každý záznam jednotlivo, zamerajte sa na to podstatné.

  • ESP (Extended Stack Ukazovateľ): Tento register obsahuje adresu v hornej časti zásobníka.
  • EBP (rozšírený základný ukazovateľ): Toto drží základný ukazovateľ.
  • EIP (Extended Instruction Ukazovateľ): A tento register obsahuje adresu ďalšej inštrukcie, ktorá sa má vykonať.

Tieto technické výrazy môžu znieť trochu mätúco, ale predstavte si ich všetky ako malé oddiely v pamäti.

Ako fungujú útoky s pretečením vyrovnávacej pamäte?

Keď pridáte nové údaje do ľubovoľného zásobníka, tieto údaje budú umiestnené navrchu. Všetky nové údaje sa potom presunú nadol. ESP je na vrchole zásobníka. Takže v tomto prípade ESP ide na nižšiu adresu pamäte. Predstavte si, že údaje pridané vyššie tlačia ESP nadol.

Keď sa program spustí, systém vytvorí zásobníkový rámec s lokálnymi premennými. Hlavným účelom útoku pretečenia vyrovnávacej pamäte je získať prístup k EIP alebo návratovej adrese. Hacker s prístupom k tejto adrese jej môže prikázať, aby poukázala na akýkoľvek škodlivý kód, ktorý chcú, čo následne ovplyvní širší systém.

S každým novým bitom údajov zásobník rastie smerom k EBP. Skutočnou otázkou je, že ak zadáme príliš veľa údajov, môžeme posunúť EBP smerom k EIP? Týmto spôsobom sa požadované údaje alebo kód nachádzajú v EIP a môžete vidieť požadované výsledky. Zostáva to už len spustiť. Keď program spustíte, ukáže na váš kód EIP a spustí sa. Výsledkom je, že ak ste boli hackerom, vykonali ste svoj prvý útok s pretečením vyrovnávacej pamäte.

Ak chcete vziať príklad z iného uhla pohľadu, môžete zvážiť kvapaliny rôznych hustôt, nazývané ESP, EBP a EIP, v nádobe. Predstavte si, že ESP sa nachádza v hornej časti nádoby, pretože jej hustota je nižšia. Rovnako ako olivový olej a voda by sa nemali miešať. Škodlivý kód je teda iná tekutina – keď ju pridáte do kontajnera, naruší túto rovnováhu, vytlačí časť tekutiny a zmieša sa s EIP. To bude indikovať pretečenie vyrovnávacej pamäte.

Ako sa chrániť pred útokmi pretečenia vyrovnávacej pamäte

Ako teda tomu zabrániť?

Po prvé, je dôležité osvojiť si správnu prax kódovania počas celého procesu vývoja softvéru, aby sa minimalizovali bezpečnostné chyby. Starostlivo napísaný kód môže znížiť pravdepodobnosť pretečenia vyrovnávacej pamäte.

Ďalším krokom je použitie obranných mechanizmov umožňujúcich monitorovanie pamäťových oblastí, kontrolu limitov vyrovnávacích pamätí a detekciu útokov. Nakoniec musíte pravidelne aktualizovať systémy a aplikovať opravy. Aktualizácie, ktoré opravujú slabé miesta, sťažujú útočníkom zneužitie známych zraniteľností. Používanie obranných nástrojov, ako je softvér a firewall, tiež poskytuje ďalšiu vrstvu zabezpečenia.

Podniknite kroky proti pretečeniu vyrovnávacej pamäte

Útoky s pretečením vyrovnávacej pamäte predstavujú významnú hrozbu pre vašu kybernetickú bezpečnosť a prijatie preventívnych opatrení proti nim je prirodzene dôležité. Našťastie je možné tieto útoky blokovať a posilniť obranné mechanizmy. Mnoho dobrých bezpečnostných postupov, ako je udržiavanie aktualizácie softvéru na opravu záplat, pomáha chrániť pred takýmito útokmi, ako aj pred ďalšími zraniteľnosťami.