Graudit palaiko kelias programavimo kalbas ir leidžia integruoti kodų bazės saugumo testavimą tiesiai į kūrimo procesą.
Šaltinis:
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
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
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ų
Šį į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.
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ą:
Taip pat galite pabandyti išbandyti savo projektus. Galite pamatyti įvairių programavimo kalbų duomenų bazių sąrašą
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ų
Šaltinis: www.habr.com