Fəsil 02 · 4 dəq oxu

Threat modelling

Threat modelling

sistem haqqında dörd suala ardıcıllıqla cavab vermək praktikasıdır:

  1. Nə qururuq?
  2. Nə səhv gedə bilər?
  3. Bununla bağlı nə edəcəyik?
  4. İşi yaxşı gördükmü?

Bu, ən yüksək təsir gücünə malik security fəaliyyətidir, çünki kod hələ mövcud olmazdan əvvəl, design qüsurunu düzəltməyin migration deyil, lövhə silgisi qədər başa gəldiyi vaxtda baş verir.

Nə qururuq?

Diaqramla başlayın. Öz-özlüyündə architecture diaqramı deyil, aşağıdakıları göstərən :

  • External entity-lər: istifadəçilər, third-party service-lər, digər sistemlər.
  • Process-lər: sizin service-ləriniz və komponentləriniz.
  • Data store-lar: database-lər, , queue-lar, file storage.
  • Data flow-lar: nəyin hara hərəkət etdiyini göstərən oxlar.
  • : trust səviyyəsinin dəyişdiyi yerlərdə nöqtəli xətlər. İnternetdən DMZ-yə. Browser-dən API-yə. Service-dən database-ə. A tenant-ından B tenant-ına.

Məsələnin məğzi . Bu boundary-ni keçən hər ox, az etibar edilən tərəfdəki attacker-in daha çox etibar edilən tərəfə təzyiq göstərə biləcəyi yerdir. Threat-lər məhz bu keçidlərdə yaşayır.

Diaqramı bir səhifəyə sığacaq qədər kiçik saxlayın. Sığmırsa, subsystem-i model edin.

Nə səhv gedə bilər? STRIDE

altı threat kateqoriyası üçün mnemonik qısaltmadır. Diaqramdakı hər element, xüsusilə də hər boundary keçidi üçün hansılarının tətbiq olunduğunu soruşun.

ThreatPozduğu xassəNümunə sual
SpoofingAuthenticityKimsə bu istifadəçi və ya service kimi özünü göstərə bilərmi?
TamperingBu flow-dakı və ya store-dakı data aşkarlanmadan dəyişdirilə bilərmi?
RepudiationAccountabilityKimsə bunu etdiyini inkar edə bilərmi, əksini sübut edəcək dəlil olmadan?
Information disclosureKimsə görməməli olduğu data-nı görə bilərmi?
Denial of serviceKimsə bunu qanuni istifadəçilər üçün əlçatmaz edə bilərmi?
Elevation of privilegeKimsə icazəsi olmayan bir şeyi edə bilərmi?

Diaqramı sistemli şəkildə gəzin. "Browser → API" oxu üçün:

  • Spoofing: request başqa istifadəçi adından saxtalaşdırıla bilərmi? (session handling, CSRF)
  • Tampering: request parametrləri ötürülmə zamanı və ya istifadəçi tərəfindən dəyişdirilə bilərmi? (, server-side validation)
  • Information disclosure: response-da istifadəçinin görməli olduğundan artıq məlumat varmı? (over-fetching, həddindən artıq ətraflı error-lar)
  • Denial of service: bir client API-ni tükəndirə bilərmi? (, bahalı endpoint-lər)
  • Elevation: parametrin dəyişdirilməsi admin davranışı verə bilərmi? ()

Nəticə hər biri konkret elementə bağlanmış threat-lər siyahısıdır. Orta ölçülü sistem üçün onlarla threat gözləyin.

Attack tree-lər

Yüksək dəyərli hədəflər üçün attacker-in məqsədindən geriyə doğru işləyir. Root: "başqa müştərinin invoice-larını oxumaq". Uşaq düyünlər: buna nail olmağın yolları. Nəvə düyünlər: bunların hər birinə nail olmağın yolları. Leaf-lər konkret attack-lərdir. Ehtimal və xərclə qeyd edin.

diaqram üzərində qaçıra biləcəyi yolları, məsələn, bir neçə kiçik zəifliyi zəncirləyən attack-ləri üzə çıxarır.

Bununla bağlı nə edəcəyik?

Hər threat dörd cavabdan birini alır:

  • Mitigate. Ehtimalı və ya impact-i azaldan control əlavə edin. Threat-lərin əksəriyyəti bura düşür.
  • Eliminate. Threat-i yaradan feature-i və ya flow-u silin. Az istifadə olunur və çox vaxt ən yaxşı variantdır.
  • Transfer. Sığorta, müqavilələr və ya məsuliyyəti bunu daha yaxşı bacaran provider-ə keçirmək.
  • Accept. Risk-in dözüləbilən olduğuna qərar verin, səbəbini yazın, kimin qəbul etdiyini göstərin və yenidən baxılma tarixini təyin edin.

Sadə balla prioritetləşdirin: ehtimal × impact. Tam kəmiyyət risk analizi nadir hallarda özünü doğruldur; threat siyahısı üzrə ardıcıl ikioxlu sıralama isə doğruldur.

Mitigation-lar Fəsil 1-dəki prinsiplərə uyğun gəlir. Spoofing ilə mitigate olunur. Tampering check-ləri və yazma əməliyyatlarında ilə. Information disclosure və access control ilə. Denial of service və capacity ilə. Elevation hər boundary-də check-ləri ilə.

İşi yaxşı gördükmü?

canlı sənəddir. Sistem dəyişən anda o, səhv olur. Ona yenidən baxın:

  • Yeni əlavə olunanda (yeni integration, yeni tenant tipi, yeni target-i).
  • Yeni data kateqoriyası ortaya çıxanda (ödəniş data-sı, sağlamlıq data-sı, uşaqların data-sı).
  • Incident-dən sonra, model-in nəyi qaçırdığını tapmaq üçün.
  • Təqvim üzrə, ən azı ildə bir dəfə.

Mitigation-ları test edin. " ilə mitigate olunmuş" threat-in işlədiyini sübut edən test-i olmalıdır. Control-ların mövcudluğunu təsdiq edən security test-ləri .

Vərdişə çevirmək

konsultantla birdəfəlik workshop olanda uğursuz olur. O, aşağıdakı hallarda uğur qazanır:

  • Hər design sənədinin, qısa olsa belə, "threat-lər" bölməsi var.
  • Developer-lər otuz dəqiqəyə yüngül keçidini özləri edə bilir.
  • Yüksək riskli olanlara security sahəsində dərin biliyi olan biri review edir.
  • Qəbul edilmiş risk-lərin siyahısı rəhbərliyə görünür.

Məqsəd mükəmməl model deyil. Məqsəd "bunu necə quraq?" soruşmazdan əvvəl refleks olaraq "burada nə səhv gedə bilər?" soruşan komandadır.

Tapşırıqlar

  1. Tanıdığınız bir sistem üçün çəkin. Boundary keçidlərini sayın.
  2. Ən həssas keçidə tətbiq edin. Ən azı altı threat sadalayın.
  3. Hər threat üçün qərar verin: mitigate, eliminate, transfer, yoxsa accept. Bir sətirlik əsaslandırma yazın.