Etika penetračného testovania - Nethemba

BLOG

Etika penetračného testovania

Tento článok som mal v pláne napísať už dlhšiu dobu, konečne sa mi to podarilo – bude o etike pri hľadaní bezpečnostných zraniteľností ako aj o etike jeho komerčnej formy – penetračného testovania.

Etické kritériá na dodávateľa penetračných testov

Bohužiaľ už pár rokov sa stretávam na Slovensku s tým, že:

  • tí, ktorí vedia odhalovať bezpečnostné zraniteľnosti, nevedia ako ich správne a eticky zverejňovať
  • tí, ktorí platia za penetračné testy, nevedia aké etické pravidlá majú vyžadovať od ich dodávateľov

V praxi to znamená to, že na Slovensku celkom často funguje typ výhražného penetračného biznisu, kedy niekto bez akéhokoľvek súhlasu odhalí na Vašom webe nejakú vážnejšiu zraniteľnosť a vzápätí Vám napíše výhražný mail znenia:
„Dobrý deň, na Vašom webe sme odhalili vážnu zraniteľnosť, viac informácií o nej Vám poskytneme, keď si u nás zaplatíte penetračný test…“.

Bohužiaľ málokto z vystrašených klientov si uvedomí, že toto konanie je vyslovene neetické a to z nasledujúcich príčin:

1. Ide o získavanie biznisu prostredníctvom vyhrážania (ak nie vyslovene vydierania).

2. Informácie o uvedených zraniteľnostiach boli získané (ak nie nelegálnym, tak) neetickým spôsobom (bez Vášho súhlasu na vykonanie testu, ktorý to odhalil).

Seriózna IT bezpečnostná spoločnosť, ktorá poskytuje penetračné testy a bezpečnostné audity by:

1. Nikdy nemala využívať vyhrozovací (alebo vydieračský) prístup ku klientovi a to:

  • podmienovať objednanie penetračného testu tým, že Vás informuje o bezpečnostných zraniteľnostiach, ktoré o Vašej webovej aplikácii zistili bez Vášho súhlasu
  • podmienovať objednanie penetračného testu tým, že inak zverejní odhalené
    bezpečnostné zraniteľnosti
  • žiadať priamu kompenzáciu (napríklad finančnú) za zverejnenie odhalenej zraniteľností Vám alebo tretej strane

Vo všetkých troch prípadoch ide (ak nie o nelegálny, tak) neetický prístup.

2. Mala vždy vyžadovať podpísanie vzájomnej zmluvy o vykonaní penetračných testov (zmluva o bezpečnostnom zhodnotení), kde Vaša spoločnosť dáva svoj súhlas vykonávateľovi na spustenie a vykonanie daných penetračných testov v definovanom čase (z daného definovaného IP adresného rozsahu alebo miesta) za jasne zmluvne definovaných podmienok.
3. Nemala mať problém podpísať obojstrannú NDA so zmluvnou pokutou minimálne do výšky ceny samotného penetračného testu.

Seriózna bezpečnostná spoločnosť vykonávajúca penetračné testy by sa nemala pustiť do testovania Vášho webu predtým ako jej na to dáte písomný súhlas (v zmluve o
vykonaní penetračných testov, prípadne inej zmluve), podobne by Vás nemala informovať o
zraniteľnostiach, ktoré odhalila počas testovania vykonaného bez Vášho súhlasu.
Penetračný test – trvalá garancia bezpečnosti Vašej webovej aplikácie (?)

Častým problémom ako klientov, ktorí žiadajú vykonanie penetračných testov, tak prípadne ďalších „bezpečnostných pozorovateľov“ je mylný predpoklad, že jednorázovo vykonaný penetračný test predstavuje trvalú garanciu bezpečnosti otestovanej aplikácie. Bez pravidelných penetračných testov danej aplikácie (čo si v praxi objednáva len skutočné malé množstvo klientov) je technologicky nemožné zo strany vykonávateľa testov akokoľvek garantovať bezpečnosť danej webovej aplikácie.

Rýchlejši penetračný test len demonštruje potenciálne zneužitie a možnosť kompromitovania danej aplikácie behom krátkeho času (obvykle za 3 dni nie je možné stihnúť analyzovať všetky známe druhy zraniteľností vo všetkých formulároch a častiach aplikácie a napísať detailnú výslednú správu).To je cieľom detailného bezpečnostného auditu, ktorý je veľmi detailný a úplný a trvá rádovo až pár týždňov. Oba tieto penetračné testy ale hodnotia bezpečnosť danej webovej aplikácie konkrétnej verzie v konkrétnom čase. Ak sa klient rozhodne neobjednať si pravidelné penetračné testy, tak je nemožné akokoľvek garantovať, že nové verzie danej aplikácie budú automaticky všetky bezpečné.
Dnes som obdržal už tretiu správu behom tohto roka (doposiaľ boli všetky anonymné, v poslednom prípade už chýba len priezvisko) od ľudí, ktorí nám ponúkajú zverejnenie vážnej kritickej zraniteľnosti na webe nášho klienta (= ktorého máme uvedeného v našich referenciách).
Doterajšie dve správy mali výhražný charakter – vyžadovali zaplatenie nejakej sumy za
nezverejnenie danej zraniteľnosti alebo objednanie nejakých „špeciálnych“ testov, ktoré nám dokázal daný anonym poskytnúť. Medzi riadkami sa všetci vyhrážali poškodením dobrého mena a reputácie našej firmy. Posledná správa síce nebola výhražná, ale vyžadovala nejaký súhlas o zverejnení oznámenia o tom, že nám boli poskytnuté nejaké konzultácie (ktoré sme samozrejme nežiadali).
Bohužiaľ musím opäť zdôrazniť, že nikto z uvedených anonymov si neuvedomuje, že väčšina našich klientov si jednoducho neplatí opakované penetračné testy pre danú webovú aplikáciu. Kedže uvedená aplikácia častokrát prechádza výraznými zmenami zo strany klienta (ako funkčnými, tak bezpečnostnými), súčasne sa neustále objavujú nové vektory a druhy zraniteľností, tak jednoducho nedokážeme akokoľvek garantovať, že jej bezpečnosť bude rovnaká ako napríklad pred tromi rokmi, kedy sme daný penetračný test vykonali.

