Abstraktní řeč o bezpečnosti nikoho nepřesvědčí. Konkrétní příklad ano. Následující rozbor ukazuje modelovou aplikaci, která odpovídá tomu, s čím se při kontrolách setkáváme nejčastěji. Nejde o konkrétního klienta a všechny podrobnosti jsou upravené tak, aby aplikace neodpovídala žádné reálné firmě.
Zadání
Půjčovna motorek v krajském městě. Šest strojů, sezonní provoz, dva lidé na plný úvazek. Majitel si pomocí Lovable postavil rezervační systém, protože ho unavovalo domlouvat termíny po telefonu a přes Messenger.
Aplikace umí:
- zobrazit dostupné stroje a termíny
- přijmout rezervaci včetně údajů zákazníka a fotografie řidičského průkazu
- přijmout online zálohu platební kartou
- poslat potvrzení e-mailem
- zobrazit v administraci přehled rezervací a zákazníků
Běží devět měsíců a prošlo přes ni zhruba 400 rezervací. Funguje.
Co kontrola našla
Nálezy uvádíme podle závažnosti, nikoli podle pořadí, v jakém jsme je našli.
Kritické: přístup k cizím rezervacím
Odkaz na detail rezervace, který zákazník dostane e-mailem, obsahuje pořadové číslo. Změnou čísla v adrese se zobrazí rezervace kohokoli jiného. Včetně jména, telefonu, adresy, data narození a naskenovaného řidičského průkazu.
K využití chyby nejsou potřeba žádné zvláštní nástroje. Stačí jedna rezervace a prohlížeč.
Dopad pro majitele: 400 kompletních identit včetně dokladů dostupných komukoli, kdo si někdy půjčil motorku. Doklady totožnosti patří mezi údaje, jejichž únik má nejvyšší dopad, protože se dají zneužít k dalšímu jednání jménem dotčené osoby.
Kritické: administraci chrání jen neveřejná adresa
Administrace je dostupná na adrese, na kterou nikde nevede odkaz, a přihlášení do ní probíhá jedním sdíleným heslem bez rozlišení uživatelů. Heslo je stejné od spuštění a zná ho i bývalá brigádnice.
Utajení adresy není ochrana. Adresy tohoto typu se objevují v záznamech vyhledávačů, historii prohlížeče a odkazujících hlavičkách.
Dopad pro majitele: kdokoli s touto adresou a heslem vidí a může měnit všechny rezervace i údaje všech zákazníků. Neexistuje způsob, jak zjistit, kdo změnu provedl.
Vysoká: zálohu lze ovlivnit z prohlížeče
Výše zálohy se posílá z prohlížeče do platební brány jako údaj, který aplikace přijímá bez ověření. Uživatel s běžnou znalostí vývojářských nástrojů v prohlížeči může částku před odesláním změnit.
Dopad pro majitele: rezervace se tváří jako zaplacená a stroj se zablokuje, přestože záloha přišla v jiné výši. Rozdíl se zjistí při kontrole účtů, nebo se nezjistí vůbec.
Vysoká: fotografie dokladů v otevřeném úložišti
Nahrané fotografie řidičských průkazů jsou uložené v úložišti, jehož soubory jsou dostupné přes přímý odkaz bez ověření. Odkazy jsou vytvořené předvídatelně podle data a pořadí.
Dopad pro majitele: doklady totožnosti zákazníků jsou mimo jakoukoli kontrolu přístupu.
Střední: žádný záznam událostí
Aplikace nikde nezaznamenává, kdo se přihlásil, kdo změnil rezervaci ani kdo zobrazil zákaznická data.
Dopad pro majitele: kdyby někdo využil kteroukoli z předchozích chyb, majitel se to nedozví a nebude schopen říct, koho se incident týkal. To brání i splnění ohlašovací povinnosti, protože nelze určit rozsah.
Střední: data se nikdy nemažou
Rezervace, osobní údaje i fotografie dokladů zůstávají v systému bez omezení. Není nastavená lhůta ani funkce pro výmaz.
Dopad pro majitele: údaje zákazníka z první sezony tam budou i za deset let. Žádosti o výmaz nelze vyhovět jinak než ručním zásahem do databáze.
Střední: aplikaci nemá kdo převzít
Neexistuje dokumentace, přístupy k hostingu i platební bráně jsou vedené na osobní e-mail majitele a předplatné se platí ze soukromé karty.
Dopad pro majitele: pokud by měl aplikaci převzít někdo jiný nebo pokud by majitel na delší dobu vypadl, firma nemá přístup k systému, na kterém stojí její sezona.
Jak vypadal plán oprav
Pořadí neurčuje jen závažnost, ale také poměr mezi dopadem a náročností. Cílem je odstranit největší riziko co nejdříve a s co nejnižšími náklady.
| Pořadí | Co | Odhad |
|---|---|---|
| 1 | Ověřování oprávnění u detailu rezervace | půl dne |
| 2 | Uzavření přímého přístupu k nahraným souborům | půl dne |
| 3 | Skutečné přihlášení do administrace s účty pro jednotlivé lidi | 1 den |
| 4 | Ověřování výše platby na straně serveru | 1 den |
| 5 | Záznam událostí | 1 den |
| 6 | Lhůta pro mazání a funkce výmazu | 1 až 2 dny |
| 7 | Převod účtů na firmu a základní dokumentace | 1 den |
Celkem zhruba šest až sedm dní práce. První dvě položky, které odstraňují nejzávažnější riziko, zaberou jeden den.
Co si z toho odnést
Aplikace v tomto rozboru není špatná. Devět měsíců spolehlivě odbavovala rezervace a majiteli reálně ušetřila práci. Zároveň v ní bylo sedm nálezů, z nichž dva stačí k úniku kompletních identit včetně dokladů.
To není rozpor. To je přesně ten rozdíl mezi fungující a bezpečnou aplikací. Zvenku vypadají stejně.
