Backdoor Claude Code trên Cursor: kiểm tra máy

Backdoor Claude Code trên Cursor: kiểm tra máy

Ngày 29/10, khoảng 9 giờ sáng theo giờ Việt Nam, bạn mở Cursor và thấy tiện ích Claude Code tự cập nhật. Không có cảnh báo, không có dấu hiệu gì lạ. Bạn không cần chat với Claude, thậm chí không cần mở cửa sổ chat — chỉ cần extension được nạp là mã độc đã chạy.

Trong khoảng 11 giờ, một bản tiện ích bị đóng gói lại đã nằm trên Cursor Marketplace. Theo thông báo của Cursor, tối đa 5.000 người dùng có thể bị ảnh hưởng.

Payload 66 dòng: nó làm gì trong 4 bước

Cursor phát hiện sự cố ngày 29/10, từ 2:27 đến 13:35 giờ Pacific — tương đương 9:27 đến 20:35 UTC. Trong khoảng đó, bản Anthropic.claude-code phiên bản 2.1.312 và 2.1.313 trên Windows và macOS đã bị thay thế. Con số “5.000” cần đọc đúng: đó là tối đa 5.000 người dùng có thể đã nhận bản độc hại, không phải 5.000 máy đã bị chiếm.

Bản độc hại giống bản gốc về mọi thứ trừ một thứ: file extension.js bị chèn đoạn loader 66 dòng vào trước code thật. Loader chạy ngay khi extension được nạp, và hầu hết lỗi đều bị nuốt nên giao diện vẫn bình thường.

  1. Thu thập thông tin máy — hostname, tên người dùng, hệ điều hành, email Git và IP công cộng. Nó cũng liệt kê tên tối đa 40 biến môi trường chứa KEY, TOKEN, SECRET hoặc AWS.
  2. Cài khóa SSH công khai vào ~/.ssh/authorized_keys, gắn nhãn svc-telemetry để trông như tài khoản quản trị.
  3. Cố bật SSH và mở reverse SSH tunnel về máy chủ 134.209.82.225, lặp lại mỗi 60 giây bằng autossh.
  4. Cài persistence theo từng hệ điều hành: LaunchAgent com.apple.sysmond.plist trên macOS, cron @reboot trên Linux, task SysMon trên Windows.

Điểm đáng chú ý nhất: payload không cần bạn gõ gì, chỉ cần extension load là nó chạy.

Ai dính? Câu này cần nói chính xác

Đây là chỗ nhiều bài viết nói sai.

Bản 2.1.313 đã từng tồn tại trên Open VSX. StepSecurity, dựa trên phân tích sandbox và registry, ghi rõ bản này được publish lên Open-VSX vào khoảng 09:27 UTC ngày 29/10 rồi đồng bộ sang marketplace của Cursor, và bị gỡ khỏi cả hai nơi ngày 30/10. Tôi kiểm tra lại API của Open VSX ngày 31/10: 2.1.313 vắng mặt, còn 2.1.312 và 2.1.314 đều có.

Vậy nên “Open VSX không bị nhiễm” là sai, và “2.1.313 chưa bao giờ tồn tại” cũng sai. Điều đúng, theo Cursor và Anthropic, là: nguồn gốc là quyền truy cập marketplace của Cursor, không phải hệ thống của Anthropic. Các bản trên kênh chính thức của Anthropic không bị ảnh hưởng, và tính đến 31/10 Anthropic chưa có thông báo bảo mật chính thức cho khách hàng.

Có bằng chứng ngoài đời. Daylight Security báo cáo hai kỹ sư cùng một tổ chức, trên hai chiếc MacBook, đã chạy Cursor. Trong vòng 35 phút, tiến trình extension host trên cả hai máy làm những việc không IDE nào nên làm, và EDR cảnh báo trên cả hai điểm cuối. Bằng chứng này cho thấy payload đã chạy thật, nhưng không có nguồn nào xác nhận kẻ tấn công đã đăng nhập thành công vào máy nào.

Kiểm tra máy bạn trong 2 phút

Cursor cung cấp lệnh kiểm tra cho macOS:

bash
grep -qs svc-telemetry ~/.ssh/authorized_keys \
  && echo "svc-telemetry key found" \
  || echo "No key found; machine not impacted"

Trên Windows, kiểm tra cả %USERPROFILE%\.ssh\authorized_keys và C:\ProgramData\ssh\administrators_authorized_keys.

Nếu tìm thấy khóa, máy bạn đã bị ảnh hưởng. Nhưng đừng dừng ở lệnh trên — payload ghi khóa không có newline đầu dòng, nên trên một số máy nó bị dính vào cùng dòng với khóa hợp lệ của bạn. Cách xoá bằng grep -v svc-telemetry có thể xoá luôn khóa của bạn. Hãy xem nội dung text khóa thay vì đếm dòng.

