Graudit understøtter mange programmeringssprog og muliggør integration af sikkerhedstest af kodebasen direkte i udviklingsprocessen.

Kilde: (Markus Spiske)
Testning er en vigtig del af softwareudviklings livscyklus. Der findes mange forskellige typer testning, og hver af dem løser sin opgave. I dag vil jeg tale om at finde sikkerhedsproblemer i koden.
Det er tydeligt, at det i nutidens softwareudviklingsrealiteter er vigtigt at sikre processerne. Der blev engang indført et særligt begreb, DevSecOps. Under dette begreb forstås en række procedurer, der er rettet mod at identificere og eliminere sårbarheder i applikationen. Der findes specialiserede open source-løsninger til at kontrollere sårbarheder i overensstemmelse med standarderne , som beskriver forskellige typer og adfærd af sårbarheder i kildekoden.
Der findes forskellige tilgange til at håndtere sikkerhedsproblemer, såsom statisk sikkerhedstest af applikationer (SAST), dynamisk sikkerhedstest af applikationer (DAST), interaktiv sikkerhedstest af applikationer (IAST), softwarekomponentanalyse (Software Composition Analysis) og så videre.
Statisk sikkerhedstest af applikationer identificerer fejl i allerede skrevet kode. Denne tilgang kræver ikke, at applikationen køres, derfor kaldes det statisk analyse.
Jeg vil fokusere på statisk kodeanalyse og bruge et enkelt open source-værktøj for at demonstrere det hele i praksis.
Hvorfor jeg valgte et open source-værktøj til statisk sikkerhedsanalyse af kode
Der er en række grunde til det: for det første er det gratis, da du bruger et værktøj udviklet af et fællesskab af ligesindede, der ønsker at hjælpe andre udviklere. Hvis du har et lille team eller en startup, har du en fremragende mulighed for at spare penge ved at bruge open source-software til at kontrollere sikkerheden i din kodebase. For det andet slipper det dig for at ansætte et separat DevSecOps-team, hvilket yderligere reducerer dine omkostninger.
Gode open source værktøjer er altid skabt med høje krav til fleksibilitet for øje. Derfor kan de anvendes i næsten enhver kontekst og dækker et bredt spektrum af opgaver. Det er meget lettere for udviklere at integrere sådanne værktøjer med det system, de allerede har bygget, mens de arbejder på deres projekter.
Men der kan opstå situationer, hvor du får brug for en funktion, der ikke findes i det valgte værktøj. I dette tilfælde har du mulighed for at forgrene dets kode og udvikle dit eget værktøj med den ønskede funktionalitet.
Da udviklingen af software med åben kilde i de fleste tilfælde aktivt påvirkes af fællesskabet, træffes beslutningen om at foretage ændringer ret hurtigt og sagligt: udviklerne af open source-projektet lytter til brugernes feedback og forslag samt deres indberetninger om fundne fejl og andre problemer.
Brug af Graudit til at analysere sikkerheden af koden
Til statisk kodeanalyse kan forskellige open source værktøjer anvendes; der findes ikke ét universelt værktøj til alle programmeringssprog. Udviklerne af nogle af dem følger OWASP-rekommandationer og forsøger at dække så mange sprog som muligt.
Her vil vi bruge , et simpelt kommandolinjeværktøj, der gør det muligt for os at finde sårbarheder i vores kodebase. Det understøtter forskellige sprog, men antallet er dog begrænset. Graudit er udviklet på baggrund af det nyttige værktøj grep, som engang blev frigivet under GNU-licensen.
Der findes lignende værktøjer til statisk kodeanalyse - Rough Auditing Tool for Security (RATS), Securitycompass Web Application Analysis Tool (SWAAT), flawfinder og så videre. Men Graudit er meget fleksibel og har minimale tekniske krav. Ikke desto mindre kan der være situationer, hvor Graudit ikke er i stand til at løse dine opgaver. Så kan du finde andre muligheder her .
Vi kan integrere dette værktøj i et specifikt projekt, gøre det tilgængeligt for en udvalgt bruger, eller bruge det samtidig i alle vores projekter. Her viser Graudit også sin fleksibilitet. Så lad os først klone repoet:
$ git clone https://github.com/wireghoul/grauditLad os nu oprette et symbolsk link til Graudit, så vi kan bruge det i kommandolinjeformat.
$ cd ~/bin && mkdir graudit
$ ln --symbolic ~/graudit/graudit ~/bin/grauditLad os tilføje et alias i .bashrc (eller en anden konfigurationsfil, som du bruger):
#------ .bashrc ------
alias graudit="~/bin/graudit"Genstarter:
$ source ~/ .bashrc # ELLER
$ exec $SHELL
Lad os tjekke, om installationen var succesfuld:
$ graudit -hHvis du ser noget, der ligner dette, er alt i orden.

Jeg vil teste et af mine eksisterende projekter. Før jeg starter værktøjet, skal jeg angive den database, der svarer til det programmeringssprog, mit projekt er skrevet på. Databaserne findes i mappen ~/gradit/signatures:
$ graudit -d ~/gradit/signatures/js.dbSå jeg har testet to js-filer fra mit projekt, og Graudit har vist information om sårbarhederne i min kode i konsollen:


Du kan på samme måde teste dine projekter. Du kan se listen over databaser for forskellige programmeringssprog. .
Fordele og ulemper ved Graudit
Graudit understøtter mange programmeringssprog. Derfor er det velegnet til en bred vifte af brugere. Det kan konkurrere værdigt med enhver gratis eller betalt alternativ. Det er også meget vigtigt, at projektet stadig modtager opdateringer, og at fællesskabet ikke kun hjælper udviklerne, men også andre brugere, der forsøger at forstå værktøjet.
Det er et nyttigt værktøj, men indtil videre kan det ikke altid præcist angive, hvad problemet er, når det drejer sig om en mistænkelig del af koden. Udviklerne fortsætter med at forbedre Graudit.
Men i alle tilfælde er det nyttigt at være opmærksom på potentielle sikkerhedsproblemer i koden ved at bruge sådanne værktøjer.
Begyndelsen…
I denne artikel har jeg kun set på en af mange måder at finde sårbarheder – statisk sikkerhedstestning af applikationer. Det er nemt at udføre en statisk kodeanalyse, men det er kun begyndelsen. For at lære mere om sikkerheden i din kodebase skal du integrere andre typer test i softwareudviklingslivscyklussen.
Annoncering
og det rigtige valg af abonnement gør, at du kan fokusere mindre på ubehagelige problemer under udviklingen – alt vil fungere uden problemer og med meget høj oppetid!
Kilde: habr.com
