Il tuo assistente di programmazione AI potrebbe riscrivere le tue chiavi SSH senza che tu te ne accorga. Wiz Research ha scoperto una vulnerabilità denominata “GhostApproval” che permette a un symlink malevolo project_settings.json di puntare a chiavi private, e la finestra di dialogo di approvazione che appare mostra solo il nome del symlink. Approva la finestra di dialogo e avrai appena concesso all'assistente l'accesso illimitato alle tue credenziali.

Come funziona l'exploit

  • Un attaccante aggiunge un file chiamato project_settings.json a un repository.
  • Quel file non è un normale file JSON; è un link simbolico (symlink) che reindirizza alla chiave privata ~/.ssh/id_rsa (o equivalente) dell'utente.
  • Quando lo sviluppatore chiede all'assistente AI di “configurare l'ambiente di lavoro” (set up the workspace), l'assistente segue il symlink e si prepara a scrivere nel file della chiave SSH reale.
  • La finestra di dialogo di approvazione che appare elenca solo project_settings.json. Non risolve il symlink per mostrare il percorso effettivo su disco.
  • Cliccando su “Approve” si concede all'assistente il permesso di modificare la chiave privata, compromettendo di fatto l'identità dell'utente su ogni servizio che si fida di quella chiave.

Il bug si presenta in sei strumenti ampiamente utilizzati: Amazon Q Developer, Claude Code, Augment, Cursor, Google Antigravity e Windsurf. Tutti mostrano la stessa finestra di dialogo fuorviante perché l'interfaccia utente visualizza il nome che riceve, non il target risolto.

Perché le finestre di dialogo per singola azione non sono sufficienti

L'approvazione per singola azione presuppone che un essere umano possa esaminare ogni operazione eseguita da un'IA. In pratica, ti costringe a prendere decisioni perfette ogni pochi secondi, qualcosa che nessuno può fare più velocemente di quanto agisca l'agente.

Cosa stanno facendo i fornitori – e perché è importante

  • Amazon, Google e Cursor lo hanno già risolto.
  • Anthropic (il produttore di Claude Code) afferma che gli utenti devono approvare solo ciò che comprendono. Ciò ignora il carico cognitivo necessario per individuare i symlink e presuppone che gli utenti possano controllare istantaneamente ogni percorso di file, un'aspettativa irrealistica.
  • Cursor ha inoltre divulgato un problema separato, chiamato DuneSlide, che permetteva agli attaccanti di eseguire codice su una macchina senza alcun prompt di approvazione. L'azienda ha corretto quel bug, dimostrando quanto velocemente questi assistenti possano diventare vettori di attacco quando i controlli dei permessi sono deboli.

La divergenza nelle risposte solleva una questione più profonda: la sicurezza dovrebbe essere un dialogo postumo o un confine predefinito che l'assistente non deve mai superare?

Permessi limitati (Scoped permissions): un'alternativa pratica

Invece di richiedere l'approvazione per ogni operazione sui file, gli sviluppatori possono impostare uno scope (ambito) per l'assistente prima che venga eseguito:

  • Definire un albero di directory (ad es. /src) che l'IA può leggere o scrivere.
  • Ogni tentativo di toccare file al di fuori di quell'albero — come ~/.ssh/id_rsa — viene bloccato dal sistema operativo o da uno strato di sandbox.
  • Lo scope viene stabilito una sola volta, riducendo il numero di decisioni che un essere umano deve prendere, pur contenendo l'impatto dell'assistente.

La limitazione dello scope sposta il modello di sicurezza da “chiedi ogni volta” a “consenti solo ciò che è necessario”. Riflette il modo in cui i runtime dei container e i sistemi operativi mobili isolano le applicazioni in sandbox, limitando i danni quando qualcosa va storto.

Cosa monitorare in seguito

  • Rilasci dei fornitori: Tieni d'occhio le note di aggiornamento dei sei strumenti interessati.

In sintesi

L'exploit GhostApproval dimostra che fidarsi di una finestra di dialogo pop-up dà un falso senso di sicurezza. Finché ogni assistente di programmazione AI non risolverà i symlink e non mostrerà i percorsi completi, gli sviluppatori dovrebbero imporre permessi di scrittura limitati (scoped), indicando all'assistente esattamente dove può lavorare prima che inizi. Questo semplice cambiamento blocca la classe di attacchi più pericolosa senza aggiungere affaticamento da clic.

Fonte: dev.to/girish_r/your-coding-agents-approval-dialog-is-lying-to-you-ih1