Paano gumamit ng isang simpleng utility upang makahanap ng mga kahinaan sa code ng programa

Sinusuportahan ng Graudit ang maramihang mga programming language at pinapayagan kang isama ang pagsubok sa seguridad ng codebase nang direkta sa proseso ng pagbuo.

Paano gumamit ng isang simpleng utility upang makahanap ng mga kahinaan sa code ng programa
Pinagmulan: Unsplash (Markus Spiske)

Ang pagsubok ay isang mahalagang bahagi ng ikot ng buhay ng pagbuo ng software. Mayroong maraming mga uri ng pagsubok, ang bawat isa sa kanila ay nalulutas ang sarili nitong problema. Ngayon gusto kong pag-usapan ang tungkol sa paghahanap ng mga problema sa seguridad sa code.

Malinaw, sa modernong mga katotohanan ng pagbuo ng software, mahalagang tiyakin ang seguridad ng proseso. Sa isang pagkakataon, ipinakilala pa ang espesyal na terminong DevSecOps. Ang terminong ito ay tumutukoy sa isang serye ng mga pamamaraan na naglalayong tukuyin at alisin ang mga kahinaan sa isang aplikasyon. Mayroong mga espesyal na solusyon sa open source para sa pagsuri ng mga kahinaan alinsunod sa mga pamantayan OWASP, na naglalarawan sa iba't ibang uri at gawi ng mga kahinaan sa source code.

Mayroong iba't ibang mga diskarte sa paglutas ng mga problema sa seguridad, tulad ng Static Application Security Testing (SAST), Dynamic Application Security Testing (DAST), Interactive Application Security Testing (IAST), Software Composition Analysis, at iba pa.

Tinutukoy ng static na pagsubok sa seguridad ng application ang mga error sa nakasulat na code. Ang diskarte na ito ay hindi nangangailangan ng application na tumakbo, kaya naman tinatawag itong static analysis.

Magtutuon ako sa static na pagsusuri ng code at gagamit ng isang simpleng open source na tool upang ipakita ang lahat sa pagsasanay.

Bakit ako pumili ng isang open source tool para sa static code security analysis

Mayroong ilang mga dahilan para dito: una, libre ito dahil gumagamit ka ng tool na binuo ng isang komunidad ng mga taong katulad ng pag-iisip na gustong tumulong sa ibang mga developer. Kung mayroon kang maliit na team o startup, mayroon kang magandang pagkakataon na makatipid ng pera sa pamamagitan ng paggamit ng open source software upang subukan ang seguridad ng iyong codebase. Pangalawa, inaalis nito ang pangangailangan para sa iyo na kumuha ng hiwalay na koponan ng DevSecOps, na higit na nakakabawas sa iyong mga gastos.

Ang mga mahusay na open source na tool ay palaging nilikha na isinasaalang-alang ang mas mataas na mga kinakailangan para sa flexibility. Samakatuwid, maaari silang magamit sa halos anumang kapaligiran, na sumasaklaw sa isang malawak na hanay ng mga gawain. Ito ay mas madali para sa mga developer na ikonekta ang mga naturang tool sa system na kanilang binuo habang nagtatrabaho sa kanilang mga proyekto.

Ngunit maaaring may mga pagkakataong kailangan mo ng feature na hindi available sa tool na pipiliin mo. Sa kasong ito, mayroon kang pagkakataon na i-fork ang code nito at bumuo ng iyong sariling tool batay dito gamit ang functionality na kailangan mo.

Dahil sa karamihan ng mga kaso ang pagbuo ng open source software ay aktibong naiimpluwensyahan ng komunidad, ang desisyon na gumawa ng mga pagbabago ay ginagawa nang mabilis at hanggang sa punto: ang mga developer ng open source na proyekto ay umaasa sa feedback at mga mungkahi mula sa mga user, sa kanilang mga ulat ng nakitang mga error at iba pang problema.

Paggamit ng Graudit para sa Code Security Analysis

Maaari kang gumamit ng iba't ibang open source na tool para sa static code analysis; walang unibersal na tool para sa lahat ng programming language. Ang mga nag-develop ng ilan sa kanila ay sumusunod sa mga rekomendasyon ng OWASP at subukang masakop ang maraming mga wika hangga't maaari.

