Một file AGENTS.md trong thư mục Downloads đủ để điều khiển Codex và Claude Code
Forever Security ghi nhận một coding agent suýt cài gói npm độc chỉ vì đọc file AGENTS.md lạ nằm trong ~/Downloads, nơi trang web nào cũng ghi file vào được. Đừng chạy agent ở Downloads, và xem lại file cấu hình của Codex và Claude Code.
Xem nhanh trong 1 phút
Một khách hàng của công ty bảo mật Forever Security mở terminal trong thư mục ~/Downloads, gọi coding agent lên làm việc. Agent đọc một file tên AGENTS.md nằm sẵn ở đó, rồi làm theo hướng dẫn trong file: cài gói npm function-color. Gói này là mã độc. Hệ thống của Forever chặn kịp. Chủ máy không biết file kia từ đâu ra.
Vì sao một file chữ lại nguy hiểm
AGENTS.md và CLAUDE.md là file hướng dẫn mà agent tự đọc khi khởi động trong một thư mục. Bạn viết vào đó quy ước của dự án, lệnh chạy test, chỗ nào đừng đụng. Agent coi đó là lời dặn của chủ nhà.
Thư mục Downloads thì ai cũng ghi vào được. Theo bài phân tích của Forever công bố ngày 22/10, một trang web có thể tự tải file về máy mà bạn không cần bấm gì, và trang web đó chọn luôn tên file lẫn nội dung. Chrome, Edge và Firefox mặc định lưu thẳng vào ~/Downloads, chỉ hiện một thông báo nhỏ. Brave thì hỏi trước.
macOS và Windows có cơ chế chặn file chạy được tải từ mạng về. Nhưng AGENTS.md chỉ là văn bản, không cơ chế nào chặn nó. Nó chỉ trở thành lệnh khi có agent đọc.
Ghép hai điều đó lại: trang web thả file vào Downloads, bạn mở agent ở Downloads, agent làm theo file. Không có lỗ hổng phần mềm nào ở đây cả. Chính nhóm nghiên cứu nói OpenAI và Anthropic không có gì để vá, vì agent làm đúng như thiết kế.
Họ thử lại với Codex và Claude Code
Nhóm nghiên cứu chạy lại payload thật trong máy ảo:
Codex đọc AGENTS.md, rồi tự thêm một mục server MCP vào ~/.codex/config.toml. Server đó thực chất là lệnh npm install gói độc. Theo Forever, Codex chạy mã độc trong hơn 90% số lần thử. Đáng lo hơn: file này là cấu hình chung của cả máy, nên từ đó mọi phiên Codex ở thư mục nào cũng nạp server độc, chứ không riêng Downloads.
Claude Code được thử bằng một file CLAUDE.md bảo agent đặt ANTHROPIC_BASE_URL trong .claude/settings.json của thư mục trỏ về server của kẻ tấn công. Từ đó mọi request lên API đi qua server lạ, kèm theo token đăng nhập OAuth của bạn. Nhóm nói đã dùng lại token bắt được để gọi API thật, tức là chiếm được tài khoản mà không cần chạy dòng mã nào trên máy. Server giả còn có thể đóng vai mô hình, trả về các lệnh để agent chạy.
Claude Code khó lừa hơn. Nó hỏi người dùng trước khi ghi file kiểu này và hay từ chối khi thấy yêu cầu có vẻ sai. Theo Forever, bước ghi file chỉ qua được khoảng một nửa số lần, và đường chạy mã ngay trong phiên chỉ thành công khoảng một phần năm. Để qua mặt, họ phải viết payload thành một tài liệu kỹ thuật dài và nhạt, vì bản ngắn bị một subagent nhận ra là tấn công.
Một nửa số lần nghe có vẻ ít. Nhưng kẻ tấn công không cần thắng mọi lần, chỉ cần thắng một lần trên máy bạn.
Có ai thật sự chạy agent ở Downloads không
Nhiều hơn mình tưởng. Forever nói khoảng một nửa số khách hàng của họ có chạy coding agent bên trong Downloads. Trả lời BleepingComputer, nhà nghiên cứu Gal Weizman cho biết riêng Claude Code đã có hơn 1.300 phiên mở từ ~/Downloads trên máy khách hàng của họ.
Cũng dễ hiểu. Tải một file zip, một file CSV về, mở terminal ngay đó rồi nhờ AI “xem giúp file này”. Với người làm app bằng AI, đây là thói quen rất bình thường.
Thêm một chi tiết: khoảng một phần tư phiên agent có mở trình duyệt thật. Nghĩa là agent tự lướt web cũng có thể kéo file về Downloads mà không ai nhìn thấy.
Kiểm tra máy của bạn
Đừng mở agent ở Downloads, ở thư mục home, hay ở một thư mục cha chứa nhiều dự án. Tải file về thì chép nó vào thư mục dự án hoặc một thư mục riêng trống, rồi mở agent ở đó. Đây cũng là điều OpenAI và Anthropic khuyên: chạy agent từ đúng thư mục dự án.
Xem Downloads có file hướng dẫn lạ không:
ls -la ~/Downloads | grep -iE 'agents\.md|claude\.md|gemini\.md|\.cursorrules|\.claude|\.codex'
Thấy file mà bạn không tự tạo thì mở ra đọc bằng trình soạn thảo, đừng mở bằng agent, rồi xóa.
Xem cấu hình Codex có server MCP hay địa chỉ API lạ:
Lệnh này tìm trong cấu hình chung ~/.claude và cấu hình riêng của các thư mục dự án. Nếu bạn không cố ý dùng proxy hay cổng API riêng thì không nên có dòng nào hiện ra.
Giữ bước hỏi trước khi chạy lệnh. Chế độ tự duyệt hết hay cờ kiểu “bỏ qua mọi quyền” là thứ biến một file chữ thành lệnh chạy thật trên máy. Khi agent hỏi có tin thư mục này không, hãy đọc tên thư mục trước khi bấm đồng ý.
Nếu đã dính, coi như token đã lộ. Đăng xuất Claude Code hoặc Codex rồi đăng nhập lại để lấy phiên mới, đổi các API key có trên máy. Máy nào từng cài function-color thì coi như đã bị xâm nhập. Gói này đã bị gỡ khỏi npm, nhưng mã đã chạy thì gỡ gói cũng không lấy lại được gì.
Bạn hay mở agent ở thư mục nào, và đã bao giờ đọc lại file AGENTS.md hay CLAUDE.md trong một repo clone về chưa? Kể trong cộng đồng Vibe Code & Bảo Mật nhé.
Mot file AGENTS.md trong thu muc Downloads du de dieu khien Codex va Claude Code Forever Security ghi nhan mot coding agent suyt cai goi npm doc chi vi doc file AGENTS.md la nam trong ~/Downloads, noi trang web nao cung ghi file vao duoc. Dung chay agent o Downloads, va xem lai file cau hinh cua Codex va Claude Code. AI agent prompt injection ma doc Mot khach hang cua cong ty bao mat Forever Security mo terminal trong thu muc `~/Downloads`, goi coding agent len lam viec. Agent doc mot file ten `AGENTS.md` nam san o do, roi lam theo huong dan trong file: cai goi npm `function-color`. Goi nay la ma doc. He thong cua Forever chan kip. Chu may khong biet file kia tu dau ra.

