Kembali

2026/10/29

File AGENTS.md dan CLAUDE.md berbahaya: bagaimana folder Downloads bisa membajak AI coding agent

File instruksi yang ditanam di Downloads mencoba membuat AI coding agent memasang malware npm. Apa yang terjadi, temuan riset, dan cara bertahan.

Poin-poin utama

  • Sebuah file AGENTS.md yang ditanam di folder ~/Downloads milik pengguna memerintahkan AI coding agent untuk memasang paket npm yang diketahui berbahaya. Upaya ini dihentikan sebelum ada kode yang dijalankan.
  • Dalam uji laboratorium, OpenAI Codex mengikuti file instruksi berbahaya pada lebih dari 90% percobaan. Claude Code mengikutinya sekitar separuh waktu.
  • Ini bukan bug yang bisa diperbaiki dengan patch. Agent memercayai file instruksi di folder tempat agent dijalankan, dan browser dapat menulis file ke Downloads.
  • Pertahanan utamanya sederhana: jangan pernah menjalankan agent di Downloads, baca file instruksi yang tidak Anda tulis sendiri, periksa konfigurasi agent dari endpoint yang tidak Anda atur, dan biarkan persetujuan serta sandbox tetap aktif.

Apa yang terjadi

Pada 22 Oktober 2026, perusahaan keamanan Forever Security menerbitkan “Markdown Is the New Executable”, yang ditulis oleh Gal Weizman dan Omer Samet. Tulisan tersebut menggambarkan insiden nyata di mesin salah satu pelanggan mereka. Sebuah AI coding agent sedang bekerja di folder ~/Downloads pengguna, dan file AGENTS.md di folder itu menyuruhnya memasang function-color, sebuah paket npm berbahaya. Forever menghentikan agent tersebut sebelum paket terpasang dan sebelum kode berbahaya apa pun berjalan.

Tidak ada yang tahu bagaimana file itu masuk ke folder Downloads. Forever menyatakan tidak dapat memastikannya, dan liputan berita oleh BleepingComputer serta The Hacker News mengulang poin tersebut. Forever kemudian membuat demonstrasi laboratorium untuk menunjukkan bagaimana sebuah halaman web dapat menanam file seperti itu dan apa yang akan dilakukan agent terhadapnya.

Paket itu sendiri bukan hal baru. Checkmarx dan CloudSEK mengaitkan function-color dengan kampanye npm MALFEX. Paket ini hanyalah pembungkus tipis yang menarik function-flag. Skrip instalasi paket tersebut mengunduh dan menjalankan payload lanjutan dari server jarak jauh. Kampanye ini menyasar Windows, dan Checkmarx melaporkan bahwa operatornya telah aktif sejak Agustus 2023. Saat kami memeriksa npm registry pada 29 Oktober 2026, function-color, function-flag, dan cdn-img-fetch semuanya telah diganti dengan paket pengganti 0.0.1-security dari npm.

Mengapa file Markdown bisa mengarahkan agent

Argumen Forever bertumpu pada dua perilaku biasa yang menjadi berbahaya bila digabungkan.

  1. Agent memuat file instruksi secara otomatis. Coding agent membaca file instruksi proyek saat dijalankan dan memperlakukannya sebagai arahan dari pengguna. Codex membaca AGENTS.md dari root proyek hingga folder saat ini. Jika tidak ada root proyek, Codex hanya membaca folder saat ini. Claude Code memuat CLAUDE.md dari folder tempat ia dijalankan dan dari setiap folder di atasnya. Ia membaca AGENTS.md sebagai gantinya bila tidak ada CLAUDE.md.
  2. Web dapat menulis ke Downloads. BleepingComputer melaporkan bahwa Chrome, Edge, dan Firefox secara default menyimpan file ke Downloads tanpa menanyakan lokasinya. Sebuah halaman dapat menentukan nama dan isi file. File Markdown bukan program, sehingga pemeriksaan sistem operasi terhadap file executable yang diunduh tidak menganggapnya berbahaya.

Jika digabungkan, artinya sebuah halaman web dapat menjatuhkan file yang kemudian dibaca agent sebagai instruksi. Agent tidak perlu “ditipu” dalam arti biasa: ia hanya melakukan apa yang memang dirancang untuknya. Forever juga menunjukkan bahwa sebagian agent menjelajah web sendiri. Dalam kasus itu, mungkin tidak ada orang yang melihat unduhan terjadi sama sekali.

Logika yang sama berlaku di luar Downloads. Folder mana pun yang dapat dijangkau oleh konten tidak tepercaya adalah kandidat: repository yang baru di-clone, arsip yang baru diekstrak, atau folder bersama. Pada Claude Code, proyek yang diekstrak ke subfolder Downloads juga akan memuat CLAUDE.md yang berada di Downloads itu sendiri, karena file di folder induk juga dimuat.

