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

Je vaše aplikace bezpečná? A víte, koho se případně zeptat?

Tři bezpečnostní kontroly dostaly stejnou aplikaci. Co automatické nástroje přehlédly a co odhalila až kontrola člověkem?

Bezpečnost
Ondřej HájekOndřej Hájek · 6 min čtení

Na tabletu, který si komentátoři předávají u florbalového hřiště, se jednomu z nich načetla data člověka, co u něj seděl předtím. Soupisky, data narození hráčů, poznámky ke zranění. Aplikace přitom prošla dvěma bezpečnostními kontrolami a obě napsaly, že je vše v pořádku.

Pokud vám aplikaci nebo web postavila umělá inteligence, ať už s vámi, nebo s někým z týmu, tento text je o tom, jaké chyby v takové aplikaci mohou zůstat a jak je najít dřív než někdo jiný.

Tři kontroly, jedna aplikace

Ta aplikace byla součástí testu. Vzali jsme reálnou aplikaci v ostrém provozu, komentátorský dashboard pro florbalové přenosy, a podrobili ji třem různým vibeauditům, tedy bezpečnostním kontrolám aplikace postavené pomocí umělé inteligence. Každá dostala úplně stejný kód.

Claude Security. Bezpečnostní kontrola, kterou k vývojovému nástroji Claude Code dodává přímo jeho výrobce, společnost Anthropic. Pokud v Claude Code stavíte, spustíte ji jedním příkazem přímo ve svém projektu a nemusíte nic dokupovat ani nastavovat. Hledá typické chyby: díry v přihlašování a oprávněních, nebezpečné zacházení s daty nebo známé závady v hotových součástkách, které aplikace používá. Uvnitř si rozdělí práci mezi deset souběžných kontrol a jejich zjištění pak posoudí trojice hodnotitelů, která hlasováním rozhodne, co se do zprávy dostane. Sám Anthropic v dokumentaci píše, že tato kontrola má ruční revizi kódu doplňovat, nikoliv nahrazovat.

Bodyguard. Hlídač, kterého si pro své projekty postavila Eliška Vyhnánková, lektorka umělé inteligence a spoluautorka knihy Jak na sítě. Funguje jako kontrolní seznam, který si člověk pouští při vývoji, a vznikl za jedno odpoledne. Jak přesně ho stavěla a co do něj dala, popsala ve svém článku.

Náš audit. Osm okruhů, kterými procházíme každou aplikaci: přihlašování, oprávnění, zacházení s daty, nastavení serveru, zálohy a další. Kód nejprve projedou automatické nástroje, o každém jednotlivém nálezu ale rozhoduje vývojář a dohledává k němu konkrétní soubor a řádek. Kontrolujeme i to, co v kódu vidět není, tedy kdo má přístup k databázi, jak je nastavený hosting nebo co se s ochranou stane po běžné úpravě. Trvá to dny, ne minuty.

Claude Security odevzdal zprávu se třemi nálezy, Bodyguard s jedenácti a náš vývojář s dvaceti čtyřmi. Všechny tři zprávy jsme pak ověřili proti skutečné aplikaci. Celkem jsme potvrdili šestnáct reálných problémů. Claude Security zachytil tři, Bodyguard šest a náš vývojář patnáct.

Kde se kontroly rozešly:

  • Dva nálezy našly všechny tři. Tady panovala shoda.
  • Tři další našel Bodyguard i náš vývojář, Claude Security je minul.
  • Jednu věc naopak našly obě automatické kontroly a náš vývojář ne. Server o sobě navenek prozrazuje, jakou verzi používá, což útočníkovi usnadňuje práci. Ani my tedy nemáme stoprocentní pokrytí.
  • Deset nálezů zůstalo jen na našem vývojáři. Patří mezi ně obě věci popsané níže a také to, že se aplikaci vůbec nedělají zálohy.

Ta aplikace přitom není napsaná špatně a nemá jedinou vážnou zranitelnost. Kdyby byla děravá jako řešeto, našel by v ní něco kdokoliv.

Dvě věci, které našel jen člověk

Data, která se nesmažou. Aplikace si ukládá rozpracovanou práci přímo do prohlížeče, aby fungovala i při mizerném signálu na stadionu. Tato zásoba ale není svázaná s konkrétním člověkem a zůstává uložená celý den.

