
Bezpečnosť treba riešiť počas celého
životného cyklu vývoja softvéru. To znamená, že je potrebné začať už vo fáze analýzy, návrhu a pokračovať aj pri vlastnom programovaní. Spoliehať sa na penetračný test alebo audit zdrojového kódu v záverečných fázach pred nasadením do produkčného prostredia je nezmysel.
Microsoft používa na hodnotenie
rizík pri vývoji webových aplikácií metodiku DREAD, do slovenčiny by sa jej názov dal preložiť asi ako HRÔZA. Ponechávame však na posúdenie láskavého čitateľa, nakoľko ju tento názov vystihuje. V podstate ide o analýzu rizík, založenú na expertnom odhade pravdepodobnosti hrozby a veľkosti potenciálnej škody.
Vlastná analýza prebieha v nasledujúcich krokoch:
*
Identifikácia aktív- cieľom je identifikovať hodnotné aktíva (dáta), ktoré treba chrániť pred narušením dôvernosti, integrity a dostupnosti.
*
Opis architektúry - cieľom je opísať, ako aplikácia funguje, a znázorniť vo forme diagramu vzťahy medzi jej jednotlivými časťami.
*
Dekompozícia aplikácie - cieľom je opísať, ako je riešená autentifikácia, autorizácie, session management, auditing atď.
*
Identifikácia hrozieb - na identifikáciu hrozieb vo vzťahu k aktívam slúži model STRIDE.
*
Dokumentácia hrozieb - opis hrozby, spôsob jej zneužitia a vhodné opatrenia
*
Ohodnotenie hrozieb - cieľom je vykonať hodnotenie hrozieb podľa metodiky DREAD.
Ako aktíva v tejto metodike vystupujú samotná aplikácia, aplikačný, webový a databázový server a, samozrejme, operačný systém a sieťová infraštruktúra.
Čo sa týka hrozieb, Microsoft ich rozdeľuje do šiestich kategórií podľa cieľa útoku. Tento spôsob delenia označuje ako STRIDE. Názov je vytvorený z počiatočných písmen jednotlivých cieľov útoku, ktorými sú:
* Spoofing
* Tampering
* Repudiation
* Information disclosure
* Denial of service
* Elevetion of privilege
V článku
Kategorizácia hrozieb si môžete prečítať, čo je to hrozba a aké je základné delenie hrozieb. Na určenie pravdepodobnosti hrozby a potenciálnej škody nám Microsoft predkladá súbor nasledujúcich piatich otázok.
*
Damage potential (potenciálna škoda) - Aká veľká by bola potenciálna škoda, keby bola zraniteľnosť zneužitá?
*
Reproducibility (reprodukovateľnosť) - Je možné útok vykonať kedykoľvek alebo musia byť splnené určité podmienky?
*
Exploitability (zneužiteľnosť) - Aké sú požiadavky na úroveň vedomostí útočníka, aby mohol byť útok vykonaný?
*
Affected users (zasiahnutí používatelia) - Koľko percent používateľov bude hrozbou poznačených?
*
Discoverability (odhaliteľnosť) - Ako ľahké je v systéme odhaliť prítomnosť zraniteľnosti?
Všimnite si, že počiatočné písmená anglických termínov opäť tvoria názov tejto metodiky. Pri každej hrozbe by sme si mali položiť uvedených päť otázok a odpovedať, či ide o nízke (1), stredné (2) alebo vysoké (3) ohrozenie. Hodnotu jednotlivých odpovedí potom spočítame a získame výslednú hodnotu, ktorá vyjadruje pravdepodobnosť danej hrozby.
Vzhľadom na to, že ide o súbor 5 otázok a 3 možných odpovedí, môže pravdepodobnosť hrozby nadobúdať iba hodnoty z intervalu <5,15>. Hodnota 5 vyjde, ak na všetkých 5 otázok odpovieme, že pravdepodobnosť ohrozenia je nízka 5 * 1 = 5. Hodnota 15 vyjde, ak na všetkých 5 otázok odpovieme, že pravdepodobnosť ohrozenia je vysoká 5 * 3 = 15.
Hoci táto metodika vysvetľuje, ako určiť pravdepodobnosť hrozby, bez toho, aby uviedla, ako určiť veľkosť potenciálnej škody, hovorí o nízkom <5,7>, strednom <8,11> a vysokom <12,15> riziku. Microsoft používateľa tejto metodiky trochu pletie, keď píše, že otázky slúžia na stanovenie pravdepodobnosti hrozby. To však nie je podstatné, keď sa totiž hlbšie zamyslíme nad znením uvedených piatich otázok, zistíme, že prvá a štvrtá otázka v poradí nemá s určením pravdepodobnosti hrozby vôbec nič spoločné, že ide, naopak, o stanovenie hodnoty dosahu. Tým sa vysvetľuje, prečo možno po spočítaní hodnôt jednotlivých odpovedí hovoriť o riziku.
Dovoľujem si tvrdiť, že keby riziká boli riadené v priebehu celého životného cyklu vývoja softvéru, je jedno, či za použitia tejto alebo inej metodiky, výrazne by sa znížil aj počet útokov využívajúcich známe triviálne chyby, ako sú napríklad neošetrené vstupy umožňujúce útoky typu XSS, SQL injection a pod.
Autor
Rastislav Turek je nezávislý bezpečnostný konzultant a člen organizácie OWASP. Prispieva na známy blog o bezpečnosti blog.synopsi.com.
Zdroj: Synopsi blog