Press "Enter" to skip to content

Skenování webových aplikací s nebo bez modelování hrozeb

Modelování hrozeb je efektivní způsob, jak identifikovat klíčové oblasti rizika a prioritizovat aktivity v bezpečnostním testování. Pro rychlé provedení modelování hrozeb doporučuji následující postup:

Určete kontext a hranice systému

  • Co testujete?
    • Definujte, zda testujete celou webovou aplikaci, konkrétní modul, nebo, správu aplikace atd.
  • Jaké jsou hranice systému?
    • Určete vstupy a výstupy systému (např. formuláře, externí integrace).
  • Kdo jsou aktéři?
    • Zvažte, kdo může aplikaci používat (legitimní uživatelé, administrátoři, útočníci)

Identifikujte aktiva a jejich hodnotu

  • Co chráníte?
    • Identifikujte klíčová aktiva, která má aplikace chránit (např. osobní údaje, finanční informace, duševní vlastnictví).
  • Jaká je hodnota těchto aktiv?
    • Prioritizujte aktiva podle jejich důležitosti – např. údaje chráněné zákonem (GDPR) budou prioritní.

Identifikujte potenciální hrozby

  • Použijte rámec STRIDE:
    • Spoofing (falešná identita): Riziko zneužití autentizace nebo podvržení identity.
    • Tampering (manipulace): Možnost úprav dat nebo požadavků.
    • Repudiation (popření): Riziko, že akce nebudou auditovatelné.
    • Information Disclosure (únik informací): Riziko zveřejnění citlivých dat.
    • Denial of Service (DoS): Možnost přetížení nebo zablokování systému.
    • Elevation of Privilege (eskalace práv): Zneužití oprávnění ke zvýšení přístupu.

Identifikujte možné útočníky a vektory útoku

  • Kdo může být útočník?
    • Interní (neloajální zaměstnanci) nebo externí (cracker, konkurenční firmy).
  • Jak může útok probíhat?
    • Příklady vektorů:
      • Manipulace s URL (path traversal).
      • Vstupní pole (SQL Injection, XSS).
      • Síťové útoky (MITM, DoS).
      • Atd.

Vytvořte diagram datových toků

  • Jednoduchý diagram:
    • Ukažte, jak data proudí systémem (např. od uživatele přes server k databázi).
  • Zvažte slabiny na jednotlivých místech:
    • Kde mohou být zranitelnosti? (např. nešifrované přenosy, špatně nastavené API).
  • Atd.

Ohodnoťte hrozby podle priorit

  • Použijte metody jako DREAD:
    • Damage (poškození): Jak velký dopad bude mít útok?
    • Reproducibility (opakování): Jak snadné je útok zopakovat?
    • Exploitability (exploatace): Jak snadné je zneužití?
    • Affected Users (uživatelé): Kolik lidí bude ovlivněno?
    • Discoverability (objevení): Jak snadno je zranitelnost odhalitelná?

Zaměřte se na klíčové oblasti testování

  • Na základě výstupů modelování se soustřeďte na:
    • Největší rizika (hrozby s vysokou prioritou).
    • Kritické oblasti, kde jsou citlivá aktiva nebo často zranitelné body (např. autentizace, vstupní pole, API).
    • Realistické scénáře útoků (např. co může útočník skutečně provést).

Tento přístup vám pomůže rychle identifikovat a prioritizovat rizika, což může zajistit efektivnější a cílenější bezpečnostní testování.


Bez modelování hrozeb

Modelování hrozeb není vždy možné nebo efektivní, zejména pokud:

  • Není dostupná kvalitní dokumentace aplikace nebo systému.
  • Komunikace se správcem systému je omezená nebo nejasná.
  • Je třeba provádět rychlé testy, kde není čas na detailní analýzu.
  • Prioritizace není nutná, protože cílem je prověřit široké spektrum zranitelností bez ohledu na kontext.

V takových případech je praktické použít strukturální přístup založený na osvědčených metodikách a známých vektorech útoku, například prostřednictvím OWASP Web Security Testing Guide (WSTG) nebo jiných rámců. Tento přístup umožňuje efektivní testování i bez předchozího modelování hrozeb.

