GH GambleHub

Threat Modeling და რისკების კონტროლი

1) პრინციპები

1. Architectural First. ჩვენ ვიწყებთ კონტექსტებს, ნდობის საზღვრებს და მონაცემთა ნაკადს.
2. Risk ≈ Likelihood × Impact. ჩვენ ვზომავთ, მაგრამ არ ვგრძნობთ.
3. Defense in Depth. თითოეულ ფენაზე აკონტროლებდნენ: კოდი - ოქმი - პლატფორმა - ხალხი.
4. Shift Left/Right. ადრეული კარიბჭეები PR + -ში მონიტორინგი და რეაქცია გაყიდვაში.
5. Privacy by Design. ჩვენ მოდელირებთ არა მხოლოდ უსაფრთხოების საფრთხეებს, არამედ კონფიდენციალურობის რისკებს.
6. Automate Where Possible. პოლიტიკოსები, როგორიცაა კოდი, მანქანის მრჩევლები, „წითელი ხაზები“.


2) ინვენტარიზაცია: აქტივები, საგნები, ნდობის საზღვრები

აქტივები: მონაცემები (PII, ფინანსები, საიდუმლოებები), გამოთვლითი რესურსები, გასაღებები, წვდომა, ბიზნეს პროცესები.
საგნები: მომხმარებლები, სერვისები, ადმირალები, პარტნიორები, გარე პროვაიდერები.
ნდობის საზღვრები: მომხმარებლები - ფრონტი, ფრონტი - API კარიბჭე, სერვისები - BD/ქეში/ხაზები, რეგიონები/ღრუბლები.
თავდასხმის ზედაპირი: შესასვლელი წერტილები (API, ვებჰუკი, UI, ქსელები, CI/CD, supply chain).

DFD (მაგალითი, Mermaid):
mermaid flowchart LR
U[Пользователь] -- TLS --> WAF[WAF/CDN]
WAF --> GW[API Gateway]
GW --> Svc[Service A]
Svc --> DB[(Postgres)]
Svc --> MQ[[Kafka]]
MQ --> SvcB[Service B]
subgraph Trust Boundary
GW; Svc; SvcB end

3) მუქარის ჩარჩოები

STRIDE (безопасность): Spoofing, Tampering, Repudiation, Information Disclosure, Denial of Service, Elevation of Privilege.
LINDDUN (приватность): Linkability, Identifiability, Non-repudiation, Detectability, Disclosure, Unawareness, Non-compliance.
PASTA (პროცესი): ბიზნეს მიზნებიდან და მუქარის მსახიობიდან, ტექნიკური დეტალები და ტესტის სცენარები.

ცხრილი (ფრაგმენტი, STRIDE × კომპონენტები):
კომპონენტიSTRIDEმაკონტროლებელი
API GatewaymTLS/OIDC, WAF, rate-limit, audit, HSTS
KafkaACL, ხელმოწერილი მოვლენები, კვოტები, DLQ
PostgresTLS, RLS, KMS, სავალდებულო მიგრაცია

4) რისკების შეფასება

DREAD/OWASP Risk Rating ან CVSS დაუცველობებისთვის.
ალბათობა (L): თავდასხმის მოტივი/შესაძლებლობები, სირთულე, ზედაპირის ექსპოზიცია.
გავლენა (I): ფინანსები, იურისკი, მარტივი, PD გაჟონვა.
რისკი (R = L × I) არის პრიორიტეტი და ტირაჟი: Avoid/Reduce/Transfer/Accept.

მატრიცა (მაგალითი):

Impact
Low Med High Critical
Lik Low  L  L  M   H
Med  L  M  H   H
High M  H  High  Crit

რისკების რეესტრი (მინიმალური ველები): 'id, სცენარი, STRIDE, აქტივი, L, I, R, მეპატრონეები, კონტროლირებადი, სტატუსი, გადასინჯვის თარიღი'.


5) კონტროლი: Prevent/Detect/Respond

პრევენცია (პრევენცია):
  • ავთენტიფიკაცია/ავტორიზაცია: OIDC/OAuth2, PoLP, RBAC/ABAC, მოკლემეტრაჟიანი მომსახურება.
  • საიდუმლოებები/გასაღებები: KMS/HSM, როტაცია, პრინციპი „არ იცოდეთ“, FPE/ველების დაშიფვრა.
  • უსაფრთხო ოქმები: TLS1. 2 +, mTLS, ვებჰუკების ხელმოწერები, იდემპოტენტობა და ანტი-რეპლეი.
  • სავალდებულო/სანიტარული: სქემები (JSON Schema/Proto), ლიმიტები, ნორმალიზაცია.
  • იზოლაცია: ქსელის პოლიტიკა, სეგმენტი, sandbox, namespaces, bulkheads.
