Proqram kodunda boşluqları tapmaq üçün sadə yardımçı proqramdan necə istifadə etmək olar

Graudit çoxlu proqramlaşdırma dillərini dəstəkləyir və kod bazası təhlükəsizlik testini birbaşa inkişaf prosesinə inteqrasiya etməyə imkan verir.

Proqram kodunda boşluqları tapmaq üçün sadə yardımçı proqramdan necə istifadə etmək olar
Mənbə: Unsplash (Markus Spiske)

Test proqram təminatının inkişaf dövrünün vacib hissəsidir. Testin bir çox növləri var, onların hər biri öz problemini həll edir. Bu gün kodda təhlükəsizlik problemlərinin tapılması haqqında danışmaq istəyirəm.

Aydındır ki, proqram təminatının inkişafının müasir reallıqlarında prosesin təhlükəsizliyini təmin etmək vacibdir. Bir vaxtlar DevSecOps xüsusi termini belə təqdim edildi. Bu termin tətbiqdəki zəiflikləri müəyyən etməyə və aradan qaldırmağa yönəlmiş bir sıra prosedurlara aiddir. Standartlara uyğun olaraq zəiflikləri yoxlamaq üçün xüsusi açıq mənbə həlləri mövcuddur OWASP, mənbə kodundakı zəifliklərin müxtəlif növlərini və davranışını təsvir edir.

Statik Tətbiq Təhlükəsizliyi Testi (SAST), Dinamik Tətbiq Təhlükəsizliyi Testi (DAST), İnteraktiv Tətbiq Təhlükəsizliyi Testi (IAST), Proqram Tərkibinin Təhlili və s. kimi təhlükəsizlik problemlərinin həllinə müxtəlif yanaşmalar mövcuddur.

Statik proqram təhlükəsizlik testi artıq yazılmış kodda səhvləri müəyyən edir. Bu yanaşma tətbiqin işləməsini tələb etmir, buna görə də ona statik analiz deyilir.

Mən statik kod analizinə diqqət yetirəcəyəm və hər şeyi praktikada nümayiş etdirmək üçün sadə açıq mənbə alətindən istifadə edəcəyəm.

Statik kodun təhlükəsizliyi təhlili üçün niyə açıq mənbə aləti seçdim?

Bunun bir sıra səbəbləri var: birincisi, pulsuzdur, çünki siz digər tərtibatçılara kömək etmək istəyən həmfikir insanlar icması tərəfindən hazırlanmış alətdən istifadə edirsiniz. Kiçik bir komandanız və ya başlanğıcınız varsa, kod bazanızın təhlükəsizliyini yoxlamaq üçün açıq mənbə proqram təminatından istifadə edərək pula qənaət etmək üçün əla fürsətiniz var. İkincisi, bu, xərclərinizi daha da azaltmaqla ayrıca DevSecOps komandası işə götürmə ehtiyacını aradan qaldırır.

Yaxşı açıq mənbə alətləri həmişə çeviklik üçün artan tələbləri nəzərə alaraq yaradılır. Buna görə də, onlar geniş tapşırıqları əhatə edən demək olar ki, hər hansı bir mühitdə istifadə edilə bilər. Tərtibatçıların layihələri üzərində işləyərkən bu cür alətləri artıq qurduqları sistemlə əlaqələndirmək daha asandır.

Ancaq seçdiyiniz alətdə olmayan funksiyaya ehtiyacınız ola bilər. Bu halda, onun kodunu çəngəlləmək və ehtiyacınız olan funksionallıqla onun əsasında öz alətinizi inkişaf etdirmək imkanınız var.

Əksər hallarda açıq mənbəli proqram təminatının inkişafı cəmiyyətin fəal şəkildə təsirinə məruz qaldığından, dəyişikliklər etmək qərarı olduqca tez və məqsədəuyğun şəkildə qəbul edilir: açıq mənbə layihəsinin tərtibatçıları istifadəçilərin rəylərinə və təkliflərinə, onların hesabatlarına etibar edirlər. aşkar edilmiş səhvlər və digər problemlər.

Kod Təhlükəsizliyi Təhlili üçün Graudit-dən istifadə

Statik kod təhlili üçün müxtəlif açıq mənbə alətlərindən istifadə edə bilərsiniz; bütün proqramlaşdırma dilləri üçün universal alət yoxdur. Bəzilərinin tərtibatçıları OWASP tövsiyələrinə əməl edir və mümkün qədər çox dili əhatə etməyə çalışırlar.

