CANON_072026 CANON_072026 CANON_072026

(Ne)bezpečnosť umelej inteligencie / 5. časť

0

Hneď v úvode si pripomeňme, že veľké jazykové modely (LLM) a nástroje vibecoding nepopierateľne transformovali softvérové inžinierstvo a vývoj používateľských rozhraní (UI). Medzi najprogresívnejšie nástroje v tejto oblasti určite patrí Vercel v0 – generatívny systém poháňaný AI, ktorý umožňuje vývojárom vytvárať frontendové (React, Tailwind, shadcn) komponenty na základe textových inštrukcií (promptov). Schopnosť v0 premeniť textový prompt na plnofunkčné UI prináša nepopierateľnú efektivitu, dramaticky skracuje čas potrebný na prototypovanie a nasadenie aplikácií, ale s narastajúcou adopciou tohto typu vývoja vznikajú otázky týkajúce sa bezpečnosti vygenerovaného zdrojového kódu.

Samsung_042026T Advertisement

Platforma Vercel v0

v0 funguje na princípe iteratívneho generovania kódu. Používateľ zadá opis požadovaného rozhrania a v0 vygeneruje produkčne pripravený kód s využitím knižnice React. Systém optimalizuje kód na okamžité nasadenie, pričom využíva framework Tailwind CSS na zabezpečenie responzivity a vizuálnej konzistencie. Hlavný prínos je abstrakcia ručného písania programového kódu.

Z pohľadu softvérovej architektúry v0 nevytvára kód s využitím striktných syntaktických a bezpečnostných pravidiel, ale štatistickej pravdepodobnosti výskytu textových reťazcov v trénovacích údajoch. Jednoducho kompiluje = spája reťazce, ktoré boli vstupom pri učení jeho LLM. Práve to je dôvod možnej infiltrácie bezpečnostných problémov. Model generuje kód, ktorého výstup spĺňa vizuálne požiadavky vývojára, no pretože nebol napísaný príkaz po príkaze (riadok po riadku), môže obsahovať skryté logické chyby alebo bezpečnostné zraniteľnosti. Ide o tzv. halucinácie = prevzatie nekorektných vzorov pri trénovaní LLM.

Efektivita verzus bezpečnosť

Hlavné riziko pri integrácii kódu z v0 do produkčných systémov je kognitívne skreslenie vývojárov. Keďže vygenerované komponenty vyzerajú profesionálne a vizuálne fungujú presne podľa očakávaní, programátori majú tendenciu vynechať dôkladnú revíziu kódu (napr. pomocou spomínaných nástrojov Vibe-Eval či Code Review). AI generovanie programového kódu však obchádza tradičné mechanizmy statickej analýzy, pokiaľ nie sú priamo implementované v konkrétnom generátore alebo v externom kontrolnom nástroji.

Konkrétny príklad zraniteľnosti – Client-Side URL Injection v komponente

Opíšeme jednoduchý, no mimoriadne frekventovaný príklad zraniteľnosti, ktorý môže viesť napr. k spusteniu škodlivého skriptu. Vývojár zadá prompt: „Vytvor moderné tlačidlo pre profil používateľa, ktoré obsahuje odkaz na jeho osobnú webovú stránku, pričom tento odkaz bude možné upravovať.“ Model vygeneruje štandardný HTML tag a prepojí jeho atribút href s údajmi, ktoré môže používateľ meniť, pričom môže, ale aj nemusí kontrolovať ich obsah. Model logicky splní úlohu – tlačidlo funguje, obsah odkazu sa dá upravovať a po kliknutí naň sa otvorí požadovaná stránka. Z hľadiska bezpečnosti tu však môže dôjsť ku kritickému zlyhaniu. Predstavme si napr. vygenerovanú funkciu:

export function UserProfileCard({ user }) {
  return (
    ...
   

{user.name}

   

{user.bio}

   
      href={user.websiteURL}
      className="inline-block mt-4 text-blue-600 hover:underline text-sm font-medium"
    ...
  );
}


Obr. 1 Komponent UI vygenerovaný pomocou Vercel v0

 

Vývojár sa spolieha na to, že používateľ zadá do poľa websiteURL korektnú URL adresu, napr. https://softengine.sk. Generátor však môže na validáciu v komponente „zabudnúť“ a môže očakávať, že vstupné údaje budú vždy správne a bezpečné – takto sa to predsa naučil pri svojom tréningu.

Ak útočník zmení hodnotu websiteURL na špeciálne upravený reťazec, napr. na výkonný systémový príkaz či skript, môže úplne obísť zamýšľanú funkcionalitu odkazu na webovú stránku. V momente, keď obeť klikne na odkaz, prehliadač namiesto otvorenia novej stránky vykoná podhodený kód. V reálnom scenári útočník určite nepoužije neškodnú výstrahu. Otvára sa mu široká škála skrytých útokov, ktorých aktiváciu si zabezpečí prostredníctvom banálneho kliknutia na odkaz.

Kde sa stala chyba?

Ak generátor splní zadanie „povrchne“, teda prepojí objekt user.websiteURL s atribútom href bez validácie vstupu, pretože uvažuje iba v kontexte kompilácie vzorových textov, implementuje najjednoduchšiu, no nebezpečnú cestu. Vygenerovaný komponent bude automaticky dôverovať akémukoľvek reťazcu, ktorý dostane na vstupe. Vývojár, ktorý by tento kód skopíroval do produkcie, by síce získal pekné a funkčné tlačidlo, no prehliadol by banálnu chybu.

Obrana proti tomuto typu útoku je pritom mimoriadne jednoduchá. Stačí overiť, či sa URL adresa začína štandardným webovým protokolom (napr. http:// alebo https://). Ak podmienku nespĺňa, odkaz sa znefunkční alebo nahradí bezpečnou alternatívou:

 

export function SafeUserProfileCard({ user }) {
  // Over ci URL zacina bezpecnym protokolom
  const isSafeURL = user.websiteURL.startsWith('http://') || user.websiteURL.startsWith('https://');
 
  return (
    ...
   

{user.name}

   

{user.bio}

   
      href={isSafeURL ? user.websiteURL : '#'}
      onClick={!isSafeURL ? (e) => e.preventDefault() : undefined}
      className="inline-block mt-4 text-blue-600 hover:underline text-sm font-medium"
    >Navštíviť osobnú webovú stránku
    ...
  );
}

Obr. 2 Programový kód UI komponentu vygenerovaný pomocou Vercel v0

 

Na obr. 2 vidíme, že v našom prípade Vercel v0 vytvoril správny kód, v ktorom automaticky implementoval validáciu vstupného reťazca. Po zmene obsahu editovateľného poľa websiteURL kód skontroluje, či sa zadaný text začína štandardnými webovými protokolmi. Sme si však stopercentne istí, že generátor vždy vygeneruje kód obsahujúci túto banálnu kontrolu?

Tento príklad demonštruje, že aj ten najjednoduchší HTML tag môže predstavovať vážne bezpečnostné riziko, ak je vygenerovaný bez kontextuálnej kontroly bezpečnosti. Pri používaní AI generátorov teda platí jedno základné pravidlo: Každý vygenerovaný kód musí pred nasadením prejsť revíziou so zameraním na to, či spĺňa aspoň tie najjednoduchšie bezpečnostné pravidlá.

Zobrazit Galériu

Marek Sopko

Všetky autorove články

Pridať komentár

Mohlo by vás zaujímať

Mohlo by vás zaujímať