Programinės įrangos pažeidžiamumas yra didelė kibernetinio saugumo problema. Jie leidžia užpulti programinės įrangos produktus, o kai tie produktai yra prijungti prie kitaip saugių tinklų, jie gali būti įsilaužėlių įėjimo taškas.
Visi profesionalūs programinės įrangos produktai yra kruopščiai išbandomi prieš išleidžiant. Deja, pažeidžiamumas vis dar yra dažnas reiškinys. Vienas iš būdų rasti papildomų pažeidžiamumų yra naudoti programinės įrangos testavimo metodą, vadinamą „fuzzing“.
Taigi, kas yra fuzzing ir kaip tai veikia?
Kas yra Fuzzing?
Fuzzing yra automatizuota programinės įrangos testavimo technika, kuria bandoma rasti pažeidžiamumą naudojant atsitiktines įvestis.
Programinė įranga dažnai elgiasi nenuspėjamai, kai vartotojas įveda kitą įvestį, nei buvo prašoma. Aprašymas yra praktika, kai įvedami dideli kiekiai netikėtų įvesčių ir įrašoma, kas vyksta. Idėja yra ta, kad vartotojas gali stebėti programinę įrangą ir nustatyti, ar nėra pažeidžiamumų.
Apibrėžimas naudojamas programinės įrangos produktams išbandyti, o saugos specialistai – nustatyti, ar tinklas yra saugus. Jį taip pat naudoja įsilaužėliai, kurie praktikuoja „fuzzing“, kad surastų pažeidžiamumą, kurį gali panaudoti patys.
Pažeidžiamumas, aptiktas naudojant „fuzzing“, labai skiriasi. Dėl netikėto įvesties programinė įranga gali tiesiog sugesti. Tačiau ji taip pat gali grąžinti privačią informaciją arba leisti vartotojui pasiekti dalis programinės įrangos, kuri kitu atveju būtų neribota.
Kokie yra „fuzzing“ privalumai?
„Fuzzing“ yra tik vienas iš daugelio būdų, kaip galima patikrinti programinės įrangos produktų pažeidžiamumą. Jis populiarus, nes:
- Sujungimas yra visiškai automatizuotas. Sukūrus neaiškią programą, ji gali toliau ieškoti pažeidžiamumų be žmogaus indėlio.
- Fuzzing gali rasti pažeidžiamumų, kurių neaptinka kiti programinės įrangos testavimo metodai. Dėl šios priežasties jis dažnai naudojamas kartu su rankiniais metodais.
- Apibrėžimą dažnai naudoja įsilaužėliai rasti nulinės dienos pažeidžiamumą. Naudodami tuos pačius metodus, kaip ir įsilaužėliai, kūrėjai gali rasti nulinės dienos pažeidžiamumą dar prieš tai padarydami.
Kaip veikia Fuzzing?
Įrankis, naudojamas drožimui, paprastai turi tris komponentus. Jie dažnai vadinami poetu, kurjeriu ir orakulu.
Poetas
Poetas pradeda procesą ir yra atsakingas už testo atvejo sukūrimą. Bandomasis atvejis yra ilgas galimų įvesties sąrašas.
Kurjeris
Kurjeris įterpia visas atsitiktines įvestis į tikslinę programinę įrangą. „Fuzzers“ sukurti taip, kad tai padarytų automatiškai, todėl galima masiškai išbandyti didelius įvesties kiekius.
Orakulas
Orakulas patikrina, ar dėl kurios nors įvesties programinė įranga daro ką nors kita, nei ji buvo skirta. Jei „fuzzing“ vykdomas teisėtais tikslais, elgesys gali būti atkartotas ir ištaisytas. Arba, jei „fuzzing“ atlieka įsilaužėlis, o netikėtas elgesys yra naudingas, jis gali būti naudojamas kenkėjiškiems tikslams.
Kaip užpuolikai naudoja „fuzzing“?
„Fuzzing“ yra populiarus įsilaužėlių metodas, nes jis leidžia jiems rasti programinės įrangos pažeidžiamumą neturint prieigos prie šaltinio kodo. Kadangi fuzzing yra automatizuotas, jį taip pat lengva atlikti. Jei įsilaužėlis aptinka pažeidžiamumą, jis gali atlikti toliau nurodytas atakas.
DDoS atakos
Jei „fuzzing“ nustato, kad tam tikroms įvestims apdoroti reikia daug laiko, ši informacija gali būti naudojama DDoS atakai pradėti. DDoS ataka apima tiek daug užklausų siuntimą sistemai, kad ji nustoja veikti. Apibendrinimas leidžia pritaikyti užklausas taip, kad joms atsakyti prireiktų daugiausia sistemos išteklių.
SQL įpurškimas
SQL injekcijos ataka yra tada, kai kenkėjiški SQL teiginiai siunčiami į programą. Jei šie teiginiai nėra tinkamai išvalyti, jie gali leisti užpuolikui sąveikauti su duomenų baze. Tai gali leisti jiems pavogti duomenis arba juos modifikuoti. Apibendrinimas yra veiksminga priemonė bandant pateikti didelius SQL sakinių kiekius ir nustatyti, ar jie duoda teigiamą atsakymą.
Buferio perpildymas
Buferio perpildymo ataka yra tada, kai į programos buferį įtraukiama daugiau duomenų, nei ji gali apdoroti. Pagal šį scenarijų įsilaužėlis gali priversti tą programą vykdyti kenkėjišką kodą. Tai gali būti naudojama norint pavogti duomenis arba gauti neteisėtą prieigą. Fuzzing naudojamas ieškant įvesties, dėl kurių gali atsirasti buferio perpildymas.
Dulkių tipai
Sumaišymo įrankiai gali būti klasifikuojami pagal tai, kaip generuojami bandomieji atvejai, ir pagal tai, kiek žinoma apie sistemą.
Kvailas vs. Protingas
Kvailas neryškus įrašymas tiesiog prideda daug atsitiktinių įvesties duomenų. Ji nepasirenka įvesties, kurias greičiausiai priims programa. Taip lengviau įdiegti nieko nežinant apie programinę įrangą; tačiau tai taip pat labai neefektyvu, nes dauguma įvestų duomenų bus atmesti.
Išmanusis fuzzing generuoja įvestis, kurias programa greičiausiai priims. Tam reikia, kad vartotojas suprastų, koks įvesties formatas yra priimtinas, ir sugeneruotų didelius įvesties kiekius tuo formatu. Išmanusis fuzzing diegimas reikalauja daugiau pastangų ir produkto žinių, tačiau jis yra žymiai efektyvesnis.
Mutacinis vs. Kartų
Mutacijos fuzeriai priima įvestį, kuri buvo priimta anksčiau, ir atlieka nedidelius jo pakeitimus. Tai leidžia generuoti įvestis, kurios greičiausiai bus priimtos nežinant apie priimtą formatą.
Kartų fuzeriai sukuria visiškai naujas įvestis pagal tai, kas žinoma apie priimtą formatą.
Balta dėžutė vs. Juoda dėžė
„Black box fuzing“ naudojamas be jokios informacijos apie testuojamą programą. Jis yra mažiau efektyvus nei baltojo langelio miglotumas, bet gali būti taikomas bet kuriai programai be prieigos prie šaltinio kodo. Dėl to jis populiarus tarp įsilaužėlių.
Balto langelio miglotumas naudoja informaciją apie testuojamą programą, kad sukurtų įvestis, kurios greičiausiai bus priimtos ir sukelia pažeidžiamumą. Jį pirmiausia naudoja programinės įrangos kūrėjai, nes jis yra veiksmingesnis nei juodosios dėžės blankinimas.
Fuzzing yra galingas programinės įrangos testavimo metodas, kurį naudoja programinės įrangos kūrėjai, saugos specialistai ir įsilaužėliai. Jį įdiegti reikia minimalių pastangų ir jis gali rasti pažeidžiamumą, kurio neranda kiti programinės įrangos testavimo būdai.
Tai ypač svarbu saugumo požiūriu, nes dažnai naudojama nulinės dienos pažeidžiamumui aptikti. Šiuos pažeidžiamumus gali aptikti ir ištaisyti saugos specialistai arba juos gali aptikti ir išnaudoti įsilaužėliai.