Detect (აღმოჩენა):
  • აუდიტის ლოგოები (არარეგულირებული), კორელაცია SIEM- ში, ალერტები ანომალიებში.
  • ხელმოწერისა და მთლიანობის მონიტორინგი (მძიმე არტეფაქტების ექსპორტი, ატესტაცია).
  • Honeytokens/კანარის გაჟონვის ადრეული დეტალებისთვის.
რეპონდი (რეაქცია):
  • Runbook IR: კლასიფიკაცია, იზოლაცია, გასაღებების მიმოხილვა, სიგნალიზაცია, წინსვლა.
  • ავტომატური დარტყმა/feature-flag, ნიშნების „შავი სიები“.
  • მომხმარებელთა/რეგულატორთა შეტყობინებები PD- სთან ინციდენტებთან დაკავშირებით.

6) SDL და უსაფრთხოების კარიბჭეები

იდეაში/დიზაინში: ასეთი მოდელი (RFC/ADR), კონტროლის შემოწმების სია.
განვითარების პროცესში: SAST/secret-scan, დამოკიდებული სკანერები (SCA), დამოკიდებულების პოლიტიკა.
ასამბლეა: SBOM, არტეფაქტების ხელმოწერა, დაუცველობის პოლიტიკა (CVSS ბარიერები).
უკანა პლანზე: OPA/Kyverno - IaC/მანიფესტის პოლიტიკა (Context, ქსელის პოლიტიკა, საიდუმლოების გაჟონვა).
გაყიდვაში: IDS/WAF, ანომალიური გამოცემა, საკანალიზაციო შემოწმება, ქაოსის უსაფრთხოება (მაგალითად, ამოწურული სერთიფიკატი).

მაგალითი gate (პოლიტიკა as Code, ფსევდო-Rego):
rego package policy.cicd deny[msg] {
some v input.sbom.vulns[v].cvss >= 7.0 msg:= sprintf("High vuln blocked: %s %s", [v.package, v.id])
}
deny[msg] {
input.k8s.pod.spec.securityContext.runAsRoot == true msg:= "RunAsRoot forbidden"
}

7) Supply Chain და არტეფაქტების ნდობა

SBOM თითოეული გამოსახულების/პაკეტისთვის; დამოკიდებულების განახლებები - ბოტა/პოლიტიკის საშუალებით.
SLSA/Provenance: რეპროდუცირებული შეკრებები, ხელმოწერები, ატესტაციები.
კონტეინერები: მინიმალური სურათები, rootless, drop capabilities, read-only FS.
IaC სკანები: Terraform/Helm - დაშიფვრის, ღია პორტების, ქსელის წესების პოლიტიკა.


8) კონფიდენციალურობა და შესაბამისობა

LINDDUN კონფიდენციალურობის საფრთხეების რუკა, მონაცემთა მინიმიზაცია, ფსევდონიმიზაცია/ანონიმიზაცია.
შენახვის პოლიტიკა: TTL/retenshne, „მოცილების უფლება“, PD- ზე წვდომის აუდიტი.
ლოკალიზაცია: გეო-შეზღუდვები, „მონაცემები რჩება რეგიონში“.
გამჭვირვალობა: დამუშავების, შეტყობინებების და თანხმობის ჟურნალები.


9) ღრუბლები და პერიმეტრები

Zero Trust: თითოეული მოთხოვნის ავთენტიფიკაცია, mTLS/OPA სერვისებს შორის.
სეგმენტი: VPC/ქვესახეები/SG, პირადი ენდოინტები, egress კონტროლი.
გასაღებები/საიდუმლოებები: KMS, rotation, მოკლე კრედიტები CI- ში (OIDC ფედერაცია).
ნაკრძალი/DR: დაშიფრული ზურგჩანთები, გასაღებები ცალკე, აღდგენის რეპეტიციები.


10) წითელი/მეწამული გუნდები და tabletop სავარჯიშოები

Red Team: საფრთხეების ჰიპოთეზის შემოწმება, სოციალური ინჟინერია, ჯაჭვების ექსპლუატაცია.
Purple Team: დეტალების/ალერტების ერთობლივი გამართვა, IR playbook- ის გაუმჯობესება.
Tabletop: სკრიპტები „ამოიწურა სერთიფიკატი“, „გასაღების გაჟონვა“, „supply-chain კომპრომისი“. შედეგი - განახლებული კონტროლი და მეტრიკა.


11) სიმწიფის მეტრიკა და კონტროლი

Coverage: სერვისების%, რომელთაც აქვთ შესაბამისი მოდელი და DFD.
MTTD/MTTR უსაფრთხოება, მაკონტროლებლების მიერ დაჭერილი ინციდენტების წილი.
Policy pass-rate CI- ში, კრიტიკულად დაუცველების დახურვის დრო.
კონფიდენციალურობა: TTL/ILM დანაყოფების%, ხელმისაწვდომობის წილი დასაბუთებით.
აუდიტი: რისკების რეგისტრაციის რეგულირება (კვარტალურად).


12) არტეფაქტების შაბლონები