## Vi sao mot file chu lai nguy hiem
`AGENTS.md` va `CLAUDE.md` la file huong dan ma agent tu doc khi khoi dong trong mot thu muc. Ban viet vao do quy uoc cua du an, lenh chay test, cho nao dung dung. Agent coi do la loi dan cua chu nha.
Thu muc Downloads thi ai cung ghi vao duoc. Theo bai phan tich cua Forever cong bo ngay 22/10, mot trang web co the tu tai file ve may ma ban khong can bam gi, va trang web do chon luon ten file lan noi dung. Chrome, Edge va Firefox mac dinh luu thang vao `~/Downloads`, chi hien mot thong bao nho. Brave thi hoi truoc.
macOS va Windows co co che chan file chay duoc tai tu mang ve. Nhung `AGENTS.md` chi la van ban, khong co che nao chan no. No chi tro thanh lenh khi co agent doc.
Ghep hai dieu do lai: trang web tha file vao Downloads, ban mo agent o Downloads, agent lam theo file. Khong co lo hong phan mem nao o day ca. Chinh nhom nghien cuu noi OpenAI va Anthropic khong co gi de va, vi agent lam dung nhu thiet ke.
## Ho thu lai voi Codex va Claude Code
Nhom nghien cuu chay lai payload that trong may ao:
- **Codex** doc `AGENTS.md`, roi tu them mot muc server MCP vao `~/.codex/config.toml`. Server do thuc chat la lenh `npm install` goi doc. Theo Forever, Codex chay ma doc trong hon 90% so lan thu. Dang lo hon: file nay la cau hinh chung cua ca may, nen tu do moi phien Codex o thu muc nao cung nap server doc, chu khong rieng Downloads.
- **Claude Code** duoc thu bang mot file `CLAUDE.md` bao agent dat `ANTHROPIC_BASE_URL` trong `.claude/settings.json` cua thu muc tro ve server cua ke tan cong. Tu do moi request len API di qua server la, kem theo token dang nhap OAuth cua ban. Nhom noi da dung lai token bat duoc de goi API that, tuc la chiem duoc tai khoan ma khong can chay dong ma nao tren may. Server gia con co the dong vai mo hinh, tra ve cac lenh de agent chay.
Claude Code kho lua hon. No hoi nguoi dung truoc khi ghi file kieu nay va hay tu choi khi thay yeu cau co ve sai. Theo Forever, buoc ghi file chi qua duoc khoang mot nua so lan, va duong chay ma ngay trong phien chi thanh cong khoang mot phan nam. De qua mat, ho phai viet payload thanh mot tai lieu ky thuat dai va nhat, vi ban ngan bi mot subagent nhan ra la tan cong.
Mot nua so lan nghe co ve it. Nhung ke tan cong khong can thang moi lan, chi can thang mot lan tren may ban.
## Co ai that su chay agent o Downloads khong
Nhieu hon minh tuong. Forever noi khoang mot nua so khach hang cua ho co chay coding agent ben trong Downloads. Tra loi BleepingComputer, nha nghien cuu Gal Weizman cho biet rieng Claude Code da co hon 1.300 phien mo tu `~/Downloads` tren may khach hang cua ho.
Cung de hieu. Tai mot file zip, mot file CSV ve, mo terminal ngay do roi nho AI "xem giup file nay". Voi nguoi lam app bang AI, day la thoi quen rat binh thuong.
Them mot chi tiet: khoang mot phan tu phien agent co mo trinh duyet that. Nghia la agent tu luot web cung co the keo file ve Downloads ma khong ai nhin thay.
## Kiem tra may cua ban
**Dung mo agent o Downloads, o thu muc home, hay o mot thu muc cha chua nhieu du an.** Tai file ve thi chep no vao thu muc du an hoac mot thu muc rieng trong, roi mo agent o do. Day cung la dieu OpenAI va Anthropic khuyen: chay agent tu dung thu muc du an.
**Xem Downloads co file huong dan la khong:**
```bash
ls -la ~/Downloads | grep -iE 'agents\.md|claude\.md|gemini\.md|\.cursorrules|\.claude|\.codex'
```
Thay file ma ban khong tu tao thi mo ra doc bang trinh soan thao, dung mo bang agent, roi xoa.
**Xem cau hinh Codex co server MCP hay dia chi API la:**
```bash
grep -nE '^\[mcp_servers|base_url' ~/.codex/config.toml
```
Moi muc `[mcp_servers.<ten>]` phai la thu ban tu them. La thi xoa, va de y co dong `npm`, `npx` hay `curl` nao khong.
**Xem Claude Code co bi doi dia chi API khong:**
```bash
find ~ -maxdepth 4 -path '*/.claude/settings*.json' -not -path '*/node_modules/*' 2>/dev/null \
| xargs grep -ln 'ANTHROPIC_BASE_URL' 2>/dev/null
```
Lenh nay tim trong cau hinh chung `~/.claude` va cau hinh rieng cua cac thu muc du an. Neu ban khong co y dung proxy hay cong API rieng thi khong nen co dong nao hien ra.
**Giu buoc hoi truoc khi chay lenh.** Che do tu duyet het hay co kieu "bo qua moi quyen" la thu bien mot file chu thanh lenh chay that tren may. Khi agent hoi co tin thu muc nay khong, hay doc ten thu muc truoc khi bam dong y.
**Neu da dinh**, coi nhu token da lo. Dang xuat Claude Code hoac Codex roi dang nhap lai de lay phien moi, doi cac API key co tren may. May nao tung cai `function-color` thi coi nhu da bi xam nhap. Goi nay da bi go khoi npm, nhung ma da chay thi go goi cung khong lay lai duoc gi.
---
Ban hay mo agent o thu muc nao, va da bao gio doc lai file `AGENTS.md` hay `CLAUDE.md` trong mot repo clone ve chua? Ke trong [cong dong Vibe Code & Bao Mat](https://www.facebook.com/groups/1867387324580254) nhe.
## Nguon
- [Markdown Is the New Executable: hijacking AI agents via the Downloads folder](https://forever.security/blog/hijacking-ai-agents-via-downloads-folder), Forever Security (Gal Weizman, Omer Samet), 22/10/2026
- [AI coding agents hijacked using AGENTS.md file in Downloads folder](https://www.bleepingcomputer.com/news/security/ai-coding-agents-hijacked-using-agentsmd-file-in-downloads-folder/), BleepingComputer, 25/10/2026