Přeskočit na obsah
Zpět na blog

Rozbor jedné aplikace: co jsme našli v rezervačním systému půjčovny

Modelový rozbor rezervačního systému postaveného pomocí Lovable. Sedm nálezů, jejich dopad na majitele a plán oprav s odhadem náročnosti.

Časté chyby
Ondřej HájekOndřej Hájek · 4 min čtení

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ě.

Sdílet