Výhody tohoto přístupu

  • Rychlý start: Testy můžete zahájit bez podrobné analýzy systému.
  • Standardizace: Postupujete podle osvědčených rámců, což zajišťuje kvalitní pokrytí.
  • Snadná iterace: Lze rychle upravit zaměření podle výsledků.

Nevýhody tohoto přístupu

  • Méně cílené: Hrozí, že přehlédnete rizika specifická pro danou aplikaci.
  • Zvýšené zatížení systému: Široké skenování může být náročné na výkon.
  • Chybí prioritizace: Testujete vše bez zohlednění skutečné důležitosti hrozeb.

Kdy tento přístup použít?

  • Když není čas nebo podmínky pro modelování hrozeb.
  • Když je aplikace obecného charakteru a hrozby lze dobře pokrýt známými metodikami.
  • Jako základní vrstva testování, kterou lze později doplnit detailnější analýzou.

Tento přístup, kombinovaný například s OWASP WSTG nebo OWASP Top 10 (S OWASP Top 10 opatrně!), vám umožní efektivně testovat bezpečnost i v situacích s omezenými informacemi.


Příklady postupu bez modelování hrozeb

Využití osvědčených metodik (např. OWASP WSTG)

OWASP WSTG poskytuje strukturovaný přehled kategorií testů, které můžete provádět. Mezi nejdůležitější oblasti patří:

  • Autentizace:
    • Testování slabých hesel, bruteforce útoky, přihlašovací mechanizmy.
    • Kontrola bezpečnosti session cookies (např. nastavení HttpOnly, Secure).
  • Autorizace:
    • Horizontální eskalace práv (přístup k datům jiných uživatelů).
    • Vertikální eskalace práv (získání administrátorských oprávnění).
  • Vstupy a výstupy:
    • Testování na SQL Injection, XSS, Command Injection.
    • Fuzzing vstupních polí (neočekávané nebo škodlivé hodnoty).
  • Konfigurace serveru a infrastruktury:
    • Testy na chyby v HTTP hlavičkách (např. X-Content-Type-Options, CORS).
    • Kontrola SSL/TLS certifikátů.
  • API:
    • Testování bezpečnosti REST a SOAP API, neautorizované přístupy, nesprávné metody HTTP (např. DELETE).
  • Další zranitelnosti:
    • CSRF, Clickjacking, File Upload Vulnerabilities.
  • Atd.

Využití známých seznamů zranitelností (např. OWASP Top 10)

Pokud neprovádíte modelování hrozeb, je dobré zaměřit se na známé zranitelnosti, například:

  • OWASP Top Ten (2021):
    • A01:2021 – Broken Access Control
    • A02:2021 – Cryptographic Failures
    • A03:2021 – Injection
    • A04:2021 – Insecure Design
    • A05:2021 – Security Misconfiguration
    • A06:2021 – Vulnerable and Outdated Components
    • A07:2021 – Identification and Authentication Failures
    • A08:2021 – Software and Data Integrity Failures
    • A09:2021 – Security Logging and Monitoring Failures
    • A10:2021 – Server-Side Request Forgery (SSRF)
    • !!! Myslet na to, že OWASP Top 10 je jen statistická záležitost – nemusí být relevantní pro danou aplikaci. Existují i starší verze OWASP Top 10, existuje rozhodně mnohem mnohem více zranitelností, než jen 10.

Použití nástrojů pro široké pokrytí

Když nevíte, na co přesně se zaměřit, použijte skenovací nástroje, které pokryjí široké spektrum zranitelností:

  • Automatizované skenery: Burp Suite, OWASP ZAP, Acunetix.
  • Fuzzery: ffuf, dirb, wfuzz (pro hledání skrytých cest a vstupů).
  • Analyzátory kódu (pokud je přístupný): SonarQube, Checkmarx.

Zaměření na standardní vektory útoku

Když je dokumentace nedostatečná, zaměřte se na typické slabiny webových aplikací:

  • Vstupní body:
    • Formuláře, vyhledávání, uživatelské profily, upload soubory.
  • Session a autentizace:
    • Session hijacking, slabé session ID, nechráněné přihlašování.
  • API:
    • Endpointy na základě běžných vzorů URL, např. /api/v1/.

Využití výsledků k iteraci

I když jste nezačali modelováním hrozeb, průběh testování vám může pomoci odhalit, které oblasti jsou zranitelnější. Na základě těchto výsledků lze přidat více cílené testy.