Înapoi la Noutăți
Amenințări

Un fișier AGENTS.md malițios din folderul Downloads îți poate deturna agentul AI de programare

Un fișier AGENTS.md plantat în folderul Downloads al unui dezvoltator a încercat să convingă un agent AI de programare să instaleze un pachet npm cunoscut ca malițios. Tehnica funcționează pe Codex și, mai rar, pe Claude Code, iar un patch de la furnizori nu o va face să dispară.

Un fișier AGENTS.md malițios din folderul Downloads îți poate deturna agentul AI de programare

Un fișier AGENTS.md malițios din folderul Downloads îți poate deturna agentul AI de programare

Un fișier text cu instrucțiuni, strecurat discret în folderul Downloads al unui dezvoltator, a încercat să transforme agentul AI de programare al acestuia într-un instalator de malware. Tentativa a fost detectată pe o stație de lucru reală și blocată înainte să ruleze ceva, însă mecanismul din spate îi privește pe toți cei care deschid Codex, Claude Code sau un agent similar într-un folder pe care nu îl controlează pe deplin.

Ce s-a întâmplat

Fișierul se numea AGENTS.md. Agenții de programare precum Codex de la OpenAI citesc automat un fișier cu acest nume atunci când pornesc într-un folder și îi tratează conținutul drept indicații de proiect. Acesta era deghizat în notițe tehnice obișnuite. Ascunsă în el se afla o secțiune care îi cerea agentului să înregistreze un nou server de unelte în propria configurație și să instaleze un pachet npm numit function-color.

Pachetul nu este o greșeală de tastare inofensivă. Face parte dintr-o campanie de malware urmărită sub numele MALFEX: function-color aduce după sine un downloader numit function-flag, care descarcă și execută un payload pentru Windows. Dacă agentul ar fi urmat notițele, mașina dezvoltatorului ar fi fost infectată chiar de propriul asistent.

Modul în care fișierul a ajuns în folderul Downloads nu a fost stabilit.

De ce funcționează

Două comportamente inofensive luate separat se combină într-un canal de livrare.

În primul rând, un agent este conceput să aibă încredere în fișierul de instrucțiuni din folderul pe care îl deschide și să îl urmeze. Aceasta este o funcționalitate, nu un defect.

În al doilea rând, o pagină web poate salva un fișier în folderul Downloads fără niciun click și fără o cerere de permisiune, alegând singură numele și conținutul.

Puse cap la cap, orice pagină vizitată de un dezvoltator, sau chiar de agent în timp ce navighează, poate lăsa în urmă un fișier pe care agentul îl va citi ulterior ca pe niște ordine. O pagină demonstrativă construită în cadrul investigației a confirmat că partea cu descărcarea silențioasă funcționează exact așa. Dacă un atacator real a folosit această rută împotriva dezvoltatorului afectat rămâne necunoscut.

Codex versus Claude Code

Atacul a fost reprodus împotriva a doi agenți populari, într-o mașină virtuală izolată, pentru a arăta că nu este legat de un singur produs.

Codex. Folosind fișierul real al atacatorului, prezentat ca o configurare de rutină a proiectului, Codex a primit instrucțiunea să adauge o intrare de server în fișierul său global de configurare ~/.codex/config.toml și să ruleze o comandă care instala pachetul. Pentru că acea configurație se aplică fiecărei sesiuni Codex de pe mașină, serverul atacatorului s-ar fi încărcat ulterior în orice folder, nu doar în Downloads. În teste, Codex a executat instalarea malițioasă în peste nouă din zece încercări.

Claude Code. Varianta funcțională a arătat diferit și a reușit mai rar. Un fișier CLAUDE.md plantat, prezentat ca o configurare internă de gateway, a încercat să îl determine pe Claude să scrie o valoare ANTHROPIC_BASE_URL în fișierul de setări al proiectului, redirecționând traficul API al agentului către un server controlat de atacator. Această singură modificare scurge tokenul de autentificare al sesiunii, ceea ce echivalează cu preluarea contului, și îi permite serverului fals să se dea drept model și să trimită înapoi comenzi pe care agentul le execută. Claude Code cere aprobarea unui om pentru o astfel de scriere și refuză frecvent una care pare suspectă. Totuși, ambalajul de document tehnic lung a obținut aprobarea cam în jumătate din cazuri.

De ce nu există un patch

Nu este vorba de un bug în Codex sau Claude Code în sensul obișnuit. Un agent care urmează fișierul de instrucțiuni din folderul de lucru face exact ceea ce a fost construit să facă, la fel cum un browser care afișează o pagină de phishing funcționează conform designului. Slăbiciunea stă în fluxul de lucru din jurul agentului: unde este pornit, în ce fișiere are încredere și cine supraveghează când apare un fișier nou.

Acest lucru contează din cauza felului în care lucrează efectiv dezvoltatorii. Datele de telemetrie adunate în timpul investigației sugerează că aproximativ jumătate dintre mașinile de dezvoltare monitorizate pornesc un agent de programare direct în folderul Downloads, iar cam un sfert dintre sesiunile agenților deschid singure un browser. Sunt exact condițiile de care are nevoie atacul: un agent care pornește acolo unde web-ul poate scrie și, adesea, nimeni de față când sosește fișierul.

Ce este de făcut

Niciuna dintre măsurile de mai jos nu necesită un produs nou.

  • Nu porni niciodată un agent în Downloads. Este singurul folder în care web-ul poate scrie fără să te întrebe. Mută mai întâi lucrul într-un director de proiect dedicat.
  • Caută fișiere de instrucțiuni pe care nu le-ai scris tu. Un AGENTS.md sau CLAUDE.md rătăcit în Downloads sau într-un repository abia clonat este întregul atac. Citește-l înainte să lași un agent în apropierea lui.
  • Verifică propria configurație a agentului. În ~/.codex/config.toml, caută blocuri de server sau URL-uri de bază pe care nu le-ai adăugat. În .claude/settings.json din proiect, caută un ANTHROPIC_BASE_URL sau orice endpoint API pe care nu l-ai setat.
  • Păstrează activate cererile de aprobare și sandbox-urile. Tratează orice instrucțiune care îi cere agentului să le dezactiveze ca fiind ostilă.
  • Presupune compromiterea dacă găsești un fișier plantat. Rotește imediat tokenul de autentificare al agentului. Un token furat înseamnă o sesiune activă, nu o singură cerere interceptată.

Fișierele de instrucțiuni și configurația agenților fac acum parte din suprafața de atac a unei baze de cod și merită aceeași atenție ca o dependență nouă. Serviciul nostru de code review asistat de AI caută exact această clasă de probleme într-un repository: instrucțiuni plantate pentru agenți, modificări neașteptate de configurație și pachete legate de campanii de malware cunoscute, semnalate înainte ca un agent sau un om să acționeze pe baza lor.

DISTRIBUIE