Hur man använder ett enkelt verktyg för att hitta sårbarheter i programkoden

Graudit stöder flera programmeringsspråk och låter dig integrera kodbassäkerhetstestning direkt i utvecklingsprocessen.

Hur man använder ett enkelt verktyg för att hitta sårbarheter i programkoden
Källa: Unsplash (Markus Spiske)

Testning är en viktig del av mjukvaruutvecklingens livscykel. Det finns många typer av tester, var och en av dem löser sitt eget problem. Idag vill jag prata om att hitta säkerhetsproblem i kod.

Uppenbarligen, i den moderna verkligheten av mjukvaruutveckling, är det viktigt att säkerställa processsäkerhet. En gång introducerades till och med den speciella termen DevSecOps. Denna term hänvisar till en serie procedurer som syftar till att identifiera och eliminera sårbarheter i en applikation. Det finns specialiserade open source-lösningar för att kontrollera sårbarheter i enlighet med standarder OWASP, som beskriver de olika typerna och beteendet av sårbarheter i källkoden.

Det finns olika tillvägagångssätt för att lösa säkerhetsproblem, till exempel Static Application Security Testing (SAST), Dynamic Application Security Testing (DAST), Interactive Application Security Testing (IAST), Software Composition Analysis, och så vidare.

Statisk applikationssäkerhetstestning identifierar fel i redan skriven kod. Detta tillvägagångssätt kräver inte att applikationen körs, vilket är anledningen till att det kallas statisk analys.

Jag kommer att fokusera på statisk kodanalys och använda ett enkelt verktyg med öppen källkod för att demonstrera allt i praktiken.

Varför jag valde ett verktyg med öppen källkod för statisk kodsäkerhetsanalys

Det finns ett antal anledningar till detta: för det första är det gratis eftersom du använder ett verktyg som utvecklats av en gemenskap av likasinnade som vill hjälpa andra utvecklare. Om du har ett litet team eller start har du en fantastisk möjlighet att spara pengar genom att använda programvara med öppen källkod för att testa säkerheten i din kodbas. För det andra eliminerar det behovet av att anställa ett separat DevSecOps-team, vilket ytterligare minskar dina kostnader.

Bra verktyg med öppen källkod skapas alltid med hänsyn till ökade 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 lättare för utvecklare att koppla ihop sådana verktyg med det system som de redan har byggt medan de arbetar med sina projekt.

Men det kan finnas tillfällen när du behöver en funktion som inte är tillgänglig i det verktyg du väljer. I det här fallet har du möjlighet att dela dess kod och utveckla ditt eget verktyg baserat på den med den funktionalitet du behöver.

Eftersom utvecklingen av programvara med öppen källkod i de flesta fall aktivt påverkas av samhället, fattas beslutet att göra ändringar ganska snabbt och konkret: utvecklarna av open source-projektet förlitar sig på feedback och förslag från användare, på sina rapporter om hittade fel och andra problem.

Använda Graudit för kodsäkerhetsanalys

Du kan använda olika verktyg med öppen källkod för statisk kodanalys; det finns inget universellt verktyg för alla programmeringsspråk. Utvecklarna av några av dem följer OWASP-rekommendationer och försöker täcka så många språk som möjligt.

Här kommer vi att använda Graudit, ett enkelt kommandoradsverktyg som gör att vi kan hitta sårbarheter i vår kodbas. Den stöder olika språk, men deras uppsättning är fortfarande begränsad. Graudit är utvecklat baserat på verktyget 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), felsökare och så vidare. Men Graudit är väldigt flexibelt och har minimala tekniska krav. Du kan dock ha problem som Graudit inte kan lösa. Då kan du leta efter andra alternativ här i denna lista.

Vi kan integrera detta verktyg i ett specifikt projekt, eller göra det tillgängligt för en utvald användare, eller använda det samtidigt i alla våra projekt. Det är också här Graudits flexibilitet kommer in i bilden. Så låt oss klona repet först:

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

Låt oss nu skapa en symbolisk länk för Graudt att använda den i kommandoformat

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

Låt oss lägga till ett alias till .bashrc (eller vilken konfigurationsfil du nu använder):

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

Starta om:

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

Låt oss kontrollera om installationen lyckades:

$ graudit -h

Om du ser något liknande är allt bra.

Hur man använder ett enkelt verktyg för att hitta sårbarheter i programkoden

Jag kommer att testa ett av mina befintliga projekt. Innan du kör verktyget måste det passeras en databas som motsvarar det språk som mitt projekt är skrivet på. Databaserna finns i mappen ~/gradit/signatures:

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

Så jag testade två js-filer från mitt projekt, och Graudit visade information om sårbarheter i min kod till konsolen:

Hur man använder ett enkelt verktyg för att hitta sårbarheter i programkoden

Hur man använder ett enkelt verktyg för att hitta sårbarheter i programkoden

Du kan testa dina projekt på samma sätt. Du kan se en lista över databaser för olika programmeringsspråk här.

Fördelar och nackdelar med Graudit

Graudit stöder många programmeringsspråk. Därför är den lämplig för ett brett spektrum av användare. Det kan tillräckligt konkurrera med alla gratis eller betalda analoger. Och det är mycket viktigt att förbättringar fortfarande görs i projektet, och communityn hjälper inte bara utvecklarna, utan även andra användare som försöker ta reda på verktyget.

Det här är ett praktiskt verktyg, men än så länge kan det inte alltid fastställa exakt vad problemet är med en misstänkt kodbit. Utvecklarna fortsätter att förbättra Graudit.

Men i alla fall är det användbart att vara uppmärksam på potentiella säkerhetsproblem i koden när du använder verktyg som detta.

Start…

I den här artikeln tittade jag på bara ett av många sätt att hitta sårbarheter - statisk applikationssäkerhetstestning. Att utföra statisk kodanalys är enkelt, men det är bara början. För att lära dig mer om säkerheten för din kodbas måste du integrera andra typer av testning i din mjukvaruutvecklingslivscykel.

Om reklamens rättigheter

Pålitlig VPS och det korrekta valet av tariffplan gör att du kan bli mindre distraherad från utveckling av obehagliga problem - allt kommer att fungera utan misslyckanden och med en mycket hög drifttid!

Hur man använder ett enkelt verktyg för att hitta sårbarheter i programkoden

Källa: will.com

Lägg en kommentar