Dito natin gagamitin Graudit, isang simpleng command line utility na magbibigay-daan sa amin na makahanap ng mga kahinaan sa aming codebase. Sinusuportahan nito ang iba't ibang wika, ngunit limitado pa rin ang kanilang hanay. Ang Graudit ay binuo batay sa grep utility utility, na minsang inilabas sa ilalim ng lisensya ng GNU.

May mga katulad na tool para sa static code analysis - Rough Auditing Tool for Security (RATS), Securitycompass Web Application Analysis Tool (SWAAT), flawfinder at iba pa. Ngunit ang Graudit ay napaka-flexible at may kaunting mga teknikal na kinakailangan. Gayunpaman, maaari kang magkaroon ng mga problema na hindi malulutas ng Graudit. Pagkatapos ay maaari kang maghanap ng iba pang mga pagpipilian dito sa listahang ito.

Maaari naming isama ang tool na ito sa isang partikular na proyekto, o gawin itong available sa isang napiling user, o gamitin ito nang sabay-sabay sa lahat ng aming mga proyekto. Dito rin pumapasok ang flexibility ni Graudit. Kaya't i-clone muna natin ang repo:

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

Ngayon, gumawa tayo ng simbolikong link para magamit ito ng Graudit sa command format

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

Magdagdag tayo ng alias sa .bashrc (o anumang configuration file na ginagamit mo):

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

I-reboot:

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

Tingnan natin kung matagumpay ang pag-install:

$ graudit -h

Kung makakita ka ng isang bagay na katulad, kung gayon ang lahat ay maayos.

Paano gumamit ng isang simpleng utility upang makahanap ng mga kahinaan sa code ng programa

Susubukan ko ang isa sa aking mga kasalukuyang proyekto. Bago patakbuhin ang tool, kailangan itong maipasa sa isang database na naaayon sa wika kung saan nakasulat ang aking proyekto. Ang mga database ay matatagpuan sa folder na ~/gradit/signatures:

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

Kaya, sinubukan ko ang dalawang js file mula sa aking proyekto, at ipinakita ng Graudit ang impormasyon tungkol sa mga kahinaan sa aking code sa console:

Paano gumamit ng isang simpleng utility upang makahanap ng mga kahinaan sa code ng programa

Paano gumamit ng isang simpleng utility upang makahanap ng mga kahinaan sa code ng programa

Maaari mong subukang subukan ang iyong mga proyekto sa parehong paraan. Makakakita ka ng listahan ng mga database para sa iba't ibang programming language dito.

Mga Kalamangan at Kahinaan ng Graudit

Sinusuportahan ng Graudit ang maraming mga programming language. Samakatuwid, ito ay angkop para sa isang malawak na hanay ng mga gumagamit. Maaari itong sapat na makipagkumpitensya sa anumang libre o bayad na mga analogue. At napakahalaga na ang mga pagpapabuti ay ginagawa pa rin sa proyekto, at hindi lamang tinutulungan ng komunidad ang mga developer, kundi pati na rin ang iba pang mga user na sinusubukang malaman ang tool.

Ito ay isang madaling gamiting tool, ngunit sa ngayon ay hindi nito palaging matukoy kung ano mismo ang problema sa isang kahina-hinalang piraso ng code. Patuloy na pinapabuti ng mga developer ang Graudit.

Ngunit sa anumang kaso, kapaki-pakinabang na bigyang-pansin ang mga potensyal na problema sa seguridad sa code kapag gumagamit ng mga tool na tulad nito.

Nagsisimula…

Sa artikulong ito, tiningnan ko ang isa lamang sa maraming paraan upang makahanap ng mga kahinaan - static na pagsubok sa seguridad ng aplikasyon. Ang pagsasagawa ng static code analysis ay madali, ngunit ito ay simula pa lamang. Upang matuto nang higit pa tungkol sa seguridad ng iyong codebase, kailangan mong isama ang iba pang mga uri ng pagsubok sa iyong lifecycle ng pagbuo ng software.

Sa Mga Karapatan ng Pag-advertise

Maaasahang VPS at ang tamang pagpili ng plano ng taripa ay magbibigay-daan sa iyo na hindi gaanong magambala mula sa pag-unlad ng mga hindi kasiya-siyang problema - lahat ay gagana nang walang mga pagkabigo at may napakataas na oras ng pag-unlad!

Paano gumamit ng isang simpleng utility upang makahanap ng mga kahinaan sa code ng programa

Pinagmulan: www.habr.com

Magdagdag ng komento