Chia sẻ đam mê công nghệ
Cập nhật

Tệp Markdown trong Downloads có thể biến AI agent thành đường chạy mã độc

Một tệp hướng dẫn bị cài vào Downloads có thể khiến coding agent sửa cấu hình, cài gói độc hại hoặc chuyển lưu lượng API. Rủi ro nằm ở quyền agent được giao.

Khung hình thử nghiệm với AGENTS.md trong Downloads, cấu hình Codex bị sửa và cửa sổ máy tính được mở
Tệp AGENTS.md trong Downloads dẫn tới thay đổi cấu hình Codex; cửa sổ máy tính cho thấy chương trình thử nghiệm đã chạy. Ảnh: Forever Security, trích video minh chứng.

Tóm tắt nhanh

  • Forever Security phát hiện một tệp AGENTS.md trong Downloads tìm cách khiến coding agent cài gói npm độc hại; hãng cho biết đã chặn trước khi mã chạy.
  • Trong thử nghiệm, chỉ dẫn giả dạng tài liệu kỹ thuật có thể khiến Codex sửa cấu hình toàn máy, còn biến thể trên Claude Code chuyển hướng kết nối API.
  • Tệp Markdown không tự thực thi. Nguy hiểm xuất hiện khi agent đọc nội dung không đáng tin rồi dùng quyền công cụ để làm theo.
  • Không dùng Downloads làm thư mục làm việc của agent; giữ sandbox và bước phê duyệt, đồng thời kiểm tra thay đổi cấu hình cùng địa chỉ API.

Forever Security vừa công bố một tình huống tấn công trên máy khách hàng: tệp AGENTS.md nằm trong thư mục Downloads đã hướng coding agent tới việc cài function-color, một gói npm độc hại. Theo báo cáo, hành động này bị chặn trước khi mã chạy; các thử nghiệm tiếp theo mới cho thấy chuỗi tấn công có thể đi xa đến đâu trên Codex và Claude Code.

Điểm đáng lo không phải đuôi .md bỗng có khả năng tự chạy như một chương trình. Coding agent có thể đọc văn bản, sửa tệp rồi gọi công cụ trên máy, nên một tài liệu giả dạng hướng dẫn dự án có cơ hội biến thành mệnh lệnh nếu được tin nhầm. Thư mục tải về trở thành nơi nối nội dung từ web với quyền thực thi mà người dùng đã giao cho agent.

Downloads trở thành điểm nối giữa trình duyệt và agent

Thư mục làm việc của agent cần có mức tin cậy khác thư mục nhận tệp từ trình duyệt. AGENTS.md và CLAUDE.md thường chứa quy ước dự án, giúp công cụ biết cách làm việc mà người dùng không phải nhắc lại ở mỗi phiên. Nhưng tên tệp đúng không chứng minh người viết đáng tin, nhất là khi nó xuất hiện trong Downloads.

Trong kịch bản tái lập, trang web do nhóm nghiên cứu kiểm soát khiến một tệp chỉ dẫn được tải vào Downloads, sau đó agent được mở tại thư mục này. Báo cáo mô tả khả năng tải tệp văn bản mà không có bước xác nhận riêng; điều đó không đồng nghĩa mọi trình duyệt, mọi cấu hình tải xuống đều cho phép chuỗi tấn công diễn ra như nhau. Agent vẫn phải đọc tệp và làm theo thì nội dung mới dẫn đến hành động.

Riêng trường hợp Codex, một điều kiện quan trọng là thư mục đã được công cụ coi là dự án đáng tin. Vì vậy, chỉ truy cập một website không đủ để kết luận máy đã nhiễm mã độc. Nguy cơ tăng khi người dùng từng làm việc trong Downloads, rồi tiếp tục mở agent ở đó mà không kiểm tra các tệp mới xuất hiện.

Theo dữ liệu nội bộ của Forever Security, khoảng một nửa khách hàng của hãng có chạy coding agent trong Downloads, còn khoảng một phần tư phiên agent mở trình duyệt thật. Đây là số liệu trên tập khách hàng của hãng, không phải tỷ lệ đại diện cho toàn bộ lập trình viên. Dù vậy, nó cho thấy thói quen làm việc này có tồn tại, thay vì chỉ là điều kiện được dựng riêng trong phòng thử nghiệm.

Sửa cấu hình có thể khiến tác hại vượt khỏi thư mục ban đầu

Chỉ dẫn độc hại nguy hiểm nhất khi nó tự khoác vai trò chuẩn bị môi trường, rồi yêu cầu agent đổi cách vận hành của chính mình. Tệp nhắm vào Codex được viết như tài liệu kỹ thuật dài, với phần thiết lập công cụ đặt gần cuối. Nội dung hướng agent thêm một máy chủ công cụ MCP vào tệp cấu hình toàn máy, thay vì chỉ sửa một tệp của dự án.

Đích sửa là ~/.codex/config.toml. Khi một đăng ký máy chủ độc hại tồn tại trong cấu hình này, rủi ro có thể theo sang các phiên ở thư mục khác; chuyển khỏi Downloads chưa chắc loại bỏ được thay đổi đã ghi xuống đĩa. Đây là khác biệt đáng kể giữa một câu trả lời sai của chatbot và một agent có quyền sửa môi trường thực thi.

Chuỗi thử nghiệm còn tìm cách khởi tạo một phiên Codex mới để nạp cấu hình ngay, yêu cầu bỏ qua phê duyệt và sandbox dưới lý do cần mạng để chuẩn bị công cụ. Tệp sử dụng cơ chế khởi chạy tác vụ của macOS để việc cài đặt không bị dừng cùng tiến trình máy chủ công cụ. Những chi tiết ấy cho thấy đây không đơn thuần là một dòng “hãy cài gói này”, mà là cách dùng lời giải thích kỹ thuật để thúc agent tháo các chốt đang cản hành động.

Forever Security công bố tỷ lệ thành công trên Codex hơn 90% trong các lần thử của hãng. Cần đọc con số này cùng phần phương pháp: phần lớn thử nghiệm dùng chương trình thay thế vô hại chỉ mở ứng dụng máy tính; gói độc hại thật cũng được chạy một lần trong máy ảo cô lập. Không nên diễn giải thành hơn 90% người dùng Codex đã bị nhiễm, hay mọi lần thử đều dùng mã độc thật.

Với vụ việc ban đầu, hãng xác định gói bị yêu cầu cài là function-color và cho biết npm đã gỡ gói này. Việc gỡ một gói cụ thể không xử lý hết vấn đề tin cậy: agent vẫn có thể gặp tài liệu khác yêu cầu đổi cấu hình hoặc tải một công cụ chưa được kiểm tra.

Chuyển hướng API là đường đánh khác với cài mã độc

Một agent không cần cài thành công gói phần mềm lạ mới gây ra thiệt hại. Với Claude Code, biến thể do nhóm nghiên cứu xây dựng dùng CLAUDE.md để dụ công cụ ghi địa chỉ API do họ kiểm soát vào cấu hình dự án, thông qua biến ANTHROPIC_BASE_URL.

Khi kết nối được chuyển sang máy chủ đó, token OAuth có thể bị gửi cho bên kiểm soát điểm cuối. Báo cáo cho biết nhóm nghiên cứu đã dùng token thu được để truy cập API thật dưới danh tính nạn nhân thử nghiệm. Máy chủ giả còn có thể trả về lời gọi công cụ như thể đó là phản hồi từ mô hình, mở thêm đường dẫn tới thực thi lệnh.

Theo Forever Security, Claude Code làm theo việc đổi cấu hình khoảng 50% số lần thử. Đây không phải cùng một phép đo với tỷ lệ trên Codex: một bên đo chuỗi dẫn tới chạy chương trình, bên kia mô tả khả năng thúc công cụ ghi cấu hình chuyển hướng. Lấy hai tỷ lệ để xếp hạng độ an toàn tổng thể của hai sản phẩm sẽ vượt quá những gì thử nghiệm chứng minh.

Thời điểm nạp cấu hình cũng ảnh hưởng kết quả. Phiên đang chạy có thể giữ kết nối cũ, còn lần mở tiếp theo mới dùng địa chỉ mới; nhóm nghiên cứu còn thử dụ agent tạo tác vụ phụ để mở kết nối mới ngay trong phiên. Khoảng một phần năm số lần thử thực hiện bước này, theo báo cáo, nên không thể gộp tất cả thành một tỷ lệ “thực thi mã ngay lập tức”.

Nhóm nghiên cứu cũng ghi nhận kết quả thay đổi theo nội dung thư mục: cùng tài liệu có thể bị nhận diện là tấn công khi xuất hiện giữa các ghi chú bảo mật. Điều đó nhấn mạnh giới hạn của số liệu thử nghiệm, đồng thời cho thấy một tài liệu trông bình thường có thể tác động đến quyết định của agent.

Với nhóm phát triển nhỏ, tách thư mục thôi chưa đủ

Không chạy agent trong Downloads là bước phòng thủ dễ làm, nhưng quyền sửa cấu hình mới là thứ cần kiểm soát tiếp theo. Với cá nhân hoặc nhóm phát triển nhỏ dùng chung một máy cho công việc và tài khoản dịch vụ, thay đổi địa chỉ API có thể đe dọa phiên đăng nhập ngay cả khi chưa thấy tệp thực thi đáng ngờ nào xuất hiện.

Nên đưa dự án vào thư mục riêng, kiểm tra AGENTS.md hoặc CLAUDE.md trước khi mở agent và chỉ mang sang những tệp cần thiết. Tuy nhiên, thư mục riêng không tự trở nên an toàn nếu người dùng sao chép nguyên tài liệu lạ từ Downloads hoặc tin ngay mọi chỉ dẫn trong kho mã vừa tải về. Nguồn gốc của tệp quan trọng hơn vị trí hay tên gọi của nó.

Sandbox cùng bước phê duyệt cần được giữ hoạt động, đặc biệt với yêu cầu cài công cụ, sửa cấu hình toàn máy hoặc đổi điểm cuối API. Một chỉ dẫn tự nhận là “thiết lập tiêu chuẩn của dự án” không phải lý do đủ để tắt các lớp này. Phần cấu hình bảo vệ cũng cần nằm ngoài phạm vi mà agent được tùy ý sửa, nếu không chính công cụ có thể bị dụ thay đổi giới hạn của mình.

Khi nghi bị tác động, cần xem các mục MCP bất thường trong cấu hình Codex, địa chỉ API trong cấu hình dự án Claude Code và những gói vừa được cài. Xóa tệp Markdown không hoàn tác thay đổi cấu hình đã xảy ra. Nếu điểm cuối kết nối từng bị chuyển sang địa chỉ lạ, nên thu hồi phiên và thay token liên quan thay vì chờ thấy dấu hiệu sử dụng trái phép.

Báo cáo mô tả sự lạm dụng cơ chế đọc chỉ dẫn, không chứng minh một lỗi zero-day trong mã nguồn của OpenAI hay Anthropic. Nhưng “hoạt động đúng thiết kế” cũng không có nghĩa người dùng phải chấp nhận rủi ro: nội dung từ web không nên có quyền quyết định agent gửi thông tin xác thực đi đâu, hay tự nới giới hạn thực thi chỉ vì nó nằm trong một tệp có tên quen thuộc.

Nguồn tham khảo: Forever Security: báo cáo gốc và phương pháp thử nghiệm; The Hacker News; TechRadar.

Bài này thế nào?

Hoá đơn của bài này

Tek viết bài này bằng cà phê. Mời Tek một ly nha?

Theo dõi TekCafe: Facebook · YouTube

Bài viết mới nhất