Как да използвате прост инструмент за търсене на уязвимости в програмния код

Graudit поддържа множество програмни езици и позволява интегрирането на тестване на сигурността на кодовата база директно в процеса на разработка.

Как да използвате прост инструмент за търсене на уязвимости в програмния код
Източник: Unsplash (Markus Spiske)

Тестването е важна част от жизнения цикъл на разработката на софтуер. Има много видове тестове, всеки от които решава своята собствена задача. Днес искам да говоря за откриването на проблеми със сигурността в кода.

Ясно е, че в съвременните реалности на разработката на софтуер е важно да се осигури сигурността на процесите. В свое време дори беше въведен специален термин DevSecOps. Под този термин се разбират редица процедури, насочени към откриването и отстраняването на уязвимости в приложението. Съществуват специализирани open source решения за проверка на уязвимости в съответствие със стандартите OWASP, които описват различни типове и поведение на уязвимостите в изходния код.

Съществуват различни подходи за решаване на проблемите със сигурността, например, статично тестване на сигурността на приложенията (SAST), динамично тестване на сигурността на приложенията (DAST), интерактивно тестване на сигурността на приложенията (IAST), анализ на компонентите на софтуера (Software Composition Analysis) и така нататък.

Статичното тестване на сигурността на приложенията открива грешки в вече написания код. Този подход не изисква стартиране на приложението, затова се нарича статичен анализ.

Ще се спра на статичния анализ на кода и ще използвам прост open source инструмент, за да демонстрирам всичко на практика.

Защо избрах open source инструмент за статичен анализ на сигурността на кода

Има редица причини за това: на първо място, той е безплатен, тъй като използвате инструмент, разработен от общност от съмишленици, които искат да помогнат на други разработчици. Ако имате малък екип или стартап, имате отлична възможност да спестите, използвайки софтуер с отворен код за проверка на сигурността на кодовата си база. На второ място, това ви освобождава от необходимостта да наемате отделен екип DevSecOps, което още повече намалява разходите ви.

Добри open source инструменти винаги се създават с оглед на повишените изисквания за гъвкавост. Затова те могат да се използват практически в всяка среда, обхващайки широк спектър от задачи. На разработчиците е много по-лесно да свържат такива инструменти със системата, която вече са изградили, работейки по проектите си.

Но могат да възникнат ситуации, когато ще ви е нужна функция, която липсва в избрания от вас инструмент. В такъв случай имате възможност да форкнете кода му и да разработите свой собствен инструмент, който да притежава необходимата функционалност.

Тъй като в повечето случаи върху разработката на софтуер с отворен код активно влияе общността, решенията за промени се взимат достатъчно бързо и по същество: разработчиците на open source проекта разчитат на обратната връзка и предложенията на потребителите, както и на техните съобщения за открити грешки и други проблеми.

Използване на Graudit за анализ на сигурността на кода

За статичен анализ на кода могат да се използват различни инструменти с отворен код, не съществува универсален инструмент за всички програмни езици. Разработчиците на някои от тях следват насоките на OWASP и се стремят да обхванат колкото се може повече езици.

Тук ще използваме Graudit, прост инструмент за команден ред, който ще ни позволи да открием уязвимости в нашата кодова база. Той поддържа различни езици, но наборът им е все пак ограничен. Graudit е разработен на базата на служебния инструмент grep, който в миналото е излязъл под лицензията GNU.

Съществуват подобни инструменти за статичен анализ на кода — Rough Auditing Tool for Security (RATS), Securitycompass Web Application Analysis Tool (SWAAT), flawfinder и т.н. Но Graudit е много гъвкав и има минимални технически изисквания. Въпреки това, може да възникнат задачи, които Graudit не може да реши. Тогава можете да потърсите други варианти в този списък.

Можем да интегрираме този инструмент в конкретен проект, или да го направим достъпен за избран потребител, или — да го използваме едновременно във всичките ни проекти. Тук също се проявява гъвкавостта на Graudit. И така, нека първо клонираме репото:

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

Сега да създадем символичен линк за Graudit, за да го използваме в команден формат

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

Добавяме алиас в .bashrc (или в друг конфигурационен файл, който използвате):

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

Презареждаме:

$ source ~/.bashrc # ИЛИ
$ exec $SHELL

Ще проверим дали инсталацията е успешна:

$ graudit -h

Ако видите нещо подобно, значи всичко е наред.

Как да използвате прост инструмент за търсене на уязвимости в програмния код

Ще тествам един от вече съществуващите проекти. Преди да стартирам инструмента, трябва да предам база данни, която съответства на езика, на който е написан моят проект. Базите данни се намират в папката ~/gradit/signatures:

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

И така, тествал съм два js файла от моя проект и Graudit изведе в конзолата информация за уязвимостите в моя код:

Как да използвате прост инструмент за търсене на уязвимости в програмния код

Как да използвате прост инструмент за търсене на уязвимости в програмния код

Можете да опитате по същия начин да тествате вашите проекти. Списък на базите данни за различни езици за програмиране може да се види тук..

Предимства и недостатъци на Graudit

Graudit поддържа множество езици за програмиране. Затова е подходящ за широка аудитория. Той може достойно да конкурира с всякакви безплатни или платени аналози. И е много важно, че проектът все още получава подобрения, а общността не само помага на разработчиците, но и на другите потребители, които се опитват да разберат инструмента.

Това е удобен инструмент, но засега не винаги може точно да посочи в какво точно се състои проблемът, свързан с подозрителен участък от кода. Разработчиците продължават да подобряват Graudit.

Но във всеки случай е полезно да обръщате внимание на потенциалните проблеми с безопасността в кода, използвайки подобни инструменти.

Начало…

В тази статия разгледах само един от многото начини за намиране на уязвимости — статично тестване на сигурността на приложенията. Лесно е да се провежда статичен анализ на кода, но това е само началото. За да узнат повече за сигурността на вашата кодова база, е необходимо да се интегрират в жизнения цикъл на разработката и други видове тестване.

Реклама

Надежден VPS и правилният избор на тарифен план ще позволят да се отвлекате по-малко от разработката за неприятни проблеми — всичко ще работи безпроблемно и с много висок uptime!

Как да използвате прост инструмент за търсене на уязвимости в програмния код

Източник: habr.com

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster