Kód písaný s AI a čo s jeho bezpečnosťou
Vývoj s AI asistentmi je rýchly. Kontrola pred nasadením musí byť rovnako samozrejmá ako predtým.
Krátke odpovede
- Je kód písaný s pomocou AI bezpečný?
- Je presne taký bezpečný ako kód, ktorý niekto skontroloval. Jazykový model píše to, čo v trénovacích dátach prevažovalo, a tam sú aj roky starých a nebezpečných vzorov. Problém nie je v tom, že kód píše model, ale v tom, že sa nasadzuje rýchlejšie, než ho stihne niekto prezrieť.
- Aké chyby robí AI pri písaní kódu najčastejšie?
- Skladanie SQL dotazov z reťazcov namiesto parametrov, chýbajúce overenie oprávnení na serveri, vypnutá kontrola certifikátov a tajomstvá zapísané priamo v zdrojovom kóde. Sú to zhodou okolností tie isté chyby, ktoré vedú rebríček OWASP Top 10 roky pred príchodom modelov.
- Čo má obsahovať kontrola kódu pred nasadením?
- Automatickú analýzu zdrojového kódu, kontrolu závislostí na známe zraniteľnosti, hľadanie tajomstiev v repozitári a ľudské prezretie zmien, ktoré sa dotýkajú prihlasovania, oprávnení alebo platieb. Nič z toho nie je zvlášť drahé, všetko sa dá spustiť pri každej zmene.
Čoraz viac firiem si vyvíja aplikácie s výraznou pomocou AI asistentov. Kód vzniká z opisu v bežnom jazyku a vzniká rýchlo. Problém nie je v tom, že by bol horší než ľudský. Problém je, že ho vzniká viac a prezerá ho menej očí.
Medzi vývojom a prevádzkou stojí brána. Čo cez ňu neprejde, sa nenasadí, a je jedno, kto alebo čo ten kód napísal.
Čo sa v takom kóde nachádza najčastejšie
- Zraniteľné vzory, ktoré vyzerajú funkčne, napríklad skladanie SQL dopytov z reťazcov alebo chýbajúce escapovanie výstupu
- Ponechané prístupové údaje, teda heslá a API kľúče priamo v kóde alebo v konfigurácii, ktorá skončí v gite
- Zastarané knižnice so známymi zraniteľnosťami
- Chýbajúca kontrola oprávnení. Funkcia funguje, ale nekontroluje, či ju smie zavolať práve tento používateľ
- Logické chyby, ktoré testy neodhalia, lebo testujú to isté, čo predpokladal autor
Osobitná pozornosť patrí prístupovým údajom. Raz zapísané do histórie gitu tam ostanú aj po oprave súboru, takže ich treba vymeniť, nielen zmazať.
Kontrola pred nasadením
Riešením nie je prestať používať AI, ale postaviť medzi vývoj a prevádzku bránu. Čo neprejde kontrolou, sa nenasadí.
| Kontrola | Čo hľadá |
|---|---|
| Statická analýza (SAST) | Známe zraniteľné vzory v kóde |
| Kontrola tajomstiev | Heslá a kľúče v kóde a v histórii |
| Analýza závislostí (SCA) | Knižnice so známymi zraniteľnosťami |
| Revízia modelom | Logické chyby a zlé návyky aj s vysvetlením |
| Sken kontajnera | Zraniteľnosti v základnom image |
| Ľudské schválenie | Kontext, ktorý nástroj nemá |
Čo má aplikácia vedieť sama
- Viesť audit log o tom, kto, čo a kedy urobil, a vedieť ho odoslať na centrálny log server
- Šifrovať citlivé údaje v databáze a mať kľúče uložené mimo kódu
- Byť publikovaná za reverznou proxy s WAF, nie priamo
Nič z toho nie je špecifické pre AI. Rýchlosť, akou dnes kód vzniká, len spôsobila, že chýbajúca kontrola sa prejaví skôr.