Burada istifadə edəcəyik Graudit, kod bazamızda zəiflikləri tapmağa imkan verəcək sadə komanda xətti yardım proqramı. Fərqli dilləri dəstəkləyir, lakin hələ də onların dəsti məhduddur. Graudit bir vaxtlar GNU lisenziyası ilə buraxılmış grep yardım proqramı əsasında hazırlanmışdır.

Statik kodun təhlili üçün oxşar alətlər mövcuddur - Təhlükəsizliyə dair Rough Auditing Tool (RATS), Securitycompass Web Application Analysis Tool (SWAAT), flawfinder və s. Lakin Graudit çox çevikdir və minimal texniki tələblərə malikdir. Bununla belə, Graudit-in həll edə bilmədiyi problemləriniz ola bilər. Sonra burada başqa variantları axtara bilərsiniz bu siyahıda.

Biz bu aləti konkret layihəyə inteqrasiya edə və ya onu seçilmiş istifadəçiyə təqdim edə və ya bütün layihələrimizdə eyni vaxtda istifadə edə bilərik. Graudit-in çevikliyi də burada işə düşür. Beləliklə, əvvəlcə repo klonlayaq:

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

İndi Graudit-in əmr formatında istifadə etməsi üçün simvolik bir keçid yaradaq

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

Gəlin .bashrc-ə (və ya istifadə etdiyiniz konfiqurasiya faylından asılı olmayaraq) ləqəb əlavə edək:

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

Yenidən başladın:

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

Quraşdırmanın uğurlu olub olmadığını yoxlayaq:

$ graudit -h

Bənzər bir şey görsəniz, hər şey yaxşıdır.

Proqram kodunda boşluqları tapmaq üçün sadə yardımçı proqramdan necə istifadə etmək olar

Mövcud layihələrimdən birini sınaqdan keçirəcəyəm. Aləti işə salmazdan əvvəl ona layihəmin yazıldığı dilə uyğun verilənlər bazasından keçmək lazımdır. Verilənlər bazası ~/gradit/signatures qovluğunda yerləşir:

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

Beləliklə, layihəmdən iki js faylını sınaqdan keçirdim və Graudit kodumdakı boşluqlar haqqında məlumatları konsolda göstərdi:

Proqram kodunda boşluqları tapmaq üçün sadə yardımçı proqramdan necə istifadə etmək olar

Proqram kodunda boşluqları tapmaq üçün sadə yardımçı proqramdan necə istifadə etmək olar

Layihələrinizi eyni şəkildə sınamağa cəhd edə bilərsiniz. Müxtəlif proqramlaşdırma dilləri üçün verilənlər bazalarının siyahısını görə bilərsiniz burada.

Graudit-in üstünlükləri və mənfi cəhətləri

Graudit bir çox proqramlaşdırma dillərini dəstəkləyir. Buna görə də geniş istifadəçilər üçün uyğundur. İstənilən pulsuz və ya pullu analoqlarla kifayət qədər rəqabət apara bilər. Layihədə təkmilləşdirmələrin hələ də davam etməsi çox vacibdir və icma təkcə tərtibatçılara deyil, həm də aləti anlamağa çalışan digər istifadəçilərə kömək edir.

Bu lazımlı bir vasitədir, lakin indiyə qədər şübhəli kod parçası ilə problemin nə olduğunu həmişə dəqiq müəyyən edə bilmir. Tərtibatçılar Graudit-i təkmilləşdirməyə davam edirlər.

Amma hər halda, bu kimi alətlərdən istifadə edərkən koddakı potensial təhlükəsizlik problemlərinə diqqət yetirmək faydalıdır.

Başlanır…

Bu yazıda mən zəiflikləri tapmaq üçün bir çox yoldan yalnız birinə baxdım - statik proqram təhlükəsizliyi testi. Statik kod analizinin aparılması asandır, lakin bu, yalnız başlanğıcdır. Kod bazanızın təhlükəsizliyi haqqında daha çox məlumat əldə etmək üçün siz proqram təminatının inkişaf dövrünə digər test növlərini inteqrasiya etməlisiniz.

Reklam Hüquqları haqqında

Etibarlı VPS və tarif planının düzgün seçilməsi sizi xoşagəlməz problemlərlə inkişafdan daha az yayındırmağa imkan verəcək - hər şey uğursuzluqlar olmadan və çox yüksək iş vaxtı ilə işləyəcək!

Proqram kodunda boşluqları tapmaq üçün sadə yardımçı proqramdan necə istifadə etmək olar

Mənbə: www.habr.com

Добавить комментарий