Apa yang ditunjukkan oleh riset

Forever menguji dua agent. Sebagian besar percobaan menggunakan payload pengganti yang tidak berbahaya (membuka kalkulator). Paket berbahaya yang asli hanya dijalankan sekali, di dalam mesin virtual yang terisolasi.

OpenAI Codex

Para peneliti menggunakan kembali AGENTS.md asli dari mesin pelanggan. File itu menyuruh Codex menambahkan entri server MCP ke konfigurasi tingkat mesin, ~/.codex/config.toml. Entri tersebut menjalankan perintah saat startup yang memasang paket npm. Karena konfigurasinya bersifat global, perubahan ini bertahan di setiap sesi Codex berikutnya di mesin tersebut, bukan hanya sesi yang membaca file itu. Forever melaporkan bahwa serangan ini memerlukan beberapa trik: gaya dokumen yang panjang dan membosankan, sesi anak yang dijalankan dengan flag pelewat sandbox, dan metode peluncuran yang menghindari batas waktu startup Codex. Meski begitu, Codex menjalankan payload pada lebih dari 90% percobaan.

Claude Code

Untuk Claude Code, para peneliti menulis CLAUDE.md sendiri, dikemas sebagai catatan penyiapan untuk API gateway internal. File itu meminta Claude menulis pengaturan ANTHROPIC_BASE_URL ke .claude/settings.json proyek, sehingga lalu lintas API diarahkan ke server yang dikendalikan peneliti. Menurut Forever, hal ini membocorkan OAuth token sesi. Ini juga memungkinkan server penyerang menyamar sebagai model dan mengirim balik tool call, termasuk perintah shell dengan sandbox dinonaktifkan. Forever mendemonstrasikan pencurian token (memakai ulang token untuk bertindak sebagai korban) dan eksekusi kode pada peluncuran berikutnya. Mereka juga menunjukkan jalur yang memicu serangan dalam sesi yang sama dengan menjalankan subagent.

Cara ini kurang andal. Claude Code meminta persetujuan sebelum menulis ke file pengaturan dan sering menolak perubahan yang mencurigakan. Forever melaporkan tingkat keberhasilan sekitar separuh, dan sekitar satu dari lima percobaan untuk jalur subagent dalam sesi yang sama.

Apa yang tidak ditunjukkan

  • Forever tidak dapat memastikan bagaimana file asli sampai ke folder Downloads pelanggan. Jalur unduhan web adalah kemungkinan yang telah didemonstrasikan, bukan penyebab yang terkonfirmasi.
  • Hanya Codex dan Claude Code yang diuji. Forever berpendapat bahwa agent lain yang memuat file instruksi terpapar dengan cara yang sama, tetapi tidak mengujinya.
  • Artikel-artikel tersebut tidak menyebutkan versi alat tertentu dan tidak memuat pernyataan dari vendor. Posisi Forever adalah “tidak ada yang perlu di-patch oleh OpenAI atau Anthropic di sini”: agent bekerja sesuai rancangannya.

Mengapa ini penting

File instruksi mudah terabaikan karena tampak seperti dokumentasi. Dalam praktiknya, file ini berfungsi seperti konfigurasi, dan melalui agent yang memiliki akses shell, file ini bisa berfungsi seperti kode. Tiga hal membuat risiko ini nyata:

  • Agent sering dijalankan di Downloads. Orang memakai agent untuk merapikan file atau mengolah sesuatu yang baru saja mereka unduh. Forever mengatakan kepada BleepingComputer bahwa ratusan pelanggannya menjalankan coding agent dari Downloads, dengan lebih dari 1.300 sesi Claude Code dimulai di sana.
  • Dampaknya bertahan lebih lama dari sesi. Konfigurasi global yang diubah, server MCP baru, atau API endpoint yang dialihkan tetap bekerja setelah file aslinya dihapus.
  • Kredensial adalah sasarannya. Session token agent yang dicuri adalah login yang berfungsi. Penyerang dapat menggunakannya tanpa menjalankan kode apa pun di mesin.

Pertahanan praktis

1. Pilih tempat agent dijalankan

  • Jangan pernah menjalankan coding agent di ~/Downloads, atau di folder mana pun yang ditulisi oleh browser, email, atau aplikasi chat. Pindahkan atau clone pekerjaan ke folder kerja khusus terlebih dahulu.
  • Hindari juga menjalankan agent di direktori home Anda. Jalankan di folder proyek yang spesifik. BleepingComputer mencatat bahwa OpenAI dan Anthropic merekomendasikan hal yang sama.
  • Pertimbangkan untuk mengatur browser agar menanyakan lokasi penyimpanan setiap unduhan. Ini menambah satu klik, tetapi menghentikan unduhan diam-diam.

