STRIDE bo‘yicha tahdidlarni modellashtirish: jamoa uchun qo‘llanma
Chuqur4 daqInnovialabs tahririyati
Qisqacha
STRIDE bo‘yicha tahdidlarni modellashtirish — tizimda ma’lumot qanday harakatlanishini chizish, ishonch darajasi o‘zgaradigan joylarni belgilash, har bir elementga oltita standart savol berish va haqiqiy xavflarni kod yozilishidan oldin ustuvor backlog vazifalariga aylantirish.
STRIDE bo‘yicha tahdidlarni modellashtirish nima
Tahdidlarni modellashtirish (threat modeling) — tizimda nima noto‘g‘ri ketishi mumkinligi va bunga qarshi nima qilishingiz haqidagi tuzilmali suhbat. U loyihalash bosqichida eng yaxshi ishlaydi: bu paytda kamchilikni tuzatish servisni qayta yozish emas, sxemani o‘zgartirish demakdir.
STRIDE — Microsoft’da yaratilgan oltita tahdid toifasidan iborat ro‘yxat:
| Harf | Tahdid | Buziladigan xususiyat | Misol |
|---|---|---|---|
| S | Spoofing — o‘zini boshqa qilib ko‘rsatish | Autentifikatsiya | O‘g‘irlangan token bilan kirish |
| T | Tampering — o‘zgartirish | Yaxlitlik | So‘rovdagi narxni o‘zgartirish |
| R | Repudiation — inkor etish | Inkor etib bo‘lmaslik | Foydalanuvchi harakatni inkor qiladi, log esa yo‘q |
| I | Information disclosure — sizib chiqish | Maxfiylik | API boshqa foydalanuvchilar ma’lumotini qaytaradi |
| D | Denial of service — xizmatdan mahrum qilish | Mavjudlik | Og‘ir endpoint bazani ishdan chiqaradi |
| E | Elevation of privilege — huquqlarni oshirish | Avtorizatsiya | Oddiy foydalanuvchi admin metodini chaqiradi |
Butun sessiya to‘rtta oddiy savolga quriladi: Nima qurayapmiz? Nima noto‘g‘ri ketishi mumkin? Bunga qarshi nima qilamiz? Yaxshi uddaladikmi?
1-qadam. Ma’lumotlar oqimi diagrammasini chizing
Ma’lumotlar oqimi diagrammasi (DFD) uchun atigi beshta element turi kerak:
- Tashqi obyekt — siz nazorat qilmaydigan foydalanuvchi, hamkor tizimi yoki to‘lov provayderi.
- Jarayon — sizning kodingiz: API, worker, frontend.
- Ombor — ma’lumotlar bazasi, kesh, fayl ombori, navbat.
- Ma’lumotlar oqimi — qanday ma’lumot va qanday uzatilishini ko‘rsatuvchi strelka (HTTPS, gRPC, webhook).
- Ishonch chegarasi — ishonch darajasi o‘zgaradigan joydagi punktir chiziq.
Bitta funksiya yoki bitta servis darajasida qoling. Bir ekranga sig‘adigan sxema muhokama qilinadi, butun devorni egallagani esa e’tiborsiz qoladi. OWASP Threat Dragon kabi vositalar yordam beradi, lekin oddiy doska ham yaxshi ishlaydi.
2-qadam. Ishonch chegaralarini belgilang
Tahdidlarning aksariyati chegaralarda yashaydi. Odatiy chegaralar:
- internet va sizning backend;
- backend va uchinchi tomon API;
- ommaviy servis va ichki admin panel;
- ilova va ma’lumotlar bazasi;
- multi-tenant tizimdagi ijarachilar.
Chegarani kesib o‘tgan har bir strelka — savol: buni kim yuboryapti, uni soxtalashtirish mumkinmi va ma’lumot zararli bo‘lsa nima bo‘ladi?
3-qadam. Har bir elementga STRIDE’ni qo‘llang
Elementma-element yuring. Har bir toifa hamma joyda dolzarb emas; keng tarqalgan moslik:
| Element | Dolzarb toifalar |
|---|---|
| Tashqi obyekt | S, R |
| Jarayon | S, T, R, I, D, E |
| Ombor | T, I, D (log saqlansa, R ham) |
| Ma’lumotlar oqimi | T, I, D |
Tahdidni aniq gap bilan yozing: «Hujumchi ushlab qolingan webhook’ni qayta yuborib, to‘lanmagan buyurtmani to‘langan deb belgilaydi». «Buzib kirish» kabi noaniq yozuvlarni tuzatib ham, test qilib ham bo‘lmaydi.
Sessiya uchun amaliy maslahatlar:
- Dasturchi, QA, mahsulot jamoasidan kimnidir va iloji bo‘lsa, infratuzilmaga mas’ul odamni chaqiring.
- Vaqtni cheklang: bitta funksiyaga 60–90 daqiqa.
- Bir kishi sessiyani olib boradi va STRIDE savollarini beradi, boshqasi yozib boradi.
- Qidiruv bosqichida yechimlar haqida bahslashmang. Avval yig‘amiz, keyin qaror qilamiz.
4-qadam. Ustuvorlikni belgilang
Tahdidlar ularni yopish uchun resursdan ko‘proq topiladi. Aniq formulalardan ko‘ra oddiy shkala yaxshiroq ishlaydi:
- Zarar: nima yo‘qotiladi — pul, shaxsiy ma’lumotlar, mavjudlik, obro‘.
- Ehtimollik: hujum qanchalik oson, ichki kirish kerakmi, tayyor vositalar bormi.
Buni yuqori / o‘rta / past darajalariga keltiring. Har bir tahdid uchun javobni tanlang: kamaytirish (himoya qo‘shish), yo‘q qilish (funksiya yoki ma’lumotni olib tashlash), o‘tkazish (buni hal qiladigan provayderga) yoki qabul qilish (qarorni va uni kim qabul qilganini qayd etish).
5-qadam. Tahdidlarni backlog vazifalariga aylantiring
Hujjatda qolib ketgan tahdidlar modeli hech narsani o‘zgartirmaydi. Yopiladigan har bir tahdid tekshiriladigan qabul mezonlariga ega vazifaga aylanadi:
Vazifa: to‘lov provayderidan kelgan webhook imzosini tekshirish. Tahdid: «provayder → backend» oqimida Tampering/Spoofing. Tayyor, qachonki: yaroqli imzosiz so‘rovlar rad etiladi; ruxsat etilgan vaqt oynasidan eski so‘rovlar rad etiladi; ikkala holat test bilan qoplangan.
Vazifalarni model bilan bog‘lang, xavfsizlik tekshiruvlarini definition of done’ga qo‘shing va arxitektura o‘zgarganda sxemaga qayting — yangi integratsiya, yangi ombor yoki yangi foydalanuvchi roli.
Ko‘p uchraydigan xatolar
- Butun kompaniyani birdaniga modellashtirish. Pul, shaxsiy ma’lumotlar yoki kirish huquqlari bilan ishlaydigan bitta funksiyadan boshlang.
- Buni relizdan keyin qilish. Unda hammasi hech kimda vaqt bo‘lmagan pentest hisobotiga aylanadi.
- Faqat texnik tahdidlarni qidirish. Harakatni inkor etish va biznes-mantiqni suiiste’mol qilish, masalan cheksiz promokodlar, ham shunchalik muhim.
- Mas’ul shaxs yo‘q. Qabul qilingan har bir xavfning egasi va qayta ko‘rib chiqish sanasi bo‘lishi kerak.