Netwrix 1Secure offre visibilità unificata su dati e identità - gratuito per 14 giorni con accesso completo.Inizia una prova gratuita

Centro risorseBlog

Sicurezza del coding Vibe: cosa può andare storto e come fermarlo

Sicurezza del coding Vibe: cosa può andare storto e come fermarlo

Oct 27, 2026

I problemi di sicurezza nella codifica di Vibe di solito derivano da tre cose che un assistente AI fa rapidamente: installare pacchetti non controllati, inserire segreti nel codice e scrivere file Docker che nessuno legge. Gli aggressori usano tutte e tre, e un worm può copiarsi da una macchina di sviluppo all'altra tramite token rubati. Un vault per password, meno diritti amministrativi e il monitoraggio delle modifiche limitano i danni di una cattiva installazione.

Stai parlando ad alta voce con Claude Code. “Aggiungi Stripe checkout, collega il database, spediscilo.” Tre minuti dopo l’app funziona e non hai aperto nemmeno un file.

Quella velocità è il motivo per cui le persone amano il vibe coding. È anche dove iniziano i rischi di sicurezza del vibe coding. Mentre parlavi, l'AI ha scelto pacchetti, scritto password nei file e creato un'immagine Docker. Tu hai detto sì a tutto senza leggere.

L'IA lavora con i tuoi permessi e nessuno controlla il suo operato

Quando usi uno strumento di codifica AI, esegue i comandi al posto tuo. Può installare pacchetti, leggere i tuoi file, modificare la tua configurazione e usare il tuo accesso cloud. Il codice normale viene revisionato prima della distribuzione. Il codice Vibe-coded spesso salta questo passaggio, perché l’app funziona e nulla sembra sbagliato.

Alcune persone rimuovono anche l’ultima rete di sicurezza. Claude Code ha un flag che salta ogni richiesta di permesso:

# Salta ogni richiesta di permesso. Ora viene eseguito ogni comando scelto dall'agente.

claude --dangerously-skip-permissions

In un sandbox usa e getta va bene. Su un laptop di lavoro pieno di token e chiavi, è un rischio reale.

Pacchetti falsi e il worm che si diffonde attraverso quelli veri

Gli assistenti AI a volte suggeriscono pacchetti inesistenti. Gli aggressori osservano quei nomi inventati, li registrano e aspettano che qualcuno esegua l’installazione. Questo si chiama slopsquatting. Ecco una lista di dipendenze che a prima vista sembra corretta:

      { 

  "name": "my-saas-app", 

  "dependencies": { 

    "express": "^4.19.2", 

    "stripe": "^16.0.0", 

    "react-auth-helper-pro": "^1.0.3" 

  }, 

  "scripts": { 

    "postinstall": "node scripts/setup.js" 

  } 

} 
      

Conosci i primi due. Il terzo sembra ragionevole, ma nessuno nel tuo team l'ha scelto. La linea postinstall viene eseguita automaticamente nel momento dell'installazione, con i tuoi permessi. Prima di accettare un nuovo pacchetto, apri la sua pagina e controlla quando è stato pubblicato, quante persone lo scaricano e se punta a un repository reale. Un pacchetto apparso la settimana scorsa con poche scaricamenti merita una seconda occhiata.

Ora aggiungi il worm. Nel settembre 2025, un worm chiamato Shai-Hulud si diffuse tramite npm. Si attivava quando veniva installato un pacchetto, rubava token e chiavi cloud dalla macchina dello sviluppatore e usava quei token per pubblicare versioni infette dei pacchetti della vittima. Tutti coloro che installarono quei pacchetti subirono lo stesso trattamento.

Un laptop con codice vibe è un bersaglio facile per qualcosa del genere. I token sono in file semplici, l’utente ha diritti di amministratore locale e le installazioni vengono approvate senza controllo.

I segreti finiscono nel tuo codice

Chiedi a un assistente di “connettersi a Stripe e Postgres” e spesso otterrai questo:

      // config.js 

export const config = { 

  stripeKey: "sk_live_EXAMPLE_do_not_use", 

  databaseUrl: "postgres://admin:Summer2024!@prod-db.example.com:5432/app", 

  jwtSecret: "supersecret" 

}; 
      

Funziona, quindi vai avanti. Poi arriva il primo commit:

      $ git add . 

$ git commit -m "initial commit" 

# No .gitignore, so .env went along too 
      

Git ricorda tutto. Se una chiave finisce in un commit e poi elimini il file, rimane comunque nella cronologia. I bot scansionano continuamente i repository pubblici alla ricerca di chiavi, quindi una chiave trapelata può essere usata prima che te ne accorga. Se ne hai già caricato una, trattala come rubata e ruotala. I segreti si perdono anche quando li incolli in un prompt, perché finiscono nel contesto e nei log dell'agente.

I segreti rubati sono ciò di cui si nutre il worm sopra. Un token in un file trapelato è un modo per pubblicare pacchetti a tuo nome. Se non sei sicuro di dove si trovino già i dati sensibili nella tua azienda, sensitive data discovery è un buon punto di partenza.