2. Cari file instruksi yang tidak Anda tulis

Telusuri tempat-tempat file tidak tepercaya biasanya mendarat, ditambah folder home Anda. Di Linux dan macOS:

find ~/Downloads ~/Desktop ~ -maxdepth 3 \( -name AGENTS.md -o -name AGENTS.override.md -o -name CLAUDE.md -o -name CLAUDE.local.md \) -print 2>/dev/null | sort -u

Di Windows, melalui PowerShell:

Get-ChildItem $HOME\Downloads, $HOME\Desktop -Recurse -Depth 3 -Force -ErrorAction SilentlyContinue -Include AGENTS.md, AGENTS.override.md, CLAUDE.md, CLAUDE.local.md | Select-Object FullName, LastWriteTime

Baca setiap file yang Anda temukan sebelum agent mendekatinya. Waspadai instruksi untuk memasang paket, menambahkan server, mengubah API endpoint, atau mematikan persetujuan. Periksa juga file instruksi pribadi Anda, ~/.codex/AGENTS.md dan ~/.claude/CLAUDE.md, karena file ini berlaku untuk setiap sesi.

File instruksi proyek yang sah menjelaskan cara proyek di-build dan diuji. File tersebut tidak punya alasan untuk mengubah konfigurasi global agent, API endpoint-nya, atau pengaturan keamanannya. Perlakukan setiap file yang meminta perubahan semacam itu sebagai file berbahaya.

3. Periksa konfigurasi agent dari perubahan yang tidak Anda buat

Mengikuti saran Forever, cari blok server MCP yang tidak terduga, chatgpt_base_url yang berubah, atau ANTHROPIC_BASE_URL maupun API endpoint lain yang tidak Anda atur:

grep -nE '^\[mcp_servers|base_url' ~/.codex/config.toml
grep -nE 'BASE_URL|mcpServers' ~/.claude/settings.json .claude/settings.json .claude/settings.local.json .mcp.json 2>/dev/null

Tim yang menggunakan Claude Code dapat menerapkan pengaturan secara terpusat dengan managed settings. Mereka juga dapat menggunakan ConfigChange hooks untuk mengaudit atau memblokir perubahan pengaturan selama sesi.

4. Biarkan pengaman tetap aktif

  • Biarkan prompt persetujuan dan sandbox tetap aktif. Hindari flag yang melewatinya, seperti --dangerously-bypass-approvals-and-sandbox milik Codex atau --dangerously-skip-permissions milik Claude Code, di luar lingkungan sekali pakai.
  • Baca dengan cermat prompt persetujuan untuk file pengaturan dan konfigurasi. Dalam uji Claude Code, langkah persetujuan inilah yang menghentikan serangan sekitar separuh waktu.
  • Baca dialog workspace trust Claude Code sebelum menyetujuinya untuk folder baru.
  • Kerjakan repository dan unduhan yang tidak tepercaya di dalam mesin virtual atau dev container, bukan di workstation utama Anda.
  • Untuk npm, blokir paket MALFEX yang sudah diketahui dan pertimbangkan ignore-scripts untuk instalasi yang belum Anda tinjau.

5. Jika Anda menemukan file yang ditanam

  1. Jangan menjalankan agent di folder tersebut. Simpan salinan file untuk investigasi, lalu hapus dari folder.
  2. Periksa file konfigurasi agent yang disebutkan di atas dan hapus apa pun yang tidak Anda tambahkan.
  3. Anggap session token agent mungkin telah bocor. Keluar lalu masuk kembali, dan rotasi API key apa pun yang dapat dijangkau agent.
  4. Cari function-color dan function-flag di lockfile dan folder node_modules. Jika salah satunya pernah terpasang, anggap mesin telah disusupi dan ikuti proses respons insiden Anda.

Gambaran yang lebih besar

Judul tulisan Forever adalah “Markdown Is the New Executable”. Itu cara pandang yang berguna untuk setiap file yang dibaca agent sebagai instruksi. File instruksi menentukan apa yang akan dilakukan selanjutnya oleh agent dengan akses shell, sehingga file ini layak mendapat kehati-hatian yang sama seperti skrip: ketahui asalnya, tinjau perubahannya, dan jauhkan dari folder yang bisa ditulisi siapa saja di internet. Perbaikannya sebagian besar berupa kebiasaan, bukan patch, dan biaya penerapannya kecil.

Referensi