Lưu ý

Dấu vết persistence cần dò: ~/.config/.smt, ~/.config/.smtk, $TMPDIR/.stk_*, LaunchAgent com.apple.sysmond.plist, cron @reboot, task SysMon.

Trên Linux, Cursor không phát hành script dọn dẹp — chỉ có remediate-macos.sh và remediate-windows.ps1. Nếu bạn dùng Cursor qua Remote-SSH hoặc VS Code Server để cài extension trên server Linux, đó là ca rủi ro cao nhất: extension chạy ngay trên máy chủ nơi sshd đang chạy sẵn.

Dọn dẹp: gỡ extension chưa đủ

Cursor đã gỡ bản độc hại, tắt hẳn marketplace, xoá key của mình rồi dựng lại từ đầu, và liên hệ nhà cung cấp hạ tầng để đưa máy chủ tấn công vô hiệu hoạt — nên reverse shell và beacon gửi thông tin máy không còn hoạt động. Nhưng khóa SSH vẫn nằm trong máy bạn, nên phải dọn.

Gỡ extension không đủ: payload thả các script persistence độc lập vẫn tiếp tục chạy. Trình tự an toàn:

  1. Chạy script dọn dẹp của Cursor cho đúng nền tảng (remediate-macos.sh, remediate-windows.ps1).
  2. Cập nhật extension lên 2.1.314 hoặc mới hơn.
  3. Rotate token và credential từ một máy sạch khác — Cursor cảnh báo việc thu thập biến môi trường hạn chế “không loại trừ việc truy cập credential sau đó” qua backdoor.
  4. Cân nhắc rebuild máy: OpenSourceMalware và StepSecurity đều khuyến nghị xây lại máy an toàn hơn là giả định dọn sạch artifact đã biết là đủ.
  5. Với Linux: backup crontab trước khi sửa, vì nhánh cron của payload có lỗi xoá mất cron job cũ của bạn.

Dù vậy, bước bật SSH cần quyền admin nên kẻ tấn công không đăng nhập được qua tunnel trên đa số máy.

Bài học cho đội IT Việt Nam: cho agent tài khoản riêng

Mấy thứ khó chịu nhất ở đây không phải payload. Đó là việc một tiện ích trình duyệt — thứ bạn cài để tiết kiệm vài giờ — chạy với đúng quyền của bạn và đọc được mọi thứ bạn đọc: source code, file khóa, token cloud.

Đây đúng là lớp rủi ro mà 5 lớp phòng thủ cho AI agent nói tới. Chỗ khác biệt: vấn đề không nằm ở hành vi của model, mà ở quyền truy cập marketplace và quyền của extension. Khác với open-weight model cắt dẹp liệu tấn công hay model AI ưu tiên phòng thủ, đây là rủi ro khác hẳn: kênh phân phối bị hỏng, không phải model hỏng.

Với đội IT ở Việt Nam, ba việc làm được ngay tuần này:

  • Cho agent chạy trên tài khoản riêng, máy riêng, không dùng tài khoản có quyền deploy hay SSH vào production.
  • Áp danh sách rõ ràng những gì agent được phép chạm vào, thay vì cho toàn quyền.
  • Duy trì danh sách extension đã cài và kiểm tra phiên bản định kỳ, vì lần này bản độc hại vẫn mang ID của Anthropic.

Nguồn tham khảo

  1. Security notice: Anthropic.claude-code 2.1.312 và 2.1.313, Cursor (29–30/10/2026) — https://cursor.com/blog/claude-code-extension-security-notice
  2. Trojanized Claude Code Extension Plants an SSH Backdoor, OpenSourceMalware (30/10/2026) — https://opensourcemalware.com/blog/trojanized-claude-code-extension-plants-persistent-ssh-backdoor
  3. Official Claude Code Extension Compromise, Phorion (30/10/2026) — https://phorion.io/blog/offical-claude-code-vsx-compromise/
  4. Trojanized Claude Code extension opening SSH tunnels, Daylight Security (30/10/2026) — https://daylight.ai/blog/trojan-claude-code-extension-ssh-tunnels-developer-macs
  5. Trojanized Claude Code Extension Delivered Persistent SSH Backdoor, StepSecurity (30/10/2026) — https://www.stepsecurity.io/blog/claude-code-extension-trojanized
  6. Claude Code Extension Backdoored on Open VSX and Cursor, CellCog (30/10/2026) — https://cellcog.ai/blog/claude-code-extension-backdoor/
  7. Official Claude Code Extension on Cursor Marketplace Trojanized, The Hacker News (30/10/2026) — https://thehackernews.com/2026/10/official-claude-code-vs-code-extension.html

Leave a Reply