Katru dienu hakeri visā pasaulē atklāj un izmanto jaunas vietņu, lietojumprogrammu un pat sistēmas arhitektūras ievainojamības. Viena izplatīta lieta visās elektroniskajās ierīcēs, gan vecās, gan jaunās, ir tā, ka tās darbina atmiņā saglabātās programmas. Hakeri to ir izmantojuši un atraduši ievainojamības, kas pazīstamas kā bufera pārpildes.

Lai gan tas nav jauns, bufera pārpildes uzbrukumi un ievainojamības ir radījušas haosu kibertelpā. Šeit mēs jums paskaidrosim, kas ir bufera pārpildes uzbrukumi un kā jūs varat tos novērst.

Izpratne par buferiem un sistēmas atmiņu

Lai saprastu, kas ir bufera pārpildes uzbrukums un kā tas darbojas, jums jāzina, kas ir buferis un kā darbojas datora atmiņa.

Stack un kaudzes atmiņa ir divas galvenās datora atmiņas funkcijas. Tās ir datu struktūras, ko izmanto atmiņas piešķiršanai. Lai gan tie ir līdzīgi, steka un kaudzes atmiņa atšķiras vairākos veidos.

Stacks, kurā tiek izmantota jēdziens Last-in, First-out (LIFO), tiek izmantots RAM (brīvpiekļuves atmiņā), lai īslaicīgi saglabā programmas izpildes, kamēr kaudze piešķir atmiņu globālajai atmiņai, izmantojot dinamisko piešķiršanu mainīgie. Bet viena lieta, kas viņiem ir kopīga, ir buferis.

Kas ir buferis?

Buferis ir atmiņas apgabals, ko izmanto datu glabāšanai, visticamāk, datora RAM, kamēr tas tiek pārvietots no vienas vietas uz citu. Šie dati parasti ir programmas, kas jāizpilda. Buferi tiek glabāti kaudzē vai kaudzē. Tie optimizē datu izpildi.

Kas ir bufera pārpilde?

Bufera pārpilde notiek, kad buferis saņem vairāk datu nekā tā krātuves ietilpība. Tā kā tas nespēj apstrādāt tik daudz datu, tas pārplūst.

Tagad datora atmiņā tieši pēc bufera vai bufera vietas ir atgriešanas adrese. Šo atgriešanas adresi faktiski sauc par paplašināto instrukciju rādītāju (EIP). Tās funkcija ir norādīt datoru uz noteiktu programmu, kad tā ir aizpildīta. Ja buferī ir vairāk datu, nekā tas var saturēt, un tas pārplūst, tas pārplūst atpakaļ adresē.

Lai to saprastu, pieņemsim, ka jums ir bufera vieta, kurā var ievietot tikai piecus burtus. Tātad, ja ievadāt tādus vārdus kā "cukurs" vai "miers", bufera plūsma to var saturēt. Bet, ja jums ir tāds vārds kā "autentifikācija", tas neizbēgami izplatīsies. Tas noved pie kļūdas vai avārijas sistēmā. Taču hakeri var izmantot šo ievainojamību, lai sāktu bufera pārpildes uzbrukumu.

Kas ir bufera pārplūdes uzbrukums un kā tas darbojas?

Bufera pārpildes uzbrukumi notiek, kad hakeris pārņem kontroli pār atgriešanas adresi vai EIP. Kad uzbrucējs zina sistēmas atmiņas lielumu, viņš var apzināti ierakstīt datus šajā sistēmā, lai to pārpildītu. Pēc tam viņi pārliecinās, ka EIP vai atgriešanas adrese ir rakstīta, lai norādītu uz programmu, kas var nodrošināt piekļuvi sistēmai vai atklāt sistēmā saglabāto sensitīvu informāciju.

Uzbrucējs pat var ierakstīt dažus datus, kas satur ļaunprātīgu kodu, un izraisīt bufera pārpildīšanu. Pēc tam tiek uzrakstīts EIP, lai novirzītu sistēmu atpakaļ uz ļaunprātīgo kodu, un tas tiek palaists. Pēc tam hakeris iegūst kontroli pār sistēmu.

Bufera pārpildes uzbrukumos ir pieci galvenie soļi:

  1. Spiking
  2. Izplūdis
  3. Nobīdes atrašana
  4. EIP vai atgriešanas adreses pārrakstīšana
  5. Ievainojamības izmantošana

