Hlavní navigace

Webové aplikace s sebou přinášejí různě závažná rizika

29. 7. 2010
Doba čtení: 4 minuty

Sdílet

Zavraždit, dohnat k sebevraždě anebo při nejmenším traumatizovat skrze webovou aplikaci určitý počet jedinců z nějakého statisticky významného vzorku potenciálních obětí. Pomysleme třeba jen na stále více diskutovaná témata, jako jsou kyberšikana, kybegrooming, kyberstalking, sexting…

…ukrást v e-shopu, co mi nepatří, vyrazit s cestovkou na dovolenou za chvíli zlodějiny beze strachu v rezervačním systému, nahlédnout do výsledků testů, v nichž následně úspěšně projdu, z legrace anebo z nudy sestřelit nějaký ten server, … je to tak snadné – a to nemusíte být ani tzv. ITC odborníkem.

Nebezpečí – o tom to je. Již několikátým dílem seriálu o OWASP si připomínáme „nebezpečí“, „riziko“, pojmy, které se mohou jevit jako samozřejmé; po bližším zkoumání však zjišťujeme, že ne všem zřejmé.

Mezi „nebezpečí“ a „riziko“ dejme rovnítko. Obojí souvisí s pravděpodobností výskytu nějaké negativní situace (dopadem).

OWASP Risk Rating Methodology

Riziko je značně relativní. Co webová aplikace, to jiné spektrum možných dopadů a také jejich pravděpodobnost výskytu. Jak si změřit „riziko“ plynoucí z té či oné slabiny?

OWASP ve své metodice určování míry rizika vychází z obecně uznávaných metodik. Pro bližší studium odkazuje na:

OWASP Risk Rating Methodology se omezuje na stručná doporučení, jakým způsobem je možné jednoduše zjistit, jak velká rizika aplikace přináší.

Použijme obecnou formuli:

RIZIKO = PRAVDĚPODOBNOST X DOPAD

Pro určení závažnosti rizika postupujme ve čtyřech krocích:

  1. krok: Identifikace rizika

  2. krok: Odhad pravděpodobnosti (faktory pro odhad pravděpodobnosti)

  3. krok: Odhad dopadu (faktory pro odhad dopadu)

  4. krok: Určení závažnosti rizika

  1. 1. krok: Identifikace rizika

Zranitelnost může vést k ohrožení útočníkem a to v případě útoku může mít konkrétní business dopad.

  • Zranitelnost: Jedná se o díru v aplikaci, která umožňuje útočníkovi škodit. Může se jednat o různé typy chyb, od těch technických (neověřené vstupy, nedostatečná autentizace aj.) až po ty, které vycházejí ze samotného myšlenkového návrhu (aplikace může sloužit i nechtěným cílům, např. k vyhledávání budoucích obětí sexuálního násilí).

  • Útok: Útokem je myšlena technika (aktivita), kterou útočník používá k využití slabiny (zranitelné části aplikace). Útok není „chyba“.

  • Útočník: Jednotlivec či skupina se schopností manifestovat hrozbu.

  • Dopad: Faktor, který má vliv např. na chod podniku (provozovatele serveru) nebo na uživatele. Může se jednat třeba o ztrátu důvěry, znepřístupnění služby aj.

Riziko můžeme identifikovat buď náhodně anebo plánovaně (systematicky). Mezi plánované identifikace rizik jistě patří penetrační testování. Je vhodné při penetračním testování používat testovací scénář, podobný tomuto:

Tabulka OWASP rizika [PDF]

V tabulce si všimněte sloupečku Ref. Number. Pod ním naleznete referenční číslo k jednotlivým rizikům podle OWASP. Jednotlivě je máte vyjmenované na stránkách OWASP v kapitole Testing Checklist anebo podrobněji v OWASP Testing Guide v3 Table of Contents. Zadáte-li Ref. Number do Googlu, zpravidla první odkaz vede právě k dané kapitole na webu OWAPS.

