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.
Mənbə:
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
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
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
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.
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:
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
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
Mənbə: www.habr.com