Kaip naudotis paprasta programa norint rasti programos kodo pažeidžiamumą

Graudit palaiko kelias programavimo kalbas ir leidžia integruoti kodų bazės saugumo testavimą tiesiai į kūrimo procesą.

Kaip naudotis paprasta programa norint rasti programos kodo pažeidžiamumą
Šaltinis: Unsplash (Markus Spiske)

Testavimas yra svarbi programinės įrangos kūrimo gyvavimo ciklo dalis. Yra daugybė testavimo tipų, kiekvienas iš jų išsprendžia savo problemą. Šiandien noriu pakalbėti apie saugos problemų kodą.

Akivaizdu, kad šiuolaikinėje programinės įrangos kūrimo realybėje svarbu užtikrinti procesų saugumą. Vienu metu netgi buvo įvestas specialus terminas „DevSecOps“. Šis terminas reiškia procedūrų, kuriomis siekiama nustatyti ir pašalinti programos pažeidžiamumą, seriją. Yra specializuotų atvirojo kodo sprendimų, skirtų pažeidžiamumui patikrinti pagal standartus OWASP, kuriuose aprašomi skirtingi šaltinio kodo pažeidžiamumo tipai ir elgesys.

Yra įvairių saugumo problemų sprendimo būdų, tokių kaip statinis programų saugos testavimas (SAST), dinaminis programų saugos testavimas (DAST), interaktyvus programų saugos testavimas (IAST), programinės įrangos sudėties analizė ir kt.

Statinis programos saugumo testavimas nustato jau parašyto kodo klaidas. Šis metodas nereikalauja, kad programa būtų paleista, todėl jis vadinamas statine analize.

Daugiausia dėmesio skirsiu statinio kodo analizei ir naudosiu paprastą atvirojo kodo įrankį, kad viską parodyčiau praktiškai.

Kodėl statinio kodo saugumo analizei pasirinkau atvirojo kodo įrankį

Tam yra keletas priežasčių: pirma, ji nemokama, nes naudojate įrankį, kurį sukūrė bendraminčių bendruomenė, kuri nori padėti kitiems kūrėjams. Jei turite nedidelę komandą ar startuolį, turite puikią galimybę sutaupyti pinigų naudodami atvirojo kodo programinę įrangą, kad patikrintumėte savo kodų bazės saugumą. Antra, nebereikia samdyti atskiros „DevSecOps“ komandos, o tai dar labiau sumažina išlaidas.

Geri atvirojo kodo įrankiai visada kuriami atsižvelgiant į padidėjusius lankstumo reikalavimus. Todėl juos galima naudoti beveik bet kokioje aplinkoje, atliekant įvairiausias užduotis. Kūrėjams daug lengviau tokius įrankius susieti su sistema, kurią jie jau sukūrė dirbdami su savo projektais.

Tačiau kartais gali prireikti funkcijos, kurios nėra pasirinktame įrankyje. Tokiu atveju jūs turite galimybę išjungti jo kodą ir pagal jį sukurti savo įrankį su jums reikalingomis funkcijomis.

Kadangi daugeliu atvejų atvirojo kodo programinės įrangos kūrimą aktyviai veikia bendruomenė, sprendimas dėl pakeitimų priimamas gana greitai ir tiksliai: atvirojo kodo projekto kūrėjai remiasi vartotojų atsiliepimais ir pasiūlymais, jų pranešimais. rastos klaidos ir kitos problemos.

Graudit naudojimas kodo saugos analizei

Statinei kodo analizei galite naudoti įvairius atvirojo kodo įrankius; universalaus įrankio visoms programavimo kalboms nėra. Kai kurių iš jų kūrėjai vadovaujasi OWASP rekomendacijomis ir stengiasi aprėpti kuo daugiau kalbų.

Čia mes naudosime Graudit, paprasta komandų eilutės programa, kuri leis mums rasti mūsų kodų bazės spragas. Jis palaiko skirtingas kalbas, bet vis tiek jų rinkinys yra ribotas. Graudit sukurtas remiantis grep paslaugų programa, kuri kažkada buvo išleista pagal GNU licenciją.

