Na tablete, ktorý si komentátori podávajú pri florbalovom ihrisku, sa jednému z nich načítali dáta človeka, ktorý pri ňom sedel predtým. Zostavy, dátumy narodenia hráčov, poznámky k zraneniam. Aplikácia pritom prešla dvoma bezpečnostnými kontrolami a obe napísali, že je všetko v poriadku.
Ak vám aplikáciu alebo web postavila umelá inteligencia, či už s vami, alebo s niekým z tímu, tento text je o tom, aké chyby v takejto aplikácii môžu zostať a ako ich nájsť skôr než niekto iný.
Tri kontroly, jedna aplikácia
Tá aplikácia bola súčasťou testu. Vzali sme reálnu aplikáciu v ostrej prevádzke, komentátorský dashboard pre florbalové prenosy, a podrobili ju trom rôznym vibeauditom, teda bezpečnostným kontrolám aplikácie postavenej pomocou umelej inteligencie. Každá dostala úplne rovnaký kód.
Claude Security. Bezpečnostná kontrola, ktorú k vývojovému nástroju Claude Code dodáva priamo jeho výrobca, spoločnosť Anthropic. Ak staviate v Claude Code, spustíte ju jedným príkazom priamo vo svojom projekte a nemusíte nič dokupovať ani nastavovať. Hľadá typické chyby: diery v prihlasovaní a oprávneniach, nebezpečné zaobchádzanie s dátami alebo známe chyby v hotových súčastiach, ktoré aplikácia používa. Vnútri rozdelí prácu medzi desať súbežných kontrol a ich zistenia potom posúdi trojica hodnotiteľov, ktorá hlasovaním rozhodne, čo sa do správy dostane. Sám Anthropic v dokumentácii píše, že táto kontrola má ručnú revíziu kódu dopĺňať, nie nahrádzať.
Bodyguard. Strážca, ktorého si pre svoje projekty postavila Eliška Vyhnánková, lektorka umelej inteligencie a spoluautorka knihy Jak na sítě. Funguje ako kontrolný zoznam, ktorý si človek spúšťa pri vývoji, a vznikol za jedno popoludnie. Ako presne ho stavala a čo doň dala, opísala vo svojom článku.
Náš audit. Osem oblastí, ktorými prechádzame pri každej aplikácii: prihlasovanie, oprávnenia, zaobchádzanie s dátami, nastavenie servera, zálohy a ďalšie. Kód najprv prejdú automatické nástroje, o každom jednotlivom náleze však rozhoduje vývojár a dohľadáva k nemu konkrétny súbor a riadok. Kontrolujeme aj to, čo v kóde nevidieť, teda kto má prístup k databáze, ako je nastavený hosting alebo čo sa s ochranou stane po bežnej úprave. Trvá to dni, nie minúty.
Claude Security odovzdal správu s tromi nálezmi, Bodyguard s jedenástimi a náš vývojár s dvadsiatimi štyrmi. Všetky tri správy sme potom overili proti skutočnej aplikácii. Celkovo sme potvrdili šestnásť reálnych problémov. Claude Security zachytil tri, Bodyguard šesť a náš vývojár pätnásť.
Kde sa kontroly rozišli:
- Dva nálezy našli všetky tri. Tu panovala zhoda.
- Tri ďalšie našiel Bodyguard aj náš vývojár, Claude Security ich minul.
- Jednu vec naopak našli obe automatické kontroly a náš vývojár nie. Server navonok prezrádza, akú verziu používa, čo útočníkovi uľahčuje prácu. Ani my teda nemáme stopercentné pokrytie.
- Desať nálezov zostalo len nášmu vývojárovi. Patria medzi ne obe veci opísané nižšie a tiež to, že sa aplikácii vôbec nerobia zálohy.
Tá aplikácia pritom nie je napísaná zle a nemá jedinú vážnu zraniteľnosť. Keby bola deravá ako sito, našiel by v nej niečo ktokoľvek.
Dve veci, ktoré našiel len človek
Dáta, ktoré sa nezmažú. Aplikácia si ukladá rozpracovanú prácu priamo do prehliadača, aby fungovala aj pri mizernom signále na štadióne. Táto zásoba však nie je zviazaná s konkrétnym človekom a zostáva uložená celý deň.
Obe automatické kontroly toto miesto preverili a zhodli sa, že problém nenastane, pretože odhlásenie dáta zmaže. Majú pravdu len napoly. Dáta zmiznú, keď človek klikne na tlačidlo Odhlásiť. Keď len zavrie okno prehliadača alebo mu vyprší prihlásenie, zostanú uložené ďalej a načítajú sa tomu, kto sa na rovnakom zariadení prihlási po ňom. Rozdiel medzi tým, čo je v návode, a tým, čo ľudia skutočne robia, nedomyslela ani jedna z kontrol.
Cudzia návšteva s kľúčmi od všetkých dverí. Aplikácia do seba kvôli formuláru na spätnú väzbu načítava kúsok softvéru od niekoho iného. Ten beží vnútri s rovnakými právami ako samotná aplikácia a prihlasovacie údaje používateľov má na dosah. Keby sa niekto dostal k jeho zdroju, dostane sa ku všetkým účtom vrátane administrátorských.
Obe automatické kontroly si všimli, že aplikácia má nastavené pravidlá určujúce, čo smie dovnútra, a pochválili ich. Ani jedna sa nepozrela, komu tieto pravidlá otvárajú dvere.
Prečo to dopadlo práve takto
Rozdiel nevznikol tým, že by jedna kontrola prečítala viac kódu. Vznikol vo chvíli, keď sa rozhodovalo, čo je vlastne problém.
Claude Security si vytipoval takmer tridsať podozrivých miest, teda približne toľko, koľko ich náš vývojár poslal na overenie. Potom ich nechal posúdiť vlastným hlasovaním a dvadsaťšesť z nich sám zamietol. Medzi zamietnutými boli aj preukázateľne reálne problémy.
Z toho vyplýva nepríjemný záver. Správa s tromi nálezmi vyzerá ako dobrá správa, môže však znamenať dve odlišné situácie. Buď je aplikácia v poriadku, alebo kontrola cestou zahodila časť skutočných problémov. Zo samotnej správy to nespoznáte.
Čo s tým, keď kódu nerozumiete
Poznáte to z revízie elektriny. Príde technik, niečo skontroluje, vystaví správu a podpíše ju. Sami tomu rozumieť nemusíte, pretože viete, kto sa pod ňu podpísal a koho sa budete pýtať, keby sa niečo stalo. Pri automatickej kontrole taký človek nie je.
Rozdiel medzi kontrolou, ktorá niečo overila, a kontrolou, ktorá niečo odhadla, spoznáte aj bez znalosti kódu. Stačí položiť tri otázky a sledovať, či sú odpovede konkrétne.
Kde presne to je? Pri každom náleze žiadajte konkrétne miesto v aplikácii. Nález bez miesta je dohad.
Ako ste overili to, čo označujete za v poriadku? Vety ako „overené“ a „bez rizika“ tvrdia niečo o tom, čo v správe nie je. A práve takéto tvrdenia bývajú najmenej spoľahlivé.
Čo ste skontrolovať nemohli? Do mnohých vecí kontrola kódu nevidí: ako je nastavený hosting, kto má prístup do databázy alebo či sa robia zálohy. Kontrola, ktorá túto časť nemá, mlčky predpokladá, že čo nie je v kóde, neexistuje.
Ako kontroly kombinovať
Za pozornosť stojí, čo mali spoločné dve veci, ktoré automatické kontroly minuli. Ani jedna nebola schovaná hlboko v kóde. Obe vyplynuli z toho, ako sa aplikácia používa: jedno zariadenie si podáva viac ľudí a formulár na spätnú väzbu púšťa dovnútra softvér, ktorý nemá pod kontrolou nikto z tímu. Kontrola, ktorá číta iba kód, takéto súvislosti nevidí, pretože v kóde nie sú.
Prakticky z toho vyplývajú tri veci.
Počas stavby si spustite vlastného strážcu. Bodyguard odhalil šesť potvrdených problémov. To je šesť problémov, o ktorých by ste bez neho nemuseli vedieť. Stojí popoludnie práce a je to najlacnejšia kontrola, akú môžete mať.
Skôr než aplikáciu pustíte k reálnym ľuďom, nechajte ju prejsť vibeauditom u niekoho, kto sa najprv spýta, na čo slúži, kto ju používa a čo sa v nej bude ďalej meniť. U niekoho, kto potom pri každom náleze ukáže konkrétne miesto a postaví sa zaň vlastným menom. Len čo aplikácia pracuje s dátami vašich klientov, pacientov alebo zamestnancov, prestáva ísť o kvalitu nástroja a začína ísť o cenu omylu.
Pri každej správe, ktorú dostanete, položte tri otázky uvedené vyššie. Správu, za ktorú niekto ručí, môžete o rok otvoriť a spýtať sa, ako k záveru dospel. Pri správe, ktorú napísal nástroj, sa nemáte koho pýtať.
