← Bütün məqalələr

OWASP Top 10: hər proqramçının bilməli olduğu veb zəiflikləri

Burncode Team 4 dəq oxuma

OWASP Top 10 tanınmış qeyri-kommersiya təhlükəsizlik icması tərəfindən aparılan və mütəmadi yenilənən siyahıdır: burada real veb-tətbiqlərdə aşkarlanan ən geniş yayılmış və ən ciddi təsirli zəifliklər toplanıb. Bu, mücərrəd akademik siyahı deyil — canlı mühitdəki proqram təminatında nəyin daim sındığına dair real məlumatlar əsasında tərtib edilir. Veb-tətbiqlər hazırlayır və ya istifadəyə verirsinizsə, bu, bir dəfə ötəri nəzər salmaq üçün yox, həqiqətən anlamağa dəyən əsas siyahıdır.

Bu siyahı niyə ümumi «təhlükəsiz olun» yoxlama siyahısından daha vacibdir

Təhlükəsizlik üzrə tövsiyələr çox vaxt əməl etmək üçün həddən artıq qeyri-müəyyən olur. OWASP Top 10 məhz konkret olduğu üçün faydalıdır — hər kateqoriya yaxşı öyrənilmiş və sınaqdan çıxmış həll yolları olan real xəta sinfini təsvir edir. Aşağıda kateqoriyaların praktikada əslində nə demək olduğunu sadə dildə izah edirik.

Kateqoriyalar — sadə dildə

Pozulmuş giriş nəzarəti (Broken access control)

Bu, istifadəçinin etməməli olduğu bir şeyi edə və ya görməməli olduğu bir şeyi görə bildiyi haldır — URL-dəki ID-ni dəyişməklə başqa istifadəçinin məlumatlarına baxmaq və ya admin icazəsi olmadan admin səhifəsinə daxil olmaq. Bu, real həyatda ən çox rast gəlinən aşkarlamalardan biri olaraq qalır, çünki giriş yoxlamaları hər bir marşrutda və hər bir əməliyyatda düzgün tətbiq olunmalıdır və real boşluq yaratmaq üçün bir buraxılmış yoxlama kifayətdir.

Kriptoqrafik uğursuzluqlar (Cryptographic failures)

Həssas verilənlər — parollar, ödəniş məlumatları, şəxsi məlumatlar — lazımi qoruma olmadan saxlanılır və ya ötürülür. Buraya parolların açıq mətn şəklində və ya zəif heşləmə ilə saxlanması, həssas verilənlərin şifrələnməmiş bağlantılar üzərindən göndərilməsi daxildir.

İnyeksiya (Injection)

Bu, SQL inyeksiyasının da aid olduğu daha geniş kateqoriyadır — etibarsız girişin verilən kimi deyil, əmr kimi şərh edildiyi istənilən hal: istər verilənlər bazası sorğusu, istər sistem əmri, istərsə də tətbiqin istifadəçi adından icra etdiyi başqa bir şey olsun.

Təhlükəsiz olmayan dizayn (Insecure design)

Bəzi zəifliklər ümumiyyətlə reallaşdırma xətası deyil — əvvəldən təhlükəsizlik nəzərə alınmadan layihələndirilmiş funksiyanın birbaşa nəticəsidir, məsələn, şəxsiyyəti düzgün yoxlamayan parolun bərpası axını. Bu kateqoriya xatırladır ki, təhlükəsizlik kod yazıldıqdan sonra aparılan yoxlama deyil, dizayn müzakirəsinin bir hissəsi olmalıdır.

Təhlükəsizlik konfiqurasiyasında səhvlər (Security misconfiguration)

Heç vaxt dəyişdirilməmiş standart admin parolları, aktiv qalmış lazımsız funksiyalar, daxili sistem məlumatlarını istənilən ziyarətçiyə açan həddən artıq ətraflı xəta mesajları. Çox vaxt düzəldilməsi ən asan və gözdən qaçırılması ən asan kateqoriyadır — məhz ona görə ki, bunların heç biri yeni kod yazmağı tələb etmir.

Zəif və köhnəlmiş komponentlər (Vulnerable and outdated components)

Məlum, ictimai açıqlanmış zəifliyi olan kitabxana, freymvork və ya asılılıqdan istifadə. Müasir tətbiqlər onlarla və ya yüzlərlə üçüncü tərəf paketi qoşduqca bu, daha geniş yayılıb — onların hər biri yamaq tətbiq edilmədən qalarsa, real risk yarada bilər.

İdentifikasiya və autentifikasiya uğursuzluqları (Identification and authentication failures)

Zəif parol tələbləri, təkrarlanan giriş cəhdlərinə qarşı qorumanın olmaması, müddəti bitməyən və ya düzgün etibarsız hala salınmayan sessiyalar. Çoxfaktorlu autentifikasiyanı bu qədər əhəmiyyətli təkmilləşdirməyə çevirən məhz bu kateqoriyadır — o, digər hissələr səssizcə sıradan çıxdıqda belə girişin özünü qoruyur.

Proqram təminatı və verilənlərin bütövlüyü ilə bağlı uğursuzluqlar (Software and data integrity failures)

Lazımi qaydada yoxlanılmamış mənbədən gələn verilənlərə və ya koda etibar etmək — məsələn, quraşdırdığı şeyin həqiqətən iddia etdiyi şey olduğunu təsdiqləməyən yeniləmə mexanizmi və ya CI/CD konveyeri.

Təhlükəsizlik jurnallarının və monitorinqin çatışmazlığı (Security logging and monitoring failures)

Lazımi jurnallaşdırma olmadan məlumat sızması uzun müddət xəbərsiz qala bilər, aşkarlandıqdan sonra belə nəyin baş verdiyini dəqiq anlamaq üçün heç bir qeyd olmur. Yaxşı jurnallaşdırma hücumun qarşısını almır, lakin kimsə fərqinə varmamışdan əvvəl onun vura biləcəyi zərəri kəskin məhdudlaşdırır.

Server tərəfində sorğu saxtakarlığı (Server-side request forgery)

Serveri aldadaraq onun çıxışı olmamalı olan ünvana — çox vaxt ictimai internetdən birbaşa əlçatan olmayan daxili sistemə — sorğu göndərməyə məcbur etmək.

Bu siyahı ilə əslində nə etmək lazımdır

Ona hazırlaşılmalı imtahan kimi yanaşmayın. Ona öz kod bazanız üçün real yoxlama siyahısı kimi yanaşın: hər kateqoriya üzrə dürüstcəsinə soruşun ki, tətbiqiniz məhz ona qarşı yoxlanılıbmı — «müasir freymvorkdan istifadə etdiyimiz üçün yəqin ki, hər şey qaydasındadır» düşüncəsi ilə kifayətlənməyin. Freymvorklar kömək edir, lakin sizi dizayn qərarlarından, konfiqurasiya səhvlərindən və ya kiminsə sıx müddət şəraitində yazdığı bir xam sorğudan tam qorumur.

Məhz bu siyahı üzrə strukturlaşdırılmış audit — ümumi skan yox, sizin konkret kodunuzun və konfiqurasiyanızın real yoxlanılması — infrastrukturun möhkəmləndirilməsi və komandaların real uyğunluq auditinə hazırlanması ilə yanaşı, Burncode-un tətbiq təhlükəsizliyi üzrə işinin əsasını təşkil edir.