File Docker che si compilano correttamente ma perdono comunque

Chiedi un Dockerfile e ne otterrai uno che si compila. Per la maggior parte delle persone, questo è l’unico test.

      FROM node:latest 

WORKDIR /app 

COPY . . 

ENV STRIPE_KEY=sk_live_EXAMPLE_do_not_use 

RUN npm install 

EXPOSE 3000 9229 

CMD ["node", "server.js"] 
      

Cinque problemi sono presenti in queste sette righe. Il tag latest cambia senza preavviso, quindi la build di domani può differire da quella di oggi. COPY . . inserisce il tuo file .env e la cartella .git nell'immagine. La riga ENV scrive il segreto nei livelli dell'immagine, dove chiunque possa scaricare l'immagine può leggerlo. Il container viene eseguito come root. E la porta 9229 apre il debugger di Node.js alla rete.

Ecco una versione che puoi distribuire senza esitazioni:

      FROM node:20.17-alpine 

WORKDIR /app 

COPY package*.json ./ 

RUN npm ci --ignore-scripts 

COPY . . 

USER node 

EXPOSE 3000 

CMD ["node", "server.js"] 
      

Aggiungi un file .dockerignore con .env, .git e node_modules, e passa la chiave Stripe all'avvio del container, da un vault o gestore di segreti.

Il modello di minaccia vibe coding in parole semplici

Tre cose convivono in ogni progetto codificato da vibe: l'agente ha i tuoi permessi, nessuno rivede il codice e nessuno controlla le dipendenze. Ognuna è un piccolo rischio da sola. Insieme si concatenano. Un token trapelato diventa un pacchetto pubblicato a tuo nome, e quel pacchetto diventa la prossima tappa del worm. Gli esperti di sicurezza chiamano questo modello di minaccia. Puoi pensarlo come una lista dei modi in cui qualcuno potrebbe entrare e cosa potrebbe raggiungere una volta dentro.

Linee guida di codifica Vibe che puoi configurare oggi

Puoi continuare a programmare con stile. Aggiungi qualche controllo che non richieda a nessuno di leggere ogni riga.

Problem

What to do

Example

Unchecked packages

Read every new dependency before installing, commit your lockfile, and turn off install scripts by default

npm install --ignore-scripts

Secrets in code

Keep secrets in a vault, load them at startup, and ignore .env before the first commit

echo ".env" >> .gitignore

Risky Docker files

Pin the image version, run as a non-root user, and exclude .env and .git

USER node

Too many permissions

Work as a standard user and keep permission prompts on

Skip --dangerously-skip-permissions

Changes nobody approved

Watch files and configs after deploy and flag anything unexpected

File integrity monitoring

Puoi anche fornire regole permanenti all'agente. Claude Code legge un file CLAUDE.md nel tuo progetto, quindi metti lì le tue linee guida:

      # CLAUDE.md 

- Never put secrets, keys, or passwords in code. Read them from environment variables. 

- Ask me before adding any new dependency, and tell me why it's needed. 

- Never use the latest tag for Docker base images. Run containers as a non-root user. 
      

L'agente può comunque sbagliare, quindi continua a controllare la differenza. Le regole riducono solo la frequenza con cui devi intervenire.

Come aiuta Netwrix

Netwrix Password Secure offre alle tue credenziali un posto dove vivere che non sia config.js. È una cassaforte crittografata con accesso basato sui ruoli e un registro completo di chi ha usato quale password, e le applicazioni possono recuperare le credenziali in fase di esecuzione tramite l'SDK.

Netwrix Change Tracker monitora container, server e endpoint con il controllo dell'integrità dei file e confronta ogni modifica con quella approvata. Ad esempio, se un pacchetto modifica un file di sistema alle 2 di notte o un container si discosta dalla baseline. Change Tracker lo segnala e il tuo team lo vede lo stesso giorno.

Guarda Netwrix Change Tracker in azione.

Per saperne di più

Domande frequenti sulla sicurezza della codifica Vibe

Condividi su

Scopri di più

Informazioni sull'autore

Dan piazza manager della gestione prodotti presso netwrix responsabile di diversi prodotti endpoint dspm e directory lavora in ruoli tecnici dal 2013 con passione per la cybersecurity la protezione dei dati lautomazione e il codice prima della gestione prodotti ha lavorato in ingegneria dei sistemi controllo qualit e supporto tecnico

Dan Piazza

Responsabile della Gestione del Prodotto

Dan Piazza è un Manager della Gestione del Prodotto presso Netwrix, responsabile di diversi prodotti Endpoint, DSPM e Directory. Lavora in ruoli tecnici dal 2013, con una passione per la cybersecurity, la protezione dei dati, l'automazione e il codice. Prima del suo ruolo attuale, ha lavorato come Product Manager e Systems Engineer per un'azienda di software per l'archiviazione dei dati, gestendo e implementando soluzioni B2B sia software che hardware.