Graudit stöder mÄnga programmeringssprÄk och möjliggör integration av sÀkerhetstestning av kodbasen direkt i utvecklingsprocessen.

KĂ€lla: (Markus Spiske)
Testning Àr en viktig del av livscykeln för programvaruutveckling. Det finns mÄnga typer av testning, och varje typ löser sin egen uppgift. Idag vill jag prata om att upptÀcka sÀkerhetsproblem i koden.
Det Àr uppenbart att det i dagens programvaruutveckling Àr viktigt att sÀkerstÀlla sÀkerheten i processerna. Vid en tidpunkt infördes till och med en speciell term, DevSecOps. Med denna term avses en rad procedurer som syftar till att identifiera och ÄtgÀrda sÄrbarheter i applikationen. Det finns specialiserade open source-lösningar för att kontrollera sÄrbarheter enligt standarderna , som beskriver olika typer och beteende av sÄrbarheter i kÀllkoden.
Det finns olika tillvÀgagÄngssÀtt för att lösa sÀkerhetsproblem, till exempel statisk sÀkerhetstestning av applikationer (SAST), dynamisk sÀkerhetstestning av applikationer (DAST), interaktiv sÀkerhetstestning av applikationer (IAST), programvarukomponentanalys (Software Composition Analysis) och sÄ vidare.
Statisk sÀkerhetstestning av applikationer identifierar fel i redan skriven kod. Denna metod krÀver inte att applikationen körs, sÄ den kallas för statisk analys.
Jag kommer att fokusera pÄ statisk kodanalys och anvÀnda ett enkelt open source-verktyg för att demonstrera allt i praktiken.
Varför valde jag ett open source-verktyg för statisk sÀkerhetsanalys av koden
Det finns flera skÀl till detta: för det första Àr det gratis, eftersom du anvÀnder ett verktyg utvecklat av en gemenskap av likasinnade som vill hjÀlpa andra utvecklare. Om du har ett litet team eller en startup har du en utmÀrkt möjlighet att spara pengar genom att anvÀnda programvara med öppen kÀllkod för att kontrollera sÀkerheten i din kodbas. För det andra befriar det dig frÄn att behöva anstÀlla ett separat DevSecOps-team, vilket ytterligare minskar dina kostnader.
Bra open source-verktyg skapas alltid med hÀnsyn till högre krav pÄ flexibilitet. DÀrför kan de anvÀndas i nÀstan alla miljöer och tÀcker ett brett spektrum av uppgifter. Det Àr mycket enklare för utvecklare att integrera sÄdana verktyg med systemet som de redan har byggt, nÀr de arbetar med sina projekt.
Men det kan uppstĂ„ situationer dĂ€r du behöver en funktion som inte finns i det verktyg du valt. I detta fall har du möjlighet att forkâa koden och utveckla ett eget verktyg med den funktionalitet du behöver.
Eftersom utvecklingen av öppen kÀllkod frÀmst pÄverkas av gemenskapen, fattas beslut om Àndringar ganska snabbt och sakligt: utvecklarna av open source-projekt baserar sin verksamhet pÄ feedback och förslag frÄn anvÀndare, samt deras rapporter om hittade buggar och andra problem.
Att anvÀnda Graudit för sÀkerhetsanalys av kod
För statisk kodanalys kan olika open source-verktyg anvÀndas; det finns inget universellt verktyg för alla programmeringssprÄk. Utvecklarna av nÄgra av dem följer OWASP:s riktlinjer och försöker tÀcka sÄ mÄnga sprÄk som möjligt.
HÀr kommer vi att anvÀnda , ett enkelt kommandoradsverktyg som gör det möjligt för oss att hitta sÄrbarheter i vÄr kodbas. Det stödjer olika sprÄk, men dess urval Àr ÀndÄ begrÀnsat. Graudit Àr utvecklat utifrÄn det verktyg som kallas grep, som en gÄng slÀpptes under GNU-licensen.
Det finns liknande verktyg för statisk kodanalys â Rough Auditing Tool for Security (RATS), Securitycompass Web Application Analysis Tool (SWAAT), flawfinder och sĂ„ vidare. Men Graudit Ă€r mycket flexibelt och har minimala tekniska krav. ĂndĂ„ kan det uppstĂ„ uppgifter som Graudit inte kan lösa. DĂ„ kan du leta efter andra alternativ hĂ€r .
Vi kan integrera detta verktyg i ett specifikt projekt, göra det tillgÀngligt för en vald anvÀndare eller anvÀnda det i alla vÄra projekt samtidigt. HÀr visar Graudit ocksÄ sin flexibilitet. LÄt oss först klona repo:
$ git clone https://github.com/wireghoul/grauditNu lÄt oss skapa en symbolisk lÀnk för Graudit sÄ att vi kan anvÀnda den i kommandoradsformat.
$ cd ~/bin && mkdir graudit
$ ln --symbolic ~/graudit/graudit ~/bin/grauditLÄt oss lÀgga till en alias i .bashrc (eller i en annan konfigurationsfil som du anvÀnder):
#------ .bashrc ------
alias graudit="~/bin/graudit"Vi startar om:
$ source ~/.bashrc # ELLER
$ exec $SHELL
LÄt oss kontrollera om installationen lyckades:
$ graudit -hOm du ser nÄgot liknande, sÄ Àr allt bra.

Jag kommer att testa ett av mina befintliga projekt. Innan verktyget kan köras mÄste en databas som motsvarar sprÄket i mitt projekt överlÀmnas. Databaserna finns i mappen ~/gradit/signatures:
$ graudit -d ~/gradit/signatures/js.dbSÄ jag har testat tvÄ js-filer frÄn mitt projekt och Graudit har skrivit ut information om sÄrbarheterna i min kod pÄ konsolen:


Du kan ocksÄ testa dina projekt pÄ samma sÀtt. En lista över databaser för olika programmeringssprÄk kan ses .
Fördelar och nackdelar med Graudit
Graudit stöder mÄnga programmeringssprÄk. DÀrför Àr det lÀmpligt för en bred anvÀndarbas. Det kan konkurrera vÀl med alla gratis eller betalda alternativ. Det Àr ocksÄ viktigt att projektet fortfarande uppdateras, och att gemenskapen bÄde hjÀlper utvecklarna och andra anvÀndare som försöker förstÄ verktyget.
Det Àr ett anvÀndbart verktyg, men för tillfÀllet kan det inte alltid exakt ange vad problemet Àr med det misstÀnkta kodavsnittet. Utvecklarna fortsÀtter att förbÀttra Graudit.
Men det Àr alltid bra att vara uppmÀrksam pÄ potentiella sÀkerhetsproblem i koden genom att anvÀnda sÄdana verktyg.
BörjanâŠ
I den hĂ€r artikeln har jag endast behandlat ett av mĂ„nga sĂ€tt att hitta sĂ„rbarheter â statisk sĂ€kerhetstestning av applikationer. Att utföra statisk kodanalys Ă€r enkelt, men det Ă€r bara början. För att fĂ„ mer information om sĂ€kerheten i din kodbas behöver du integrera andra testmetoder i programutvecklingscykeln.
I reklamens namn
och rĂ€tt val av abonnemang gör att du kan fokusera mindre pĂ„ otrevliga problem under utvecklingen â allt kommer att fungera utan störningar och med mycket hög upptid!
KĂ€lla: habr.com