12. 1 რისკის ბარათი (მაგალითი)


Risk ID: SEC-API-012
Сценарий: SSRF через изображение в профиле
STRIDE: Tampering/Info Disclosure
Актив: API / файловый прокси
Likelihood: High  Impact: High  Risk: Critical
Контроли: denylist схем, egress-прокси, URL-fetcher в изолированном рантайме,
DNS-resolv только через прокси, время/размер-лимиты, allowlist.
Владелец: team-accounts  Статус: Reduce (в работе)
Дата пересмотра: 2025-12-01

12. 2 დიზაინის შემოწმების სია

იდენტიფიცირებულია აქტივები და PII? აღინიშნება ნდობის საზღვრები?
DFD/მონაცემთა კონტურები შედგენილია და უკავშირდება ADR- ს?
STRIDE/LINDDUN გადის თითოეულ DFD ისარზე?
არჩეულია რისკის ტრიტინგი; არსებობს მფლობელები/ვადები/DoD?
პოლიტიკოსები, როგორც კოდი დაემატა (OPA/Kyverno/CI კარიბჭე)?
განახლებულია მონიტორინგის გეგმა/ალერტები და IR-runbook?
პირადი: მინიმიზაცია, დაშიფვრა, TTL/ჭრა, ლოკალიზაცია?

12. 3 ვებჰუკების პოლიტიკა (ფსევდო კოდი)

python def verify_webhook(req, keys):
ts = int(req.h["X-Timestamp"])
if abs(now_utc()-ts) > 300: return 401 if not hmac_ok(req.body, ts, keys.active_or_prev(), req.h["X-Signature"]):
return 401 if replay_cache.seen(req.h["X-Event-ID"]): return 200
PoLP: в обработчике — только нужные скоупы handle(json.loads(req.body))
replay_cache.mark(req.h["X-Event-ID"])
return 200

13) ანტი შაბლონები

ეს მოდელი „შოუსთვის“ DFD/ინვარიანტების გარეშე.
სუპერ პერიმეტრი სერვისის შიდა ავთენტიფიკაციის გარეშე.
ხანგრძლივი საიდუმლოებები გარემოში/რეპოში.
პოლიტიკოსები, რომლებიც არ არიან დანერგილი, როგორც კოდი, სახელმძღვანელო „დავიწყებულია“.
Logs PD- ით შენიღბვის გარეშე და ჭრის გარეშე/TTL.
Supply chain- ის უგულებელყოფა (არ არსებობს SBOM/ხელმოწერები/სკანერები).
რისკის მიღება (Accept) მფლობელის გარეშე და გადასინჯვის თარიღი.


14) ინტეგრაცია პროცესებში

RFC/ADR: თითოეული მნიშვნელოვანი გადაწყვეტილება შეიცავს „საფრთხეების და კონტროლის“ განყოფილებას.
Docs-as-Code: threat მოდელი, DFD, რისკის რეესტრი ვერსიაში კოდის გვერდით.
Release gates: გამოშვება იბლოკება SAST/SCA/SBOM პოლიტიკოსის წარუმატებლობის ან მაღალი კრიტიკის არარსებობის კონტროლების დროს.
ტრენინგი: playbuks დეველოპერებისთვის (საიდუმლოებები, ხელმოწერები, PoLP), რეგულარული tabletop.


დასკვნა

Threat Modeling არის რისკის მართვის საინჟინრო პრაქტიკა და არა ერთჯერადი დოკუმენტი. დაადგინეთ აქტივები და ნდობის საზღვრები, გამოიყენეთ STRIDE/LINDDUN, გაზომეთ რისკი, დააფიქსირეთ იგი რეესტრში და გააცნობიერეთ, როგორც კოდი, მათი ინტეგრირება CI/CD და ექსპლუატაციაში. სიმწიფის მეტრიკებით და რეგულარული გადასინჯვით, თქვენ უსაფრთხოებას გადააქცევთ პროგნოზირებულ არქიტექტურულ უნარზე - გასაგები ფასით, ეფექტით და სიჩქარით.

Contact

დაგვიკავშირდით

დაგვიკავშირდით ნებისმიერი კითხვის ან მხარდაჭერისთვის.ჩვენ ყოველთვის მზად ვართ დაგეხმაროთ!

ინტეგრაციის დაწყება

Email — სავალდებულოა. Telegram ან WhatsApp — სურვილისამებრ.

თქვენი სახელი არასავალდებულო
Email არასავალდებულო
თემა არასავალდებულო
შეტყობინება არასავალდებულო
Telegram არასავალდებულო
@
თუ მიუთითებთ Telegram-ს — ვუპასუხებთ იქაც, დამატებით Email-ზე.
WhatsApp არასავალდებულო
ფორმატი: ქვეყნის კოდი და ნომერი (მაგალითად, +995XXXXXXXXX).

ღილაკზე დაჭერით თქვენ ეთანხმებით თქვენი მონაცემების დამუშავებას.