Yra panašių statinio kodo analizės įrankių – Rough Auditing Tool for Security (RATS), Securitycompass Web Application Analysis Tool (SWAAT), flawfinder ir pan. Bet Graudit yra labai lankstus ir turi minimalius techninius reikalavimus. Tačiau gali kilti problemų, kurių Graudit negali išspręsti. Tada čia galite ieškoti kitų variantų šiame sąraše.

Šį įrankį galime integruoti į konkretų projektą arba padaryti jį prieinamą pasirinktam vartotojui arba vienu metu naudoti visuose savo projektuose. Čia taip pat atsiranda „Graudit“ lankstumas. Taigi pirmiausia klonuosime repo:

$ git clone https://github.com/wireghoul/graudit

Dabar sukurkime simbolinę nuorodą, kad „Graudit“ galėtų naudoti komandų formatu

$ cd ~/bin && mkdir graudit
$ ln --symbolic ~/graudit/graudit ~/bin/graudit

Pridėkite slapyvardį prie .bashrc (arba bet kokio jūsų naudojamo konfigūracijos failo):

#------ .bashrc ------
alias graudit="~/bin/graudit"

Perkraukite:

$ source ~/.bashrc # OR
$ exex $SHELL

Patikrinkime, ar diegimas buvo sėkmingas:

$ graudit -h

Jei matote kažką panašaus, tada viskas gerai.

Kaip naudotis paprasta programa norint rasti programos kodo pažeidžiamumą

Aš išbandysiu vieną iš savo esamų projektų. Prieš paleisdami įrankį, jam reikia perduoti duomenų bazę, atitinkančią kalbą, kuria parašytas mano projektas. Duomenų bazės yra aplanke ~/gradit/signatures:

$ graudit -d ~/gradit/signatures/js.db

Taigi, aš išbandžiau du js failus iš savo projekto, o Graudit konsolėje parodė informaciją apie mano kodo pažeidžiamumą:

Kaip naudotis paprasta programa norint rasti programos kodo pažeidžiamumą

Kaip naudotis paprasta programa norint rasti programos kodo pažeidžiamumą

Taip pat galite pabandyti išbandyti savo projektus. Galite pamatyti įvairių programavimo kalbų duomenų bazių sąrašą čia.

Graudit privalumai ir trūkumai

Graudit palaiko daugybę programavimo kalbų. Todėl jis tinka plačiam vartotojų ratui. Jis gali tinkamai konkuruoti su visais nemokamais ar mokamais analogais. Ir labai svarbu, kad projektas vis dar tobulinamas, o bendruomenė padeda ne tik kūrėjams, bet ir kitiems naudotojams, kurie bando išsiaiškinti įrankį.

Tai patogus įrankis, tačiau iki šiol jis ne visada gali tiksliai nustatyti, kokia yra įtartinos kodo dalies problema. Kūrėjai toliau tobulina Graudit.

Tačiau bet kuriuo atveju, naudojant tokius įrankius, naudinga atkreipti dėmesį į galimas kodo saugumo problemas.

Pradedama…

Šiame straipsnyje apžvelgiau tik vieną iš daugelio pažeidžiamumų paieškos būdų – statinį programų saugos testavimą. Atlikti statinio kodo analizę lengva, bet tai tik pradžia. Norėdami sužinoti daugiau apie savo kodų bazės saugumą, į savo programinės įrangos kūrimo ciklą turite integruoti kitų tipų testavimą.

Dėl reklamos teisių

Patikimas VPS o teisingas tarifų plano pasirinkimas leis mažiau atitraukti nuo plėtros dėl nemalonių problemų – viskas veiks be gedimų ir su labai dideliu veikimo laiku!

Kaip naudotis paprasta programa norint rasti programos kodo pažeidžiamumą

Šaltinis: www.habr.com

Добавить комментарий