Kuinka käyttää yksinkertaista apuohjelmaa haavoittuvuuksien etsimiseen ohjelmakoodista

Graudit tukee useita ohjelmointikieliä ja antaa sinun integroida koodikannan tietoturvatestauksen suoraan kehitysprosessiin.

Kuinka käyttää yksinkertaista apuohjelmaa haavoittuvuuksien etsimiseen ohjelmakoodista
Lähde: Unsplash (Markus Spiske)

Testaus on tärkeä osa ohjelmistokehityksen elinkaarta. Testejä on monenlaisia, jokainen niistä ratkaisee oman ongelmansa. Tänään haluan puhua tietoturvaongelmien löytämisestä koodissa.

On selvää, että nykyaikaisessa ohjelmistokehityksen todellisuudessa on tärkeää varmistaa prosessien turvallisuus. Kerran otettiin käyttöön jopa erikoistermi DevSecOps. Tämä termi viittaa sarjaan toimenpiteitä, joiden tarkoituksena on tunnistaa ja poistaa sovelluksen haavoittuvuuksia. Haavoittuvuuksien tarkistamiseen on olemassa erikoistuneita avoimen lähdekoodin ratkaisuja standardien mukaisesti OWASP, jotka kuvaavat lähdekoodin haavoittuvuuksien eri tyyppejä ja käyttäytymistä.

On olemassa erilaisia ​​​​lähestymistapoja tietoturvaongelmien ratkaisemiseen, kuten staattinen sovellusten suojaustestaus (SAST), dynaaminen sovellusten suojaustestaus (DAST), interaktiivinen sovellusten suojaustestaus (IAST), ohjelmiston koostumuksen analyysi ja niin edelleen.

Staattinen sovellusten suojaustestaus tunnistaa virheet jo kirjoitetussa koodissa. Tämä lähestymistapa ei vaadi sovelluksen suorittamista, minkä vuoksi sitä kutsutaan staattiseksi analyysiksi.

Keskityn staattisen koodin analysointiin ja käytän yksinkertaista avoimen lähdekoodin työkalua esitelläkseni kaiken käytännössä.

Miksi valitsin avoimen lähdekoodin työkalun staattisen koodin tietoturva-analyysiin

Tähän on useita syitä: ensinnäkin se on ilmainen, koska käytät työkalua, jonka on kehittänyt samanhenkisten ihmisten yhteisö, joka haluaa auttaa muita kehittäjiä. Jos sinulla on pieni tiimi tai startup, sinulla on loistava mahdollisuus säästää rahaa käyttämällä avoimen lähdekoodin ohjelmistoja testataksesi koodikantasi turvallisuutta. Toiseksi, sinun ei tarvitse palkata erillistä DevSecOps-tiimiä, mikä vähentää kustannuksia entisestään.

Hyvät avoimen lähdekoodin työkalut luodaan aina lisääntyneet joustavuusvaatimukset huomioon ottaen. Siksi niitä voidaan käyttää melkein missä tahansa ympäristössä, ja ne kattavat monenlaisia ​​​​tehtäviä. Kehittäjien on paljon helpompaa yhdistää tällaiset työkalut järjestelmään, jonka he ovat jo rakentaneet työskennellessään projektejaan.

Mutta joskus voi olla, että tarvitset ominaisuuden, joka ei ole käytettävissä valitsemassasi työkalussa. Tässä tapauksessa sinulla on mahdollisuus forkoida sen koodi ja kehittää sen pohjalta oma työkalusi tarvitsemallasi toiminnallisuudella.

Koska useimmissa tapauksissa avoimen lähdekoodin ohjelmistojen kehittämiseen vaikuttaa yhteisö aktiivisesti, päätös muutosten tekemiseen tehdään melko nopeasti ja ytimekkäästi: avoimen lähdekoodin projektin kehittäjät luottavat käyttäjien palautteeseen ja ehdotuksiin, heidän raportteihinsa. löydettyjä virheitä ja muita ongelmia.

Grauditin käyttö koodin suojausanalyysiin

Voit käyttää erilaisia ​​avoimen lähdekoodin työkaluja staattisen koodin analysointiin, kaikille ohjelmointikielille ei ole olemassa universaalia työkalua. Joidenkin niistä kehittäjät noudattavat OWASP-suosituksia ja yrittävät kattaa mahdollisimman monta kieltä.

Täällä käytämme Graudit, yksinkertainen komentorivityökalu, jonka avulla voimme löytää haavoittuvuuksia koodikannastamme. Se tukee eri kieliä, mutta silti niiden joukko on rajoitettu. Graudit on kehitetty grep-apuohjelman pohjalta, joka julkaistiin kerran GNU-lisenssillä.

Staattisen koodin analysointiin on olemassa samanlaisia ​​työkaluja - Rough Auditing Tool for Security (RATS), Securitycompass Web Application Analysis Tool (SWAAT), vikaetsintä ja niin edelleen. Mutta Graudit on erittäin joustava ja sillä on minimaaliset tekniset vaatimukset. Sinulla voi kuitenkin olla ongelmia, joita Graudit ei pysty ratkaisemaan. Sitten voit etsiä muita vaihtoehtoja täältä tässä luettelossa.

Voimme integroida tämän työkalun tiettyyn projektiin tai tuoda sen valitun käyttäjän saataville tai käyttää sitä samanaikaisesti kaikissa projekteissamme. Tässä näkyy myös Grauditin joustavuus. Joten kloonataan repo ensin:

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

Luodaan nyt symbolinen linkki, jonka avulla Graudit voi käyttää sitä komentomuodossa

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

Lisätään alias .bashrc-tiedostoon (tai mihin tahansa käyttämääsi asetustiedostoon):

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

Käynnistä uudelleen:

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

Katsotaan, onnistuiko asennus:

$ graudit -h

Jos näet jotain vastaavaa, kaikki on hyvin.

Kuinka käyttää yksinkertaista apuohjelmaa haavoittuvuuksien etsimiseen ohjelmakoodista

Aion testata yhtä olemassa olevista projekteistani. Ennen työkalun käynnistämistä sille on välitettävä tietokanta, joka vastaa sitä kieltä, jolla projektini on kirjoitettu. Tietokannat sijaitsevat ~/gradit/signatures-kansiossa:

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

Testasin siis kahta js-tiedostoa projektistani, ja Graudit näytti tietoja koodini haavoittuvuuksista konsoliin:

Kuinka käyttää yksinkertaista apuohjelmaa haavoittuvuuksien etsimiseen ohjelmakoodista

Kuinka käyttää yksinkertaista apuohjelmaa haavoittuvuuksien etsimiseen ohjelmakoodista

Voit kokeilla projektejasi samalla tavalla. Näet luettelon tietokannoista eri ohjelmointikielille täällä.

Grauditin edut ja haitat

Graudit tukee monia ohjelmointikieliä. Siksi se sopii laajalle käyttäjäjoukolle. Se voi kilpailla riittävästi kaikkien ilmaisten tai maksullisten analogien kanssa. Ja on erittäin tärkeää, että projektiin tehdään edelleen parannuksia, ja yhteisö ei auta vain kehittäjiä, vaan myös muita käyttäjiä, jotka yrittävät selvittää työkalua.

Tämä on kätevä työkalu, mutta toistaiseksi se ei aina pysty tarkasti määrittämään, mikä on epäilyttävän koodinpalan ongelma. Kehittäjät jatkavat Grauditin parantamista.

Mutta joka tapauksessa on hyödyllistä kiinnittää huomiota koodin mahdollisiin tietoturvaongelmiin käytettäessä tällaisia ​​työkaluja.

Alkaa…

Tässä artikkelissa tarkastelin vain yhtä monista tavoista löytää haavoittuvuuksia - staattista sovellusten tietoturvatestausta. Staattisen koodin analyysin suorittaminen on helppoa, mutta se on vasta alkua. Saadaksesi lisätietoja koodikantasi turvallisuudesta, sinun on integroitava muun tyyppinen testaus ohjelmistokehityksen elinkaareen.

Mainonnan oikeuksista

Luotettava VPS ja oikea tariffisuunnitelman valinta mahdollistaa sen, että epämiellyttävät ongelmat häiritsevät sinua vähemmän kehityksestä - kaikki toimii ilman vikoja ja erittäin korkealla käyttöajalla!

Kuinka käyttää yksinkertaista apuohjelmaa haavoittuvuuksien etsimiseen ohjelmakoodista

Lähde: will.com

Lisää kommentti