Kāpēc kļūdu pievienošana programmatūrai var padarīt to drošāku?

Runājot par radara izsekošanu, viens no efektīvākajiem pretpasākumiem ir alumīnija sloksņu vai metalizētas plastmasas mākoņa atbrīvošana. Tie spēcīgi atstaro radaru un rada tūkstošiem mērķu, kas izplūst un mulsina radara atdevi. Tas sajauc visu, kas mēģina jūs izsekot, piemēram, radara vadītu raķeti.





Lielākajai daļai militāro lidmašīnu un karakuģu, kā arī daudzām ballistiskajām raķetēm ir mānekļu sistēmas, kas ietver pelavas. Un tagad kiberdrošības pētnieki to pašu ideju piemēro programmatūrai.

Ideja principā ir vienkārša. Programmatūra bieži satur kļūdas, no kurām lielāko daļu tās veidotāji un likumīgie lietotāji nepamana. Taču ļaunprātīgi dalībnieki aktīvi meklē šīs kļūdas, lai varētu tās izmantot mērķtiecīgiem uzbrukumiem. Viņu mērķis ir pārņemt datoru vai citādi ar to manipulēt.

Bet ne visas kļūdas ir vienādas. Dažus no tiem nevar izmantot ļaunprātīgiem nolūkiem, un tie nedara neko sliktāku, kā izraisa programmas avāriju. Tas var būt nopietni, taču ir liela programmatūras klase, piemēram, fona mikropakalpojumi, kas ir izstrādāti, lai graciozi apstrādātu avārijas, restartējot programmatūru, kamēr lietotājs nav gudrāks. Šīs kļūdas ir daudz mazāk nopietnas nekā tās, kas ļauj ļaunprātīgi kontrolēt.



Bet atšķirt tos ne vienmēr ir vienkārši. Pēc tam, kad ļaunprātīgi kodētāji atrod kļūdas, viņiem ir jānošķir patiesi bīstamās no tām, kas ir salīdzinoši labdabīgas, un šis process parasti ir sarežģīts un laikietilpīgs.

Tas ir pamats jaunai pieejai, ko izstrādājis Zhenghao Hu un kolēģi no Ņujorkas universitātes. Kāpēc gan nepiepildīt parasto kodu ar labdabīgām kļūdām, lai apmānītu potenciālos uzbrucējus?

Ideja ir piespiest uzbrucējus izmantot savus resursus, lai atrastu un pārbaudītu kļūdas, kas viņiem nebūs noderīgas. Hu un citi šos mānekļus sauc par pelavām, līdzīgi kā alumīnija sloksnes, ko izmanto radaru operatoru apmānīšanai.



Šī ideja ir tikai jaunākais solis arvien sarežģītākā kaķa un peles spēlē, kurā drošības eksperti tiek pretstatīti uzbrucējiem. Pēdējos gados dažādas grupas ir izstrādājušas programmas, kas meklē kodu, meklējot ievainojamības, kuras uzbrucējs varētu izmantot. Drošības eksperti izmanto šo pieeju, lai atrastu un noņemtu šīs ievainojamības, pirms kods kļūst publiski pieejams, savukārt ļaunprātīgi uzbrucēji izmanto to pašu pieeju, lai atrastu kļūdas, kuras viņi var izmantot.

Taču drošības pētniekiem šo programmu izstrāde ir sarežģīta, un vispirms ir nepieciešama programmatūras ievainojamība. Tāpēc pētnieki ir izstrādājuši citu rīku, kas automātiski pievieno šīs kļūdas programmatūrai, lai vēlāk tās varētu atklāt ievainojamību meklēšanas programma.

Izrādās, ka kļūdu pievienošana nekādā gadījumā nav vienkārša. Nejaušas koda izmaiņas mēdz padarīt to bezjēdzīgu, nevis radīt interesantas anomālijas. Tā vietā process ietver koda palaišanu ar dažādām ieejām un uzraudzību, kas notiek ar šīm ievadēm, kodam progresējot.



Šajā procesā programmā tiek meklēti punkti, kuros ievade vairs netiek izmantota, lai pieņemtu turpmākus lēmumus. Tādā gadījumā šo mirušo ievadi var ļaunprātīgi manipulēt, lai sabojātu vai pārpildītu atmiņu.

Ievainojamību noteikšanas programma atzīmē, kur atrodas šīs mirušās zonas, lai tās vēlāk varētu izmantot.

Izrādās, ka šīs iespējamās kļūdas ir izplatītas kodā, kas rakstīts tādās valodās kā C un C++, kurām nav sistēmu, kas pārraudzītu atmiņas lietojumu.



Hu un co vienkārši izmanto šo pieeju, lai visā kodā pievienotu atmiņas bojājumu kļūdas. Parastos apstākļos šīs kļūdas ir labdabīgas. Bet, ja tos atrod ļaunprātīgs aktieris, tos var izmantot tikai, lai avarētu programmu, nevis kaut kam draudīgākam. Tāpēc viņi darbojas kā pelavas.

Uzbrucēji, kuri mēģina atrast un izmantot programmatūras kļūdas, ar lielu varbūtību atradīs tīši ievietotu neizmantojamu kļūdu un izšķērdēs dārgos resursus, mēģinot izveidot funkcionējošu izmantošanu, saka Hu un citi.

Komanda turpina parādīt, ka šī pieeja apmāna pašreizējos procesus potenciālo kļūdu noteikšanai. Mēs parādām, ka programmatūras funkcionalitāte netiek bojāta, un parādām, ka mūsu kļūdas izskatās izmantojamas pašreizējiem šķirošanas rīkiem, viņi saka.

Tā ir interesanta pieeja, kas var ievērojami novērst ļaunprātīgus uzbrucējus. Mēs uzskatām, ka pelavas var efektīvi atturēt gan no cilvēku uzbrucējiem, gan automatizētām kibernovērtējuma sistēmām, piemēram, Hu un citiem.

Bet tas arī rada dažus interesantus jautājumus. Piemēram, nav reālu pierādījumu tam, ka kļūdu noteikšana, lai atrastu tās, kuras ir izmantojamas, noteikti ir sarežģīta un laikietilpīga. Teorētiski iespējams, ka kāds kaut kur ir atradis ātru veidu, kā to izdarīt.

Ja izrādās, ka ir veids, kā viegli atšķirt pelavas no ekspluatējamām, šī pieeja kļūst mazāk vērtīga. Patiešām, Hu un co nemēģina slēpt vai slēpt savas kļūdas. Tas nozīmē, ka pašlaik tajos ir daudz artefaktu, ko uzbrucēji varētu izmantot, lai tos identificētu un ignorētu, viņi saka.

Arī šīs injicētās kļūdas atšķiras ļoti maz. Viņi saka, ka [Tas] varētu ļaut uzbrucējam identificēt mūsu radīto kļūdu modeļus un izslēgt tos, kas atbilst modelim.

Taču priekšā ir ievērojams potenciāls. Ideja pievienot kļūdas, nevis tos noņemt, ir ļoti ļauna pieeja kibernoziedzībai, un tai vajadzētu rosināt dažus interesantus nākotnes pētījumu virzienus.

Atsauce: arxiv.org/abs/1808.00659 : Pelas kļūdas: Uzbrucēju atturēšana, padarot programmatūru buggierīgāku

paslēpties