Graudit subtenas plurajn programlingvojn kaj permesas vin integri kodbazan sekurectestadon rekte en la evoluprocezon.
fonto:
Testado estas grava parto de la programaro-disvolva vivociklo. Estas multaj specoj de provoj, ĉiu el ili solvas sian propran problemon. Hodiaŭ mi volas paroli pri trovado de sekurecaj problemoj en kodo.
Evidente, en la modernaj realaĵoj de programaro-disvolviĝo, estas grave certigi procezan sekurecon. Foje, la speciala termino DevSecOps eĉ estis lanĉita. Ĉi tiu termino rilatas al serio de proceduroj celantaj identigi kaj forigi vundeblecojn en aplikaĵo. Estas specialigitaj malfermfontaj solvoj por kontroli vundeblecojn laŭ normoj
Estas malsamaj aliroj por solvi sekurecproblemojn, kiel Static Application Security Testing (SAST), Dynamic Application Security Testing (DAST), Interactive Application Security Testing (IAST), Software Composition Analysis, ktp.
Senmova aplikaĵa sekureca testado identigas erarojn en jam skribita kodo. Ĉi tiu aliro ne postulas, ke la aplikaĵo rulu, tial ĝi nomiĝas senmova analizo.
Mi koncentriĝos pri statika kodanalizo kaj uzos simplan malfermfontan ilon por pruvi ĉion praktike.
Kial mi elektis malfermfontan ilon por statika koda sekurecanalizo
Estas kelkaj kialoj por tio: unue, ĝi estas senpaga ĉar vi uzas ilon evoluigitan de komunumo de samideanoj, kiuj volas helpi aliajn programistojn. Se vi havas malgrandan teamon aŭ noventreprenon, vi havas bonegan ŝancon ŝpari monon uzante malfermfontecan programaron por testi la sekurecon de via kodbazo. Due, ĝi forigas la bezonon por vi dungi apartan DevSecOps-teamon, plu reduktante viajn kostojn.
Bonaj malfermkodaj iloj ĉiam estas kreitaj konsiderante pliigitajn postulojn por fleksebleco. Tial ili povas esti uzataj en preskaŭ ajna medio, kovrante ampleksan gamon de taskoj. Estas multe pli facile por programistoj konekti tiajn ilojn kun la sistemo, kiun ili jam konstruis dum ili laboras pri siaj projektoj.
Sed povas esti tempoj, kiam vi bezonas funkcion, kiu ne estas disponebla en la ilo, kiun vi elektas. En ĉi tiu kazo, vi havas la ŝancon forki ĝian kodon kaj evoluigi vian propran ilon bazitan sur ĝi kun la funkcioj, kiujn vi bezonas.
Ĉar en la plej multaj kazoj la disvolviĝo de malfermfonta programaro estas aktive influita de la komunumo, la decido fari ŝanĝojn estas farita sufiĉe rapide kaj al la punkto: la programistoj de la malfermfonta projekto fidas je reagoj kaj sugestoj de uzantoj, je siaj raportoj pri trovitaj eraroj kaj aliaj problemoj.
Uzante Graudit por Koda Sekureca Analizo
Vi povas uzi diversajn malfermfontajn ilojn por statika koda analizo; ne ekzistas universala ilo por ĉiuj programlingvoj. La programistoj de iuj el ili sekvas rekomendojn de OWASP kaj provas kovri kiel eble plej multajn lingvojn.
Ĉi tie ni uzos
Estas similaj iloj por statika kodanalizo - Rough Auditing Tool for Security (RATS), Securitycompass Web Application Analysis Tool (SWAAT), flawfinder ktp. Sed Graudit estas tre fleksebla kaj havas minimumajn teknikajn postulojn. Tamen, vi eble havas problemojn, kiujn Graudit ne povas solvi. Tiam vi povas serĉi aliajn eblojn ĉi tie
Ni povas integri ĉi tiun ilon en specifan projekton, aŭ disponigi ĝin al elektita uzanto, aŭ uzi ĝin samtempe en ĉiuj niaj projektoj. Ĉi tie ankaŭ estas kie la fleksebleco de Graudit venas en ludo. Do ni unue klonu la deponejon:
$ git clone https://github.com/wireghoul/graudit
Nun ni kreu simbolan ligilon por ke Graudit uzu ĝin en komandformato
$ cd ~/bin && mkdir graudit
$ ln --symbolic ~/graudit/graudit ~/bin/graudit
Ni aldonu kaŝnomon al .bashrc (aŭ kia ajn agorda dosiero vi uzas):
#------ .bashrc ------
alias graudit="~/bin/graudit"
Rekomencu:
$ source ~/.bashrc # OR
$ exex $SHELL
Ni kontrolu ĉu la instalado sukcesis:
$ graudit -h
Se vi vidas ion similan, tiam ĉio estas en ordo.
Mi testos unu el miaj ekzistantaj projektoj. Antaŭ ol ruli la ilon, ĝi devas esti preterpasita datumbazo responda al la lingvo en kiu mia projekto estas skribita. La datumbazoj troviĝas en la dosierujo ~/gradit/signatures:
$ graudit -d ~/gradit/signatures/js.db
Do, mi testis du js-dosierojn de mia projekto, kaj Graudit montris informojn pri vundeblecoj en mia kodo al la konzolo:
Vi povas provi provi viajn projektojn en la sama maniero. Vi povas vidi liston de datumbazoj por malsamaj programlingvoj
Avantaĝoj kaj Malavantaĝoj de Graudit
Graudit subtenas multajn programlingvojn. Tial ĝi taŭgas por larĝa gamo de uzantoj. Ĝi povas adekvate konkuri kun iuj senpagaj aŭ pagitaj analogoj. Kaj estas tre grave, ke plibonigoj ankoraŭ estas faritaj al la projekto, kaj la komunumo ne nur helpas la programistojn, sed ankaŭ aliajn uzantojn, kiuj provas eltrovi la ilon.
Ĉi tio estas oportuna ilo, sed ĝis nun ĝi ne ĉiam povas precize precize kia estas la problemo kun suspektinda kodo. La programistoj daŭre plibonigas Graudit.
Sed ĉiukaze, estas utile atenti eblajn sekurecproblemojn en la kodo kiam vi uzas ilojn kiel ĉi tiu.
Komencu…
En ĉi tiu artikolo, mi rigardis nur unu el multaj manieroj trovi vundeblecojn - senmova aplikaĵa sekureca testado. Fari statikan kodan analizon estas facila, sed ĝi estas nur la komenco. Por lerni pli pri la sekureco de via kodbazo, vi devas integri aliajn specojn de testado en via programaro-disvolva vivociklo.
Pri la Rajtoj de Reklamado
fonto: www.habr.com