Graudit toetab mitmeid programmeerimiskeeli ja võimaldab integreerida koodibaasi turvatestimise otse arendusprotsessi.

Allikas: (Markus Spiske)
Testimine on oluline osa tarkvaraarenduse elutsüklist. On olemas palju erinevaid testimise liike, millest igaühel on oma ülesanne. Täna tahan rääkida koodis esinevate turvaprobleemide leidmisest.
On ilmselge, et tänapäevastes tarkvaraarenduse tingimustes on oluline tagada protsesside turvalisus. Aja jooksul on isegi kasutusele võetud spetsiaalne termin DevSecOps. Selle termini all mõistetakse rida menetlusi, mille eesmärk on tuvastada ja kõrvaldada rakenduses esinevaid haavatavusi. On olemas spetsialiseeritud avatud lähtekoodiga lahendusi haavatavuste kontrollimiseks vastavalt standarditele , mis kirjeldavad erinevaid tüüpe ja käitumist koodihaavatavustes.
On olemas erinevaid lähenemisviise turvaprobleemide lahendamiseks, näiteks rakenduste staatiline turvatestimine (SAST), dünaamiline turvatestimine (DAST), interaktiivne turvatestimine (IAST), tarkvarakomponentide analüüs (Software Composition Analysis) ja nii edasi.
Staatiline rakenduste turvatestimine tuvastab vigu juba kirjutatud koodis. See lähenemine ei nõua rakenduse käivitamist, mistõttu nimetatakse seda staatiliseks analüüsiks.
Keskendun staatilisele koodi analüüsile ja kasutan lihtsat avatud lähtekoodiga tööriista, et kõike praktikas demonstreerida.
Miks valisin avatud lähtekoodiga tööriista staatiliseks koodi turvaanalüüsiks.
Sellel on mitmeid põhjuseid: esiteks on see tasuta, kuna kasutate kogukonna poolt loodud tööriista, mis on loodud selleks, et aidata teisi arendajaid. Kui teil on väike meeskond või idufirma, siis on teil suurepärane võimalus säästa, kasutades avatud lähtekoodiga tarkvara oma koodibaasi turvamise kontrollimiseks. Teiseks vabastab see teid vajadusest palgata eraldi DevSecOps meeskond, mis veelgi vähendab teie kulusid.
Hea avatud lähtekoodiga tööriistad loovad alati paindlikkuse suurenenud nõudmistega arvestades. Seetõttu saab neid kasutada praktiliselt igas keskkonnas, katab laia valikut ülesandeid. Arendajatel on palju lihtsam neid tööriistu omavahel siduda süsteemiga, mille nad on juba oma projektide kallal töötades loonud.
Kuid võivad esineda olukorrad, kus vajate funktsiooni, mida valitud tööriist ei paku. Sel juhul on teil võimalus kopeerida selle kood ja arendada selle põhjal oma tööriist, mis sisaldab teile vajalikku funktsionaalsust.
Kuna avatud lähtekoodiga tarkvara arendust mõjutab enamasti aktiivselt kogukond, tehakse muudatuste tegemise otsused piisavalt kiiresti ja asjakohaselt: avatud lähtekoodiga projekti arendajad tuginevad kasutajate tagasisidele ja ettepanekutele, nende tõrke- ja probleemide teadetele.
Grauditi kasutamine koodi turvaanalüüsiks
Koodi staatiliseks analüüsiks saab kasutada erinevaid avatud lähtekoodiga tööriistu, kuid universaalset tööriista kõigi programmeerimiskeelte jaoks ei ole. Mõnede tööriistade arendajad järgivad OWASP-i soovitusi ja püüavad hõlmata nii palju keeli kui võimalik.
Siin me kasutame , lihtsat käsurea utiliiti, mis võimaldab meil leida haavatavusi meie koodibaasis. See toetab erinevaid keeli, kuid nende hulk on siiski piiratud. Graudit on üles ehitatud grep utiliidi põhjal, mis kunagi ilmus GNU litsentsi all.
On olemas sarnaseid tööriistu staatiliseks koodianalüüsiks — Rough Auditing Tool for Security (RATS), Securitycompass Web Application Analysis Tool (SWAAT), flawfinder ja nii edasi. Kuid Graudit on väga paindlik ja tal on minimaalsed tehnilised nõuded. Siiski võivad tekkida ülesanded, millega Graudit ei suuda toime tulla. Siis tasub otsida teisi võimalusi siin .
Saame integreerida selle tööriista konkreetse projekti, muuta selle valitud kasutajale kergesti kättesaadavaks või — kasutada seda kõigis meie projektides üheaegselt. Sellestki ilmneb Graudit'i paindlikkus. Alustame repode kloonimisega:
$ git clone https://github.com/wireghoul/grauditNüüd loome Graudit'ile sümboolse lingi, et kasutada seda käsurea vormingus
$ cd ~/bin && mkdir graudit
$ ln --symbolic ~/graudit/graudit ~/bin/grauditLisame aliase .bashrc (või teise konfiguratsioonifaili, mida kasutate):
#------ .bashrc ------
alias graudit="~/bin/graudit"Taaskäivitame:
$ source ~/bashrc # VÕI
$ exec $SHELL
Kontrollime, kas installatsioon läks edukalt:
$ graudit -hKui näete midagi sarnast, siis kõik on korras.

Testin ühe oma olemasoleva projekti. Enne tööriista käivitamist tuleb sellele edastada andmebaas, mis vastab keelele, milles minu projekt on kirjutatud. Andmebaasid asuvad kaustas ~/gradit/signatures:
$ graudit -d ~/gradit/signatures/js.dbNii et testisin oma projekti kahte js-faili, ja Graudit andis konsoolis teavet minu koodi haavatavuste kohta:


Võite proovida samamoodi testida oma projekte. Erinevate programmeerimiskeelte andmebaaside loendit saab vaadata .
Graudit'i eelised ja puudused
Graudit toetab mitmeid programmeerimiskeeli. Seetõttu sobib see laiale kasutajaskonnale. See võib hinna poolest hästi konkureerida igasuguste tasuta või tasuliste analoogidega. Ja väga oluline on, et projekti arendatakse endiselt edasi ning kogukond mitte ainult ei aita arendajaid, vaid ka teisi kasutajaid, kes püüavad tööriista selgeks saada.
See on mugav tööriist, kuid praegu ei suuda see alati täpselt näidata, milles probleem seisneb, mis on seotud kahtlase koodilõiguga. Arendajad jätkavad Graudit'i täiustamist.
Kuid igal juhul on kasulik tähelepanu pöörata koodis võimalikele turvaprobleemidele, kasutades selliseid tööriistu.
Algus…
Selles artiklis käsitlesin vaid ühte paljusid haavatavuste leidmise viise — rakenduste staatilist turvatestimist. Koodi staatiline analüüs on lihtne, kuid see on vaid algus. Et rohkem teada saada oma koodibaasi turvalisusest, tuleb integreerida tarkvaraarenduse elutsüklisse ka teisi testimisviise.
Reklaami õigustes
ja õige hinnaplaani valik aitavad vältida arendustööde häirimist ebameeldivate probleemidega — kõik töötab tõrgeteta ja väga kõrge töövalmidusega!
Allikas: habr.com
