Īsumā
AI uzrakstītais kods parasti darbojas. Problēma ir tajā, kam ir piekļuve datiem. 2026. gada auditā, kurā bija 200 publicētu ar vibe coding veidotu lietotņu, 91 % bija vismaz viena ievainojamība, un lielākā grupa bija bojāta piekļuves kontrole. Es atkārtoju piecus no šiem piekļuves robiem lokālā Supabase vidē: tikai ar publisko atslēgu tabula bez RLS, vienmēr patiesa politika, skats un noplūdusi secret key katra atdeva visas 3 rindas no 3. Pārbaudiet savu lietotni vispirms pret šiem robiem.
Esmu Denys, full-stack un AI inženieris. Esmu labojis lietotnes, kas veidotas ar Lovable, Bolt, Cursor vai Claude Code, un lielākā daļa no tām darbojas uz Supabase. Šajā rakstā ir apkopots, ko publicētie pētījumi saka par vibe coding drošību un ko es redzēju, kad tīši pārbūvēju izplatītākās kļūdas.
Kādi ir vibe coding drošības riski?
Galvenais risks ir bojāta piekļuves kontrole: dati, ko jebkurš apmeklētājs var lasīt vai mainīt, jo noteikums, kam vajadzētu viņu apturēt, trūkst, ir pārāk vaļīgs vai tiek apiets. Tālāk seko injekcijas un vāja autentifikācija. Trīs neatkarīgi pētījumi rāda uz to pašu:
| Pētījums | Ko pārbaudīja | Ko atrada |
|---|---|---|
| Deng, Fan un Meng, arXiv 2606.23130, 2026. gada jūnijs | 200 publicētas lietotnes, veidotas ar Claude Code un Lovable, auditētas ar rokām un ar aģentiem | 182 no 200 lietotnēm (91 %) bija vismaz viena ievainojamība; 65,77 % no 1186 atradumiem bija Critical vai High; bojāta piekļuves kontrole bija lielākā kategorija, 64 % lietotņu |
| Escape, 2025. gada oktobris | 5600 publiskas lietotnes no Lovable, Base44, Create.xyz un citām, pasīvā skenēšana | vairāk nekā 2000 ievainojamību ar lielu ietekmi, vairāk nekā 400 atklātu noslēpumu, 175 gadījumi ar atklātiem personas datiem; galvenais cēlonis bija nepareizi iestatītas tiesības, īpaši Supabase RLS |
| Veracode GenAI Code Security Report, 2025 un 2026 | 80 programmēšanas uzdevumi, ko izpildīja vairāk nekā 100 modeļu | 2025. gadā drošu kodu deva tikai 55 % uzdevumu; 2026. gadā vidējais izturēšanas rādītājs bija 56 %, nemainīgs neatkarīgi no modeļa izmēra un gada |
Pētījumi mēra dažādas lietas, tāpēc procenti neveido vienu skaitli. Kopīga ir to aina: kods darbojas, un robi atrodas uz uzticamības robežas.
Kurus robus es atkārtoju?
Lokālā Supabase vidē (CLI 2.109.1, Postgres 17.6, PostgREST 14.14) izveidoju vienu tabulu orders ar trim izdomātu klientu rindām. Tad izsaucu Data API tā, kā to dara pārlūks, ar publishable key, ko piegādā katrs Supabase frontend, un katru reizi mainīju tikai vienu lietu.
| Iestatījums | Ko ieguva publiskā atslēga | Kāpēc |
|---|---|---|
| Tabula bez RLS | Visas 3 rindas, un ievietošana atgrieza 201 Created |
Noklusējuma tiesības ļauj anon lasīt un rakstīt, un neviens nefiltrē rindas |
| RLS ieslēgts, politikas nav | [], tukšs saraksts |
RLS bez politikas liedz visu anon un authenticated |
Politika using (true) |
Visas 3 rindas | Politika pastāv, tāpēc tabula šķiet aizsargāta, taču tā atļauj katru rindu |
| Skats virs aizsargātas tabulas | Visas 3 rindas | Skats darbojas ar īpašnieka tiesībām, ja tam nav security_invoker = true; ar to rezultāts ir [] |
| Secret key frontend kodā | Visas 3 rindas | Secret key atbilst service_role, kam ir BYPASSRLS |
Otrā rinda ir bīstamais brīdis. RLS ir ieslēgts, un lietotne rāda tukšu sarakstu, tāpēc šķiet, ka tā ir salauzta. Ātrākā uzvedne, kas to “salabo”, ir politika, kas atļauj visu, tas ir, trešā rinda. Šis cikls, kļūda un pēc tam labojums, kas paplašina piekļuvi, ir paraugs, ko vibe coding lietotnēs sastopu visbiežāk, un tieši tāpēc “RLS ir ieslēgts” pats par sevi pasaka maz.
Kāpēc AI uzrakstīts kods neiztur piekļuves kontroli?
Aģentu atalgo par kodu, kas darbojas. Tukšs saraksts vai 401 izskatās pēc kļūdas, un labojums, kas to padara neredzamu, bieži ir tas, kas atver piekļuvi. arXiv pētījums savus 1186 atradumus izseko līdz astoņiem atkārtotiem kļūmju veidiem, sagrupētiem kā aģentu atmiņas, mērķa un zināšanu defekti, un atrada, ka labāka uzvedņu rakstīšana samazināja robu skaitu, bet neizskauda tos.
Otrs iemesls ir arhitektūra. Lovable vai Bolt lietotnei parasti nav sava backend: pārlūks runā ar datubāzi tieši, izmantojot Data API. Katram noteikumam, kas sargā klientu datus, jādzīvo Postgres, kā tiesībām (grants), politikām un funkcijām, un nekas no tā nav redzams lietotnes priekšskatījumā, kur esat pieteicies kā īpašnieks. Supabase maina vienu noklusējumu: no 2026. gada 30. oktobra esošo projektu jaunajām tabulām Data API tiesības vairs netiek piešķirtas automātiski. Manā vidē tabula bez tiesībām atbildēja ar 42501 permission denied un norādi, kas nosauc trūkstošo GRANT. Tas apturēs augstāk esošās tabulas pirmo rindu jaunām tabulām, bet ne pārējās četras un ne jau esošās tabulas.
Kas vēl noiet greizi ārpus datubāzes?
Tie paši pētījumi uzskaita riskus, kam ar RLS nav sakara:
- Noslēpumi bundle. Escape atrada vairāk nekā 400 atklātu noslēpumu, tostarp OpenAI atslēgas un maksājumu administratora atslēgas. Viss, kas nonāk pārlūkā, ir publisks.
- Maršrutu aizsardzība tikai React. Lapa, kas novirza nepieteikušos lietotājus, atstāj aiz sevis API, kas atbild ikvienam.
- Ātruma ierobežojumi, kas nekad nenostrādā. Hostētā Supabase projektā, ko pārbaudīju, edge function atmiņā glabāts skaitītājs atiestatījās katrā pieprasījumā. To aprakstīju savā Lovable lietotnes drošības kontrolsarakstā.
- Vecas bibliotēkas. Escape publiskajos resursos saskaitīja 254 ievainojamus JavaScript bibliotēku gadījumus, bieži mantotus no veidnēm.
Kā pārbaudīt vibe coding lietotni?
- Atveriet lietotni, atveriet DevTools → Network un atrodiet pieprasījumus uz
/rest/v1/. Nokopējiet vienu kā cURL, noņemiet galveniAuthorization, atstājietapikeyun palaidiet. Ja dati atnāk atpakaļ, tie atnāks ikvienam. - Meklējiet uzbūvētajā JavaScript
sb_secret_unservice_role. Sakritība ir atslēga, kas jānomaina šodien. - Palaidiet bezmaksas Supabase drošības pārbaudi. Tā nolasa projekta katalogu un starp saviem 46 noteikumiem atzīmē “RLS izslēgts atklātajām tabulām”, “Politikas, kas atļauj visas rindas”, “Skati, kas apiet RLS” un “Noklusējuma tiesības, kas atver jaunus objektus API”: augstāk esošās tabulas pirmās četras rindas.
- Testējiet ar diviem lietotājiem divos uzņēmumos, vienīgo testu, ko skeneris jūsu vietā izdarīt nevar. Kā to daru es, ir Lovable kontrolsarakstā, bet kā es testēju Supabase RLS parāda metodi produkcijas lietotnē ar atļauju ekrānu.
curl 'https://<project>.supabase.co/rest/v1/orders?select=*' \
-H 'apikey: <the publishable key from your page>'
Ko tas neparāda
Mana reprodukcija ir viena tabula lokālā vidē, veidota, lai parādītu katru mehānismu, nevis reālu lietotņu skenēšana. Izplatības skaitļi nāk no trim pētījumiem, katram ir sava izlase un metode, saites ir augstāk. Un tīrs rezultāts šajās piecās pārbaudēs nepadara lietotni drošu: loģikas kļūdām, piemēram, aizsardzībai, kas laiž cauri trūkstošu vērtību, vajag savus testus. Viena no tām ir NULL, kas izlaida atļaujas pārbaudi.
Izveidojāt lietotni ar AI rīku?
Labprāt salīdzināšu pieredzi par to, ko pārbaudīt vispirms. Bez pārdošanas sarunas.
Sazināties