07 - Securitate în codarea Vibe: Riscuri și atenuări
Pe 21 iulie 2025 Jason Lemkin, fondatorul SaaStr, a experimentat cu Replit AI pentru a construi o mică aplicație. În a noua zi de dezvoltare s-a trezit cu baza de date de producție șterse complet: 1.206 de profiluri de executiv și 1.196 de companii s-au evaporat în câteva secunde. Agentul AI a șters tabelele de producție în timpul unei blocări active a codului, apoi a făcut-o a fabricat 4.000 de înregistrări fictive și a mințit cu privire la opțiunile de returnare disponibile.
Acesta nu este un caz izolat. Este simptomul unei probleme structurale: codarea vibrațiilor și agenții aduc vulnerabilități sistematice în bazele de cod de producție că procesele tradiționale de revizuire nu sunt echipate pentru a identifica. Potrivit Raport de securitate Veracode 2025 GenAI Code, 45% of code samples generated by AI eșuează testele de securitate introducând OWASP Top 10 vulnerabilități. The data gets worse when you look la anumite limbaje: Java are o rată de eșec de 72%, în timp ce Python, C# și JavaScript fluctuate between 38% and 45%.
Acestea nu sunt doar bug-uri evidente. 62% dintre funcțiile de cod generate de AI design defect - defecte de arhitectura care nu apar in testele functionale dar care deschid suprafeţe mari de atac greu de închis retroactiv. Un cercetător de la Universitatea din Bari a calculat că codul produs de AI conține de 2,74 de ori mai mult vulnerabilități în comparație cu codul scris de dezvoltatori umani seniori.
Acest articol este un ghid practic pentru dezvoltatorii care folosesc instrumente de codare AI. Nici unul condamnarea paradigmei – care aduce beneficii reale în productivitate – ci un cadru concret să-l folosească în siguranță.
Ce vei învăța
- Cele mai comune vulnerabilități în codul generat de AI și de ce apar
- Problema „slopsquatting” și dependențe halucinate în lanțul de aprovizionare
- Injectare promptă: cum poate fi compromis asistentul dvs. de cod
- SAST și DAST pentru codul AI: Semgrep, SonarQube, Bandit, practic
- Conductă CI/CD cu porți de securitate specifice pentru codul generat de AI
- Sandboxing și izolarea agenților AI în producție
- Cele mai bune practici: principiul cel mai mic privilegiu și apărare în profunzime
- Listă de verificare operațională pentru echipe care utilizează codarea vibrațiilor în producție
Peisajul vulnerabilității în codul generat de AI
Pentru a înțelege de ce codul generat de AI este sistematic mai vulnerabil, trebuie înțelegeți cum funcționează generația în sine. Un model de limbaj nu „raționează” cu privire la securitate în sensul ingineresc al termenului: prezice următorul simbol pe baza tiparelor învățate în timpul antrenamentului. Dacă setul de antrenament este plin de cod vulnerabil - și este, pentru că o mulțime de el codul public de pe GitHub nu urmează cele mai bune practici de securitate - modelul se reproduce aceleași modele.
Raportul Veracode a analizat peste 100 de LLM în 80 de sarcini structurate de codificare pentru a le expune Puncte slabe ale CWE (Common Weakness Enumeration). Rezultatele sunt alarmante:
| Tipul de vulnerabilitate | Rata în mostre AI | Referință CWE |
|---|---|---|
| Cross-Site Scripting (XSS) | 86% din probe | CWE-80 |
| Injecție log | 88% din probe | CWE-117 |
| Injecție SQL | ~20% din probe | CWE-89 |
| Acreditări hardcoded | Frecvent (necuantificat) | CWE-798 |
| Autentificare pe partea clientului | Frecvent în proiecte web | CWE-603 |
| Traversarea căii | Prezent în operațiunile cu fișiere | CWE-22 |
Un fapt deosebit de îngrijorător este stabilitate în timp dintre aceste rezultate: performanța de siguranță a rămas practic neschimbată în ciuda faptului că modelele au a îmbunătățit drastic calitatea sintactică a codului generat. Cele mai noi și mai mari modele nu produc cod semnificativ mai sigur decât predecesorii lor.
Injecție SQL: clasicul care nu dispare niciodată
Când cereți unui AI să genereze puncte finale API cu acces la baza de date, rezultatul Tipic concatenează direct intrarea utilizatorului în interogările SQL. Să vedem un exemplu de cod vulnerabilitatea generată de obicei și versiunea fixă:
# ================================================================
# VULNERABILE - Codice tipicamente generato da AI senza contesto
# ================================================================
import sqlite3
from flask import Flask, request, jsonify
app = Flask(__name__)
@app.route('/users/search')
def search_users():
name = request.args.get('name', '')
conn = sqlite3.connect('users.db')
cursor = conn.cursor()
# VULNERABILE: concatenazione diretta dell'input
query = f"SELECT * FROM users WHERE name LIKE '%{name}%'"
cursor.execute(query)
results = cursor.fetchall()
conn.close()
return jsonify(results)
# Attacco: GET /users/search?name='; DROP TABLE users; --
# Risultato: cancellazione dell'intera tabella
# ================================================================
# SICURO - Versione con parametri bound
# ================================================================
from flask import Flask, request, jsonify
import sqlite3
from typing import Optional
import re
app = Flask(__name__)
MAX_NAME_LENGTH = 100
ALLOWED_NAME_PATTERN = re.compile(r'^[a-zA-Z\s\-\']+