Obě automatické kontroly toto místo prověřily a shodly se, že problém nenastane, protože odhlášení data smaže. Mají pravdu jen napůl. Data zmizí, když člověk klikne na tlačítko Odhlásit. Když jen zavře okno prohlížeče nebo mu vyprší přihlášení, zůstanou uložená dál a načtou se tomu, kdo se na stejném zařízení přihlásí po něm. Rozdíl mezi tím, co je v návodu, a tím, co lidé skutečně dělají, nedomyslela ani jedna z kontrol.

Cizí návštěva s klíči od všech dveří. Aplikace do sebe kvůli formuláři pro zpětnou vazbu načítá kousek softwaru od někoho jiného. Ten běží uvnitř se stejnými právy jako aplikace sama a přihlašovací údaje uživatelů má na dosah. Kdyby se někdo dostal k jeho zdroji, dostane se ke všem účtům včetně administrátorských.

Obě automatické kontroly si všimly, že aplikace má nastavená pravidla určující, co smí dovnitř, a pochválily je. Ani jedna se nepodívala, komu tato pravidla otevírají dveře.

Proč to dopadlo právě takto

Rozdíl nevznikl tím, že by jedna kontrola přečetla víc kódu. Vznikl ve chvíli, kdy se rozhodovalo, co je vlastně problém.

Claude Security si vytipoval téměř třicet podezřelých míst, tedy zhruba tolik, kolik jich náš vývojář poslal k ověření. Pak je nechal posoudit vlastním hlasováním a šestadvacet z nich sám zamítl. Mezi zamítnutými byly i prokazatelně reálné problémy.

Z toho plyne nepříjemný závěr. Zpráva se třemi nálezy vypadá jako dobrá zpráva, může ale znamenat dvě odlišné situace. Buď je aplikace v pořádku, nebo kontrola cestou zahodila část skutečných problémů. Ze samotné zprávy to nepoznáte.

Co s tím, když kódu nerozumíte

Znáte to z revize elektřiny. Přijde technik, něco zkontroluje, vystaví zprávu a podepíše ji. Sami tomu rozumět nemusíte, protože víte, kdo se pod ni podepsal a koho se budete ptát, kdyby se něco stalo. U automatické kontroly takový člověk není.

Rozdíl mezi kontrolou, která něco ověřila, a kontrolou, která něco odhadla, poznáte i bez znalosti kódu. Stačí položit tři otázky a sledovat, zda jsou odpovědi konkrétní.

Kde přesně to je? U každého nálezu chtějte konkrétní místo v aplikaci. Nález bez místa je dohad.

Jak jste ověřili to, co označujete za v pořádku? Věty jako „ověřeno“ a „bez rizika“ tvrdí něco o tom, co ve zprávě není. A právě taková tvrzení bývají nejméně spolehlivá.

Co jste zkontrolovat nemohli? Do řady věcí kontrola kódu nevidí: jak je nastavený hosting, kdo má přístup do databáze nebo zda se dělají zálohy. Kontrola, která tuto část nemá, mlčky předpokládá, že co není v kódu, neexistuje.

Jak kontroly kombinovat

Za pozornost stojí, co měly společného dvě věci, které automatické kontroly minuly. Ani jedna nebyla schovaná hluboko v kódu. Obě vyplynuly z toho, jak se aplikace používá: jedno zařízení si předává víc lidí a formulář pro zpětnou vazbu pouští dovnitř software, který nemá pod kontrolou nikdo z týmu. Kontrola, která čte pouze kód, takové souvislosti nevidí, protože v kódu nejsou.

Prakticky z toho plynou tři věci.

Během stavby si pusťte vlastního hlídače. Bodyguard odhalil šest potvrzených problémů. To je šest problémů, o kterých byste bez něj nemuseli vědět. Stojí odpoledne práce a je to nejlevnější kontrola, jakou můžete mít.

Než aplikaci pustíte k reálným lidem, nechte ji projít vibeauditem u někoho, kdo se nejdřív zeptá, k čemu slouží, kdo ji používá a co se v ní bude dál měnit. U někoho, kdo pak u každého nálezu ukáže konkrétní místo a postaví se za něj svým jménem. Jakmile aplikace pracuje s daty vašich klientů, pacientů nebo zaměstnanců, přestává jít o kvalitu nástroje a začíná jít o cenu omylu.

U každé zprávy, kterou dostanete, položte tři otázky uvedené výše. Zprávu, za kterou někdo ručí, můžete za rok otevřít a zeptat se, jak k závěru došel. U zprávy, kterou napsal nástroj, se ptát nemáte koho.

Sdílet