Kodėl programinės įrangos klaidų įtraukimas gali padaryti ją saugesnę

Kalbant apie radaro sekimą, viena veiksmingiausių atsakomųjų priemonių yra aliuminio juostelių arba metalizuoto plastiko debesies paleidimas. Jie stipriai atspindi radarą ir sukuria tūkstančius taikinių, kurie užlieja ir supainioja radaro grįžimą. Tai supainioja viską, kas bando jus sekti, pavyzdžiui, radaru valdomą raketą.





Dauguma karinių orlaivių ir karo laivų bei daugelis balistinių raketų turi jaukų sistemas, kuriose yra pelų. O dabar kibernetinio saugumo tyrinėtojai tą pačią idėją taiko programinei įrangai.

Idėja iš principo paprasta. Programinėje įrangoje dažnai yra klaidų, kurių daugumos jos kūrėjai ir teisėti vartotojai nepastebi. Tačiau kenkėjiški veikėjai aktyviai ieško šių klaidų, kad galėtų jas išnaudoti tikslinėms atakoms. Jų tikslas – perimti kompiuterį ar kitaip juo manipuliuoti.

Tačiau ne visos klaidos yra vienodos. Kai kurių negalima išnaudoti kenkėjiškais tikslais ir jie nedaro nieko blogiau, nei sukelia programos gedimą. Tai gali būti rimta, tačiau yra didelė programinės įrangos klasė, pvz., foninės mikropaslaugos, kuri yra sukurta grakščiai valdyti gedimus iš naujo paleidžiant programinę įrangą, o vartotojas nėra išmintingesnis. Šios klaidos yra daug ne tokios rimtos, nei tos, kurios leidžia valdyti piktybiškai.



Tačiau atskirti juos ne visada paprasta. Kai kenkėjiški programuotojai aptinka klaidų, jie turi atskirti tas, kurios yra tikrai pavojingos, nuo tų, kurios yra palyginti nepiktybinės, o šis procesas paprastai yra sunkus ir atima daug laiko.

Tai yra naujo požiūrio, kurį sukūrė Zhenghao Hu ir kolegos iš Niujorko universiteto, pagrindas. Kodėl gi neužpildžius įprasto kodo gerybinėmis klaidomis, kad būtų galima apgauti potencialius užpuolikus?

Idėja yra priversti užpuolikus išnaudoti savo išteklius ieškant ir išbandant klaidas, kurios jiems nebus naudingos. Hu ir kiti jaukus vadina pelais, panašiai kaip aliuminio juostelės, naudojamos radarų operatoriams apgauti.



Idėja yra tik naujausias žingsnis vis sudėtingesniame katės ir pelės žaidime, supriešinančio saugumo ekspertus su užpuolikais. Pastaraisiais metais įvairios grupės sukūrė programas, kurios ieško kodo ir ieško pažeidžiamumų, kuriuos gali išnaudoti užpuolikas. Saugumo ekspertai naudoja šį metodą, kad surastų ir pašalintų šias spragas, kol kodas tampa viešas, o piktybiniai užpuolikai naudoja tą patį metodą, kad surastų klaidas, kurias gali išnaudoti.

Tačiau saugumo tyrinėtojams sunku kurti šias programas ir pirmiausia reikia turėti programinės įrangos pažeidžiamumą. Taigi mokslininkai sukūrė kitą įrankį, kuris automatiškai prideda šias klaidas programinėje įrangoje, kad jas vėliau galėtų aptikti pažeidžiamumo paieškos programa.

Pasirodo, pridėti klaidų jokiu būdu nėra paprasta. Atsitiktiniai kodo pakeitimai daro jį nenaudingu, o ne sukelia įdomių anomalijų. Vietoj to, procesas apima kodo paleidimą naudojant skirtingus įvestis ir stebėjimą, kas atsitiks su šiomis įvestimis, kai kodas progresuoja.



Šis procesas ieško programos taškų, kuriuose įvestis nebenaudojama priimant būsimus sprendimus. Tokiu atveju ši neveikianti įvestis gali būti piktybiškai manipuliuojama, siekiant sugadinti arba perpildyti atmintį.

Pažeidžiamumo nustatymo programa pažymi, kur yra šios negyvos zonos, kad vėliau būtų galima jas išnaudoti.

Pasirodo, šios galimos klaidos yra dažnos kode, parašytame tokiomis kalbomis kaip C ir C++, kurios neturi sistemų, kurios prižiūri atminties naudojimą.



„Hu“ ir „co“ tiesiog naudoja šį metodą, kad įtrauktų atminties sugadinimo klaidas visame kode. Įprastomis aplinkybėmis šios klaidos yra gerybinės. Tačiau jei juos suranda piktavalis veikėjas, juos galima išnaudoti tik norint sugriauti programą – ne dėl ko nors baisesnio. Štai kodėl jie elgiasi kaip pelai.

Užpuolikai, bandantys aptikti programinės įrangos klaidas ir jas išnaudoti, labai tikėtina, kad aptiks tyčia įdėtą neišnaudojamą klaidą ir iššvaistys brangius išteklius bandydami sukurti veikiantį išnaudojimą, sako Hu ir kt.

Komanda toliau parodo, kad dabartiniai galimų klaidų aptikimo procesai yra suklaidinami dėl šio požiūrio. Mes parodome, kad programinės įrangos funkcionalumas nėra pažeistas, ir parodome, kad mūsų klaidos atrodo išnaudotos dabartiniams suskirstymo įrankiams.

Tai įdomus metodas, galintis gerokai atstumti piktybinius užpuolikus. Manome, kad pelų klaidos gali būti veiksminga atgrasymo priemonė tiek nuo žmonių užpuolikų, tiek nuo automatizuotų kibernetinių samprotavimo sistemų, tarkime Hu ir kt.

Tačiau tai taip pat kelia įdomių klausimų. Pavyzdžiui, nėra jokių faktinių įrodymų, kad klaidų nustatymas, siekiant surasti tas, kurias galima išnaudoti, būtinai yra sunkus ir atima daug laiko. Teoriškai gali būti, kad kažkas kažkur rado greitą būdą tai padaryti.

Jei paaiškėja, kad yra būdas lengvai atskirti pelų klaidas nuo išnaudojamų, toks požiūris tampa mažiau vertingas. Iš tiesų, Hu ir bendradarbiai nesistengia slėpti ar užmaskuoti savo klaidų. Tai reiškia, kad šiuo metu juose yra daug artefaktų, kuriuos užpuolikai galėtų naudoti norėdami juos atpažinti ir ignoruoti, sako jie.

Taip pat labai mažai skiriasi šios suleistos klaidos. [Tai] gali leisti užpuolikui nustatyti mūsų gaminamų klaidų modelius ir pašalinti tuos, kurie atitinka modelį, sako jie.

Tačiau laukia didelis potencialas. Idėja pridėti klaidų, o ne jas pašalinti yra labai piktavališkas požiūris į elektroninius nusikaltimus ir turėtų paskatinti keletą įdomių ateities tyrimų būdų.

Nuoroda: arxiv.org/abs/1808.00659 : Pelų klaidos: užpuolikų atgrasymas patobulinus programinę įrangą

paslėpti