Nikto na svete pri vykonaní jednorázového penetračného testu prirodzene nedokáže garantovať, že aplikácia bude od toho okamihu trvalo bezpečná, obzvlášť ak sa dynamicky vyvíja.

Nech to znie akokoľvek alibisticky, skutočne nedokážeme niesť akúkoľvek zodpovednosť za bezpečnosť a možnosť potenciálneho kompromitovania pre všetky webové aplikácie na ktoré bol v minulosti vykonaný len jednorázový penetračný test.

Preto má v prípade kritických alebo často a rýchlo meniacich sa aplikáciách vždy zmysel pravidelné penetračné testovanie.
Zodpovedné zverejňovanie zraniteľností

Odpoveď na otázku, či je legálne alebo nelegálne zverejňovanie zraniteľností získané hackovaním danej webovej aplikácie/systému bez súhlasu jeho vlastníka (čo je v našich slovenských podmienkách celkom bežné), by som ponechal na našich právnikov.
Rád by som ale hovoril o etickej stránke zodpovedného odhaľovania zraniteľností (tzv.“responsible vulnerability disclosure“).

Vzhľadom na riziko právneho postihu za neoprávnené hackovanie, odporúčam hľadať a zverejňovať zraniteľnosti len na webových stránkach, ktoré jasne definujú pravidlá a podmienky odhaľovania bezpečnostných zraniteľností (tzv. „vulnerability disclosure policy“). Všetky veľké spoločnosti (Google, Microsoft, eBay, PayPal, ..) uvedené podmienky majú verejne dostupné a obvykle sa uvedené pravidlá zhodujú v nasledujúcich bodoch:

  • vlastník zraniteľnej webovej aplikácie by mal byť informovaný predtým ako nálezca danej zraniteľnosti uvedenú zraniteľnosť publikuje na verejných diskusných fórach, či bezpečnostných konferenciách (tzv. 0-day exploity určite nespĺňajú pravidlá zodpovedného odhaľovania zraniteľností)
  • nálezca danej zraniteľností by mal ponechať pár dní alebo týždňov vlastníkovi danej webovej aplikácie na prípadnu opravu ako aj otestovanie bezpečnostnej záplaty
  • nálezca danej zraniteľnosti by mal čo najpresnejšie poskytnúť vlastníkovi danej webovej aplikácie detaily o odhalenom bezpečnostnom probléme – to znamená typ zraniteľnosti, popis konfigurácie, pri ktorej sa dá problém zreprodukovať, prípadne „proof-of-concept“ demonštrácia zneužitia (tzv.exploit) ako aj prípadný popis dopadu potenciálneho zneužitia prípadným útočníkom
  • nálezca danej zraniteľnosti by nemal ovplyvniť chod danej webovej aplikácie (jej zahltenie alebo znefunkčnenie služieb, DoS útoky)
  • nálezca danej zraniteľnosti by nemal žiadat priamu kompenzáciu (napríklad finančnú) od vlastníka danej webovej aplikácie alebo od akýchkoľvek iných osôb (napríklad na čiernom trhu)

V prípade, že daný web neobsahuje pravidlá zverejňovania zraniteľnosti, je skutočne najlepšie a najrozumnejšie o daných zraniteľnostiach jednoducho nehovoriť, nakoľko sa samotný nálezca zraniteľností priamo vystavuje riziku právneho postihu za neoprávnené hackovanie zo strany vlastníka danej webovej aplikácie (takto sa na to pozerajú aj svetoví bezpečnostní experti, nakoľko pri absencii pravidiel zverejňovania zraniteľností neexistuje žiadne právne krytie bezpečnostných výskumníkov v prípade odhaľovania zraniteľností aplikácií vlastnených treťou stranou).
Situácia je lepšia v prípade zraniteľností lokálne inštalovateľného softvéru (napríklad webové prehliadače, pluginy, operačný systém apod), kde je možné prípadnú odhalenú zraniteľnosť poskytnúť za odmenu konkrétnej spoločnosti (napríklad Zero Day Initiative (ZDI) od TippingPointu), ktorá má špeciálne dohody so všetkými veľkými spoločnosťami, ktoré zastupuje a ktoré následne informuje o prípadných získaných bezpečnostných zraniteľnostiach.