Spiking ir pirmais solis. Šeit hakeri atrod programmas atmiņas daļu, kas ir neaizsargāta pret bufera pārpildīšanu. Pēc tam nāk fuzzing, kas ir līdzīgs spikingam, bet šeit hakeris nosūta rakstzīmes programmai, lai redzētu, vai to var sabojāt. Kad tas ir izdevies, uzbrucējs turpina atrast nobīdi, kur buferis ir pārpildīts. Tas tiek darīts, lai zinātu bufera lielumu un atgriešanas adresi. Pēc tam hakeris ievieto ļaunprātīgu čaulas kodu un kontrolē sistēmu.

Kādi ir bufera pārpildes uzbrukumu veidi?

Ir divi galvenie bufera pārpildes uzbrukumu veidi: uz steku balstīti un uz kaudzes balstīti uzbrukumi.

1. Stack-Based Buffer Overflow Attacks

Uz steku balstīti bufera pārpildes uzbrukumi ir vispopulārākais bufera pārpildes uzbrukumu veids. Tās rodas, kad sistēmas steka atmiņa tiek pārpildīta un izmantota. To sauc arī par kaudzes sagraušanu.

2. Uz kaudzes balstīti bufera pārplūdes uzbrukumi

Šāda veida steku pārpilde nav īpaši izplatīta, jo to ir grūti ieviest un izmantot. Tas notiek, kad programmai piešķirtā atmiņa pārplūst. 2021. gada janvārī Google atklāja kaudzes bufera pārpildīšanu ievainojamība Chrome V8 komponentā.

Kā jūs varat novērst bufera pārplūdes uzbrukumus?

Bufera pārpildes uzbrukumus var mazināt, izmantojot OS izpildlaika aizsardzību, drošas programmēšanas valodas, adrešu telpas izkārtojuma randomizāciju un vispārēju pareizu drošības pasākumu nodrošināšanu.

1. OS izpildlaika aizsardzības izmantošana

Izpildlaika aizsardzība ir pazīstama arī kā izpildlaika masīva robežu pārbaude. Tas nodrošina, ka katra programma ir pieejama bufera vietā vai atmiņā. Un tas pārbauda visus datus, kas ierakstīti sistēmas atmiņā. Tādējādi hakeriem ir grūti pārrakstīt datus sistēmā un izmantot ievainojamību.

2. Drošu programmēšanas valodu izmantošana

Programmēšanas valodas, piemēram, C un C++, neievieš izpildlaika masīva robežu pārbaudi, jo ir nepieciešams papildu kods, lai pārbaudītu katru sistēmā ierakstīto programmu, un tas palēnina to. Tāpēc tie ir vairāk pakļauti bufera pārpildes uzbrukumiem. Labāk ir izmantot drošākas valodas, piemēram, C#, Java un Python, jo tām ir mazāks bufera pārpildes uzbrukumu risks.

3. Izmantojiet adrešu telpas izkārtojuma nejaušību (ASLR)

Šis drošības pasākums nejauši piešķir programmu un funkciju adreses sistēmas atmiņā dažādiem datu apgabaliem. Tas apgrūtina uzbrucējam pārvietoties pa sensitīvajām funkcijām atmiņā.

4. Nodrošiniet stingras drošības politikas

Tas ietver sistēmas regulāru atjaunināšanu, visu sistēmā ierakstīto datu apstiprināšanu un vismazāko privilēģiju piešķiršanu lietotājiem. Ja ir ieviestas atbilstošas ​​drošības politikas, jums nevajadzētu uztraukties par bufera pārpildes uzbrukumu.

Lai cīnītos pret bufera pārplūdes uzbrukumiem, ir svarīgi nodrošināt stingru drošību

Saskaņā ar populāru teicienu drošības jomā, "kamēr sistēmu izmanto cilvēki, pastāv ievainojamība", kas ir patiess un neizbēgams. Tomēr vienmēr var samazināt uzbrukuma iespējas, nodrošinot, ka ir ieviesti atbilstoši drošības pasākumi un tie tiek stingri ievēroti.

Atcerieties, ka hakeri pastāvīgi atrod jaunus veidus, kā izmantot tādas ievainojamības kā šī. Tāpēc jums ir jāpaliek tiem priekšā, sekojot līdzi jaunākajiem sasniegumiem kiberdrošības jomā.