Je třeba však počítat s tím, že jednotlivé položky v uvedené tabulce mohou podle míry detailu obsahovat desítky dalších subpoložek, což znamená, že jen testování aplikace může zabrat i stovky člověkohodin (podle rozsahu) a oprava nálezů mnohem více. Proto je třeba si předem stanovit, kterým oblastem z bezpečnostního hlediska má smysl se věnovat a kterým nikoliv.

2. krok: Odhad pravděpodobnosti (faktory pro odhad pravděpodobnosti)

Jsme schopni identifikovat riziko. Nyní musíme zjistit, jak moc reálné je jeho možné zneužití. Nemusíme se tím sáhodlouze zaobírat, bude nám stačit, když zjistíme, že pravděpodobnost je nízká, střední či vysoká.

Naším cílem je nyní odhadnout prav­děpodobnost úspěšného útoku ze skupiny možných útočníků.

Všimněte si, že do závorek uvádím čísla od nuly do devíti. Nulou ohodnoťme nulovou závažnost a devítkou maximální závažnost. To nám poslouží pro další výpočty.

Příklady faktorů pro odhad pravděpodobnosti ze strany „útočníků“:

  • Úroveň dovedností

Jak technicky zdatní jsou potenciální útočníci?

  • Žádné technické dovednosti (1)

  • Některé technické dovednosti (3)

  • Pokročilý uživatel (4)

  • Znalost sítí a programování (6)

  • Kvalifikovaný penetrační tester (9)

  • Motiv

Jak moc jsou motivovaní potenciální útočníci?

  • Žádná anebo malá odměna (1)

  • Možná odměna (4)

  • Vysoká odměna (9)

  • Příležitost

Jakou příležitost mají potenciální útočníci zranitelnost odhalit a zneužít a jaké k tomu potřebují prostředky?

  • Potřebují plný přístup anebo potřebují drahé zdroje (0)

  • Potřebují zvláštní přístup nebo potřebné zdroje (4)

  • Potřebují jen některé přístupy nebo potřebné zdroje (7)

  • Nepotřebují přístup a nepotřebují žádné zdroje (9)

  • Množství potenciálních útočníků

Jak velká je skupina potenciálních útočníků?

  • Vývojáři (2)

  • Správci systému (2)

  • Uživatelé intranetu (4)

  • Partneři (5)

  • Ověření uživatelé (6)

  • Anonymní uživatelé internetu (9)

Příklad: Sesbírali jsme celkem 23 bodů. Podělíme počtem zohledňovaných faktorů a získáme průměr: 23/4 = 5,75 bodů.

Příklady faktorů pro odhad pravděpodobnosti ze strany „zranitelnosti“:

  • Snadnost zjištění

Jak snadné je pro potenciální útočníky zjistit chybu v zabezpečení?

  • Prakticky nemožné (1)

  • Stěží (3)

  • Snadno (7)

  • Automatizovanými nástroji (9)

  • Snadnost využití

Jak snadné je pro potenciální útočníky zneužití chyby v zabezpečení?

  • Teoreticky (1)

  • Stěží (3)

  • Snadno (5)

  • Automatizovanými nástroji (9)

  • Povědomost

Jak je známá zranitelnost pro potenciální útočníky?

  • Neznámá (1)

  • Skrytá (4)

  • Zřejmá (6)

  • Veřejně známá (9)

  • Detekce narušení

Jaká je pravděpodobnost, že případné zneužití bude zjištěno?

root_podpora

  • Aktivní detekce v aplikaci (1)

  • Logy a jejich pravidelná kontrola (3)

  • Logy bez kontrol (8)

  • Bez logů (9)

Příklad: Sesbírali jsme celkem 24 bodů. Podělíme počtem zohledňovaných faktorů a získáme průměr: 24/4 = 6 bodů.

Klikněte si pro pokračování článku…

Byl pro vás článek přínosný?

Autor článku

Petr Dušek se věnuje kvalitě a testování SW, inicioval také vznik projektů CAPTCHA Help a Skener webu či překlad OWASP Top 10.