Häkkerid üle maailma avastavad ja kasutavad iga päev veebisaitidel, rakendustes ja isegi süsteemiarhitektuuris uusi haavatavusi. Üks levinud asi kõigis elektroonikaseadmetes, nii vanades kui ka uutes, on see, et neid käitavad mällu salvestatud programmid. Häkkerid on seda ära kasutanud ja leidnud turvaauke, mida nimetatakse puhvri ületäitumiseks.

Kuigi see pole uus, on puhvri ületäitumise rünnakud ja haavatavused küberruumis kaost tekitanud. Siin selgitame teile, mis on puhvri ületäitumise rünnakud ja kuidas saate neid ära hoida.

Puhvrite ja süsteemimälu mõistmine

Et mõista, mis on puhvri ületäitumise rünnak ja kuidas see toimib, peate teadma, mis on puhver ja kuidas arvuti mälu töötab.

Virna ja kuhja mälu on arvuti mälu kaks peamist funktsiooni. Need on andmestruktuurid, mida kasutatakse mälu eraldamiseks. Kuigi nad on sarnased, virna ja kuhja mälu erinevad mitmel viisil.

Pinu, mis kasutab kontseptsiooni Last-in, First-out (LIFO) kontseptsiooni, kasutatakse RAM-is (muutmälus). salvestab programmi täitmised ajutiselt, samal ajal kui hunnik määrab mälu dünaamilise jaotuse abil globaalsele muutujad. Kuid üks asi, mis neil on ühine, on puhver.

instagram viewer

Mis on puhver?

Puhver on mälupiirkond, mida kasutatakse andmete salvestamiseks, tõenäoliselt arvuti RAM-is, samal ajal kui neid ühest kohast teise teisaldatakse. Need andmed on tavaliselt programmid, mida tuleb käivitada. Puhvreid hoitakse virnas või hunnikus. Need optimeerivad andmete täitmist.

Mis on puhvri ületäitumine?

Puhvri ületäitumine tekib siis, kui puhver saab rohkem andmeid kui selle salvestusmaht. Kuna see ei suuda seda andmemahtu töödelda, ajab see üle.

Nüüd on arvuti mälus vahetult pärast puhvrit või puhverruumi tagastusaadress. Seda tagastusaadressi nimetatakse tegelikult laiendatud juhiste osutiks (EIP). Selle ülesanne on suunata arvuti täidetud programmile. Kui puhvris on rohkem andmeid, kui see mahutab, ja see täitub üle, voolab see üle tagastusaadressile.

Selle mõistmiseks oletame, et teil on puhver, mis mahutab ainult viis tähte. Nii et kui sisestate sõnad nagu "suhkur" või "rahu", võib puhvervoog seda sisaldada. Kuid kui teil on selline sõna nagu "autentimine", levib see paratamatult üle. See toob kaasa vea või krahhi süsteemis. Kuid häkkerid saavad seda haavatavust ära kasutada puhvri ületäitumise rünnaku alustamiseks.

Mis on puhvri ületäitumise rünnak ja kuidas see toimib?

Puhvri ületäitumise rünnakud toimuvad siis, kui häkker võtab kontrolli tagastusaadressi või EIP-i üle. Kui ründaja teab süsteemi mälu suurust, saab ta tahtlikult sellesse süsteemi andmeid kirjutada, et seda üle täita. Seejärel veenduvad nad, et EIP või tagastusaadress on kirjutatud nii, et see osutaks programmile, mis annab neile juurdepääsu süsteemile või paljastab süsteemi salvestatud tundlikku teavet.

Ründaja võib isegi kirjutada andmeid, mis sisaldavad pahatahtlikku koodi ja põhjustada puhvri ületäitumise. Seejärel kirjutatakse EIP, et suunata süsteem tagasi pahatahtlikule koodile, ja see käivitatakse. Seejärel saab häkker süsteemi üle kontrolli.

Puhvri ületäitumise rünnakutes on viis peamist sammu:

  1. Spiking
  2. Hägune
  3. Nihke leidmine
  4. EIP või tagastusaadressi ülekirjutamine
  5. Haavatavuse ärakasutamine

Spiking on esimene samm. Siin leiavad häkkerid programmi mälu osa, mis on puhvri ületäitumise suhtes haavatav. Seejärel tuleb fuzzing, mis sarnaneb spikinguga, kuid siin saadab häkker programmi tähemärke, et näha, kas seda saab katki teha. Kui see õnnestub, otsib ründaja nihke, mis on koht, kus puhver ületas. Seda tehakse selleks, et teada saada puhvri suurust ja tagastusaadressi. Seejärel sisestab häkker pahatahtliku shellkoodi ja kontrollib süsteemi.

Millised on puhvri ületäitumise rünnakute tüübid?

Puhvri ületäitumise rünnakuid on kahte peamist tüüpi: virnapõhised ja kuhjapõhised rünnakud.

1. Virnapõhised puhvri ülevoolurünnakud

Pinupõhised puhvri ületäitumise rünnakud on kõige populaarsem puhvri ületäitumise rünnak. Need tekivad siis, kui süsteemi pinumälu ületatakse ja seda kasutatakse. Seda tuntakse ka kui virna purustamist.

2. Kuhjapõhised puhvri ülevoolurünnakud

Seda tüüpi pinu ületäitumine ei ole väga levinud, kuna seda on raske rakendada ja ära kasutada. See ilmneb siis, kui programmile eraldatud mälu täitub. 2021. aasta jaanuaris avastas Google kuhjapõhise puhvri ületäitumise haavatavus Chrome'i V8 komponendis.

Kuidas saate puhvri ületäitumise rünnakuid ära hoida?

Puhvri ületäitumise rünnakuid saab leevendada OS-i käitusaja kaitsete, turvaliste programmeerimiskeelte, aadressiruumi paigutuse randomiseerimise ja üldiste õigete turvameetmete tagamise abil.

1. OS-i käitusaja kaitse kasutamine

Käitusaja kaitse on tuntud ka kui käitusaja massiivi piiride kontrollimine. See tagab, et iga käivitatav programm on vabas puhverruumis või mälus. Ja see kontrollib kõiki süsteemi mällu kirjutatud andmeid. See muudab häkkeritel keeruliseks andmete süsteemi ülekirjutamise ja haavatavuse ärakasutamise.

2. Turvaliste programmeerimiskeelte kasutamine

Programmeerimiskeeled, nagu C ja C++, ei rakenda käitusaja massiivipiiride kontrollimist, kuna iga süsteemi kirjutatud programmi kontrollimiseks kulub lisakoodi ja see aeglustab seda. Seetõttu on nad vastuvõtlikumad puhvri ületäitumise rünnakutele. Turvalisemate keelte (nt C#, Java ja Python) kasutamine on parem, kuna neil on väiksem puhvri ületäitumise rünnakute oht.

3. Kasutage aadressiruumi paigutuse juhuslikku muutmist (ASLR)

See turvameede määrab juhuslikult süsteemi mälus olevate programmide ja funktsioonide aadressid erinevatele andmepiirkondadele. See raskendab ründajal mälus tundlike funktsioonide vahel navigeerimist.

4. Tagage ranged turvapoliitikad

See hõlmab süsteemi korrapärast värskendamist, kõigi süsteemi kirjutatud andmete valideerimist ja kasutajatele vähimate õiguste määramist. Õigete turvapoliitikate korral ei peaks te muretsema puhvri ületäitumise rünnaku pärast.

Turvalisuse tagamine on puhvri ületäitumise rünnakute vastu võitlemiseks hädavajalik

Turvalisuse vallas levinud ütluse kohaselt "nii kaua kui inimesed kasutavad süsteemi, on haavatavus olemas", mis on tõsi ja vältimatu. Rünnakuvõimalusi saab aga alati vähendada, tagades õigete turvameetmete olemasolu ja nende range järgimise.

Pidage meeles, et häkkerid leiavad pidevalt uusi viise, kuidas selliseid turvaauke ära kasutada. Seetõttu on teie ülesanne olla neist ees, hoides silma peal küberturvalisuse valdkonna viimastel edusammudel.