Kā izmantot vienkārŔu utilītu, lai atrastu ievainojamības programmas kodā

Graudit atbalsta vairākas programmÄ“Å”anas valodas un ļauj integrēt koda bāzes droŔības testÄ“Å”anu tieÅ”i izstrādes procesā.

Kā izmantot vienkārŔu utilītu, lai atrastu ievainojamības programmas kodā
Avots: Unsplash (Markuss Spiske)

TestÄ“Å”ana ir svarÄ«ga programmatÅ«ras izstrādes dzÄ«ves cikla sastāvdaļa. Ir daudz testÄ“Å”anas veidu, katrs no tiem atrisina savu problēmu. Å odien es vēlos runāt par droŔības problēmu atraÅ”anu kodā.

AcÄ«mredzot mÅ«sdienu programmatÅ«ras izstrādes realitātē ir svarÄ«gi nodroÅ”ināt procesu droŔību. Savulaik pat tika ieviests Ä«paÅ”s termins DevSecOps. Å is termins attiecas uz virkni procedÅ«ru, kuru mērÄ·is ir identificēt un novērst lietojumprogrammas ievainojamÄ«bas. Ir specializēti atvērtā pirmkoda risinājumi ievainojamÄ«bu pārbaudei saskaņā ar standartiem OWASP, kas apraksta dažādus avota koda ievainojamÄ«bu veidus un uzvedÄ«bu.

Ir dažādas pieejas droŔības problēmu risināŔanai, piemēram, statiskā lietojumprogrammu droŔības pārbaude (SAST), dinamiskā lietojumprogrammu droŔības pārbaude (DAST), interaktÄ«vā lietojumprogrammu droŔības pārbaude (IAST), programmatÅ«ras kompozÄ«cijas analÄ«ze un tā tālāk.

Statiskā lietojumprogrammu droŔības pārbaude identificē kļūdas jau uzrakstÄ«tajā kodā. Å Ä« pieeja neprasa lietojumprogrammas palaiÅ”anu, tāpēc to sauc par statisko analÄ«zi.

Es pievērsÄ«Å”os statiskā koda analÄ«zei un izmantoÅ”u vienkārÅ”u atvērtā pirmkoda rÄ«ku, lai visu demonstrētu praksē.

Kāpēc es izvēlējos atvērtā pirmkoda rÄ«ku statiskā koda droŔības analÄ«zei

Tam ir vairāki iemesli: pirmkārt, tas ir bezmaksas, jo jÅ«s izmantojat rÄ«ku, ko izstrādājusi lÄ«dzÄ«gi domājoÅ”u cilvēku kopiena, kas vēlas palÄ«dzēt citiem izstrādātājiem. Ja jums ir maza komanda vai jaunuzņēmums, jums ir lieliska iespēja ietaupÄ«t naudu, izmantojot atvērtā pirmkoda programmatÅ«ru, lai pārbaudÄ«tu savas kodu bāzes droŔību. Otrkārt, tas novērÅ” nepiecieÅ”amÄ«bu nolÄ«gt atseviŔķu DevSecOps komandu, tādējādi vēl vairāk samazinot izmaksas.

Labi atvērtā pirmkoda rÄ«ki vienmēr tiek radÄ«ti, ņemot vērā paaugstinātas elastÄ«bas prasÄ«bas. Tāpēc tos var izmantot gandrÄ«z jebkurā vidē, aptverot plaÅ”u uzdevumu klāstu. Izstrādātājiem ir daudz vieglāk savienot Ŕādus rÄ«kus ar sistēmu, ko viņi jau ir izveidojuÅ”i, strādājot pie saviem projektiem.

Taču var bÅ«t gadÄ«jumi, kad jums ir nepiecieÅ”ama funkcija, kas nav pieejama jÅ«su izvēlētajā rÄ«kā. Å ajā gadÄ«jumā jums ir iespēja izveidot tā kodu un, pamatojoties uz to, izstrādāt savu rÄ«ku ar jums nepiecieÅ”amo funkcionalitāti.

Tā kā vairumā gadījumu atvērtā pirmkoda programmatūras izstrādi aktīvi ietekmē sabiedrība, lēmums par izmaiņām tiek pieņemts diezgan ātri un precīzi: atvērtā pirmkoda projekta izstrādātāji paļaujas uz lietotāju atsauksmēm un ieteikumiem, viņu ziņojumiem par atrastās kļūdas un citas problēmas.

Graudit izmantoŔana koda droŔības analīzei

Statiskā koda analÄ«zei varat izmantot dažādus atvērtā pirmkoda rÄ«kus; nav universāla rÄ«ka visām programmÄ“Å”anas valodām. Dažu no tiem izstrādātāji ievēro OWASP ieteikumus un cenÅ”as aptvert pēc iespējas vairāk valodu.

Å eit mēs izmantosim Graudit, vienkārÅ”a komandrindas utilÄ«ta, kas ļaus mums atrast mÅ«su kodu bāzes ievainojamÄ«bas. Tas atbalsta dažādas valodas, taču to komplekts joprojām ir ierobežots. Graudit ir izstrādāts, pamatojoties uz grep utilÄ«tu, kas savulaik tika izlaista saskaņā ar GNU licenci.

Ir lÄ«dzÄ«gi rÄ«ki statiskā koda analÄ«zei - Rough Auditing Tool for Security (RATS), Securitycompass Web Application Analysis Tool (SWAAT), kļūdu meklētājs un tā tālāk. Bet Graudit ir ļoti elastÄ«gs un tam ir minimālas tehniskās prasÄ«bas. Tomēr jums var rasties problēmas, kuras Graudit nevar atrisināt. Tad jÅ«s varat meklēt citas iespējas Å”eit Å”ajā sarakstā.

Mēs varam integrēt Å”o rÄ«ku konkrētā projektā vai padarÄ«t to pieejamu izvēlētam lietotājam, vai arÄ« izmantot to vienlaikus visos savos projektos. Å eit arÄ« izpaužas Graudit elastÄ«ba. Tātad vispirms klonēsim repo:

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

Tagad izveidosim simbolisku saiti, lai Graudit to izmantotu komandu formātā

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

Pievienosim aizstājvārdu .bashrc (vai jebkuram izmantotajam konfigurācijas failam):

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

AtsāknÄ“Å”ana:

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

PārbaudÄ«sim, vai instalÄ“Å”ana bija veiksmÄ«ga:

$ graudit -h

Ja redzi ko līdzīgu, tad viss ir kārtībā.

Kā izmantot vienkārŔu utilītu, lai atrastu ievainojamības programmas kodā

Es testÄ“Å”u vienu no saviem esoÅ”ajiem projektiem. Pirms rÄ«ka palaiÅ”anas tam ir jānodod datu bāze, kas atbilst valodai, kurā ir rakstÄ«ts mans projekts. Datu bāzes atrodas mapē ~/gradit/signatures:

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

Tātad, es pārbaudīju divus js failus no sava projekta, un Graudit konsolei parādīja informāciju par ievainojamībām manā kodā:

Kā izmantot vienkārŔu utilītu, lai atrastu ievainojamības programmas kodā

Kā izmantot vienkārŔu utilītu, lai atrastu ievainojamības programmas kodā

JÅ«s varat mēģināt pārbaudÄ«t savus projektus tādā paŔā veidā. JÅ«s varat redzēt dažādu programmÄ“Å”anas valodu datu bāzu sarakstu Å”eit.

Graudit priekŔrocības un trūkumi

Graudit atbalsta daudzas programmÄ“Å”anas valodas. Tāpēc tas ir piemērots plaÅ”am lietotāju lokam. Tas var pienācÄ«gi konkurēt ar visiem bezmaksas vai maksas analogiem. Un ir ļoti svarÄ«gi, ka projektā joprojām tiek veikti uzlabojumi, un kopiena palÄ«dz ne tikai izstrādātājiem, bet arÄ« citiem lietotājiem, kuri cenÅ”as izdomāt rÄ«ku.

Tas ir ērts rÄ«ks, taču lÄ«dz Å”im tas ne vienmēr var precÄ«zi noteikt, kāda ir problēma ar aizdomÄ«gu koda daļu. Izstrādātāji turpina uzlabot Graudit.

Bet jebkurā gadÄ«jumā, izmantojot Ŕādus rÄ«kus, ir lietderÄ«gi pievērst uzmanÄ«bu iespējamām droŔības problēmām kodā.

Sākumsā€¦

Å ajā rakstā es apskatÄ«ju tikai vienu no daudzajiem veidiem, kā atrast ievainojamÄ«bas ā€“ statisko lietojumprogrammu droŔības testÄ“Å”anu. Statiskā koda analÄ«zes veikÅ”ana ir vienkārÅ”a, taču tas ir tikai sākums. Lai uzzinātu vairāk par savas kodu bāzes droŔību, programmatÅ«ras izstrādes dzÄ«ves ciklā ir jāintegrē cita veida testÄ“Å”ana.

Par reklāmas tiesībām

Uzticams VPS un pareiza tarifu plāna izvēle ļaus jums mazāk novērst nepatīkamas problēmas no attīstības - viss darbosies bez kļūmēm un ar ļoti augstu darbības laiku!

Kā izmantot vienkārŔu utilītu, lai atrastu ievainojamības programmas kodā

Avots: www.habr.com

Pievieno komentāru