A Graudit támogatja a programozási nyelvek széles választékát, és lehetővé teszi a kódalap biztonsági tesztelését közvetlenül a fejlesztési folyamatba való integrálás során.

Forrás: (Markus Spiske)
A tesztelés a szoftverfejlesztési életciklus fontos része. Rengeteg féle tesztelés létezik, mindegyik a saját céljának megfelelően működik. Ma a kódban rejlő biztonsági problémák felkutatásáról szeretnék beszélni.
Nyilvánvaló, hogy a modern szoftverfejlesztésben fontos a folyamatok biztonságának biztosítása. Időben bevezettek egy speciális kifejezést, a DevSecOps-t. Ez a kifejezés egy sor eljárást jelent, amelyek az alkalmazásban található sebezhetőségek azonosítására és megszüntetésére irányulnak. Léteznek szakosodott open source megoldások a sebezhetőségek ellenőrzésére a következő szabványok alapján: , amelyek leírják a forráskód különböző típusait és a sebezhetőségek viselkedését.
Különböző megközelítések léteznek a biztonsági problémák megoldására, például statikus alkalmazásbiztonsági tesztelés (SAST), dinamikus alkalmazásbiztonsági tesztelés (DAST), interaktív alkalmazásbiztonsági tesztelés (IAST), szoftverkomponensek elemzése (Software Composition Analysis) és így tovább.
A statikus alkalmazásbiztonsági tesztelés a már megírt kódban található hibákat azonosítja. Ez a megközelítés nem igényli az alkalmazás futtatását, ezért nevezzük statikus elemzésnek.
A statikus kódelemzésen fogok megállni, és egy egyszerű open source eszközt fogok használni, hogy mindezt a gyakorlatban bemutassam.
Miért választottam open source eszközt a kód statikus biztonsági elemzésére?
Ennek több oka is van: egyrészt ingyenes, mivel egy olyan eszközt használ, amelyet olyan közösség fejlesztett ki, akik segíteni szeretnék más fejlesztőknek. Ha kis csapata van vagy induló vállalkozása van, nagyszerű lehetősége van spórolni azzal, hogy nyílt forráskódú szoftvert használ a kódalap biztonsági ellenőrzésére. Másrészt megszabadítja az igényt egy külön DevSecOps csapat felvételére, ami tovább csökkenti a költségeit.
A jó open source eszközök mindig a rugalmasságon alapulnak. Ezért gyakorlatilag bármilyen környezetben használhatók, széleskörű feladatokat lefedve. A fejlesztőknek sokkal egyszerűbb ezeket az eszközöket integrálni a már megépített rendszereikbe, miközben a saját projektjeiken dolgoznak.
De adódhatnak olyan helyzetek, amikor szüksége van egy funkcióra, amely nem elérhető a választott eszközben. Ebben az esetben lehetősége van fork-olni a kódját, és kifejleszteni a saját eszközét a szükséges funkciókkal.
Mivel a legtöbb esetben az open source szoftverfejlesztésre erősen hatással van a közösség, a módosításokról való döntés általában elég gyorsan és szakszerűen történik: az open source projektek fejlesztői a felhasználói visszajelzésekre és javaslatokra, valamint a talált hibákról és egyéb problémákról szóló üzenetekre támaszkodnak.
A Graudit használata a kód biztonsági elemzésére
Statikus kódelemzéshez különféle open source eszközöket lehet használni, de nincs univerzális eszköz minden programozási nyelvre. Néhány fejlesztő az OWASP ajánlásait követi, és arra törekszik, hogy minél több nyelvet lefedjen.
Itt most a következőt fogjuk használni , egy egyszerű parancssori segédprogram, amely lehetővé teszi számunkra, hogy sebezhetőségeket találjunk a kódalapunkban. Támogat különféle nyelveket, de a választékuk mégis korlátozott. A Graudit a grep segédprogram alapján készült, amely egy ideje GNU licenc alatt jelent meg.
Hasonló eszközök is léteznek a statikus kódelemzéshez — Rough Auditing Tool for Security (RATS), Securitycompass Web Application Analysis Tool (SWAAT), flawfinder, és így tovább. De a Graudit nagyon rugalmas és minimális technikai követelményekkel rendelkezik. Ennek ellenére felmerülhetnek olyan feladatok, amelyeket a Graudit nem tud megoldani. Akkor érdemes más lehetőségeket megkeresni itt .
Integrálhatjuk ezt az eszközt egy konkrét projektbe, elérhetővé tehetjük egy kiválasztott felhasználó számára, vagy egyszerre használhatjuk minden projektünkben. Ez is a Graudit rugalmasságát mutatja. Először tehát klónozzuk a repót:
$ git clone https://github.com/wireghoul/grauditMost már létrehozunk egy szimbolikus hivatkozást a Graudit számára, hogy a parancsformátumban használhassuk.
$ cd ~/bin && mkdir graudit
$ ln --symbolic ~/graudit/graudit ~/bin/grauditAdjunk hozzá alias-t a .bashrc-hez (vagy a másik konfigurációs fájlhoz, amit használsz):
#------ .bashrc ------
alias graudit="~/bin/graudit"Újraterheljük:
$ source ~/.bashrc # VAGY
$ exec $SHELL
Ellenőrizzük, hogy a telepítés sikeres volt-e:
$ graudit -hHa valami hasonlót látsz, akkor minden rendben.

Egyik már meglévő projektjeimet fogom tesztelni. Az eszköz indítása előtt át kell adnom a projekt nyelvének megfelelő adatbázist. Az adatbázisok a ~/gradit/signatures mappában találhatók:
$ graudit -d ~/gradit/signatures/js.dbTehát teszteltem két js fájlt a projektből, és a Graudit kiírta a konzolra a kódommal kapcsolatos sebezhetőségeket:


Ugyanezt a módszert alkalmazva próbáld ki a te projektjeidet is. A különböző programozási nyelvekhez tartozó adatbázisok listáját itt nézheted meg. .
A Graudit előnyei és hátrányai
A Graudit számos programozási nyelvet támogat. Ezért széles körben használható. Méltó versenytársa lehet bármilyen ingyenes vagy fizetős alternatívának. Nagyon fontos, hogy a projekt folyamatosan fejlődik, és a közösség nemcsak a fejlesztőket, hanem a nála eligibilis felhasználókat is segíti, akik próbálnak eligibilis lenni az eszközzel.
Ez egy kényelmes eszköz, de jelenleg nem mindig tudja pontosan megmondani, hogy mi a baj egy gyanús kódrésszel. A fejlesztők továbbra is dolgoznak a Graudit fejlesztésén.
Mindenesetre hasznos figyelni a potenciális biztonsági problémákra a kódban, hasonló eszközök használatával.
Kezdet…
Ebben a cikkben csak a sebezhetőségek keresésének egyik módját mutattam be – a statikus alkalmazásbiztonsági tesztelést. A kód statikus elemzése könnyen elvégezhető, de ez csak a kezdet. Ahhoz, hogy többet megtudj a kód alapod biztonságáról, másfajta teszteléseket kell integrálnod a szoftverfejlesztési életciklusba.
Hirdetés
és a megfelelő tarifális terv kiválasztása lehetővé teszi, hogy kevesebb figyelmet fordíts a fejlesztésről a kellemetlen problémákra – minden zökkenőmentesen fog működni, és nagyon magas uptime-mal!
Forrás: habr.com
