Backdoor trong extension Claude Code: chuyện gì đã xảy ra và cách kiểm máy

Bản sửa độc hại của extension Claude Code trên marketplace Cursor ngày 29/10/2026: payload làm gì, kiểm máy bằng một lệnh, cách xử lý và bốn thói quen.

Đã duyệt độc lập · cập nhật 02/11/2026 · 9 min

1. Một cái tên quen, một package đã bị sửa

Theo thông báo bảo mật của Cursor và bài phân tích của Phorion (video đăng ngày 01/11/2026), ngày 29/10/2026, trong khoảng 11 giờ, một phiên bản đã bị chỉnh sửa của extension Claude Code có mặt trên extension marketplace của Cursor. Máy nào đã cài nó thì bị cài thêm SSH key của kẻ tấn công, bị dựng một chương trình ẩn để tự chạy lại sau mỗi lần khởi động lại máy, và bị gửi thông tin về máy tới một server. Cũng theo video đăng ngày 01/11/2026, Cursor nói các phiên bản độc hại này không phải do Anthropic phát triển.

Slide mở đầu: A trusted name. A planted key. Cursor marketplace, 29 Oct 2026, versions 2.1.312 và 2.1.313
Slide mở đầu của nhóm SimpleTech: "A trusted name. A planted key.", marketplace của Cursor ngày 29/10/2026, hai phiên bản 2.1.312 và 2.1.313, trên macOS và Windows (slide trong video đăng ngày 01/11/2026).

Nhóm SimpleTech nói người xem sẽ học ba điều: package đó thực sự đã làm gì, cách kiểm máy của mình bằng một lệnh, và những thói quen giúp bảo vệ mình trước vụ kế tiếp (video đăng ngày 01/11/2026). Để cho thấy vì sao một extension của editor lại có nhiều quyền đến thế, nhóm dùng app mẫu của mình là TaskFlow, một app theo dõi task nhỏ viết bằng React và Express. TaskFlow là một app mẫu do nhóm làm để minh hoạ (video đăng ngày 01/11/2026).

2. Hai nguồn và dòng thời gian

Theo video đăng ngày 01/11/2026, mọi thông tin trong video đến từ hai nguồn đã công bố: thông báo bảo mật của Cursor và một bản advisory kỹ thuật của công ty bảo mật Phorion. Nhóm SimpleTech không tự chạy hay tự phân tích malware.

Dòng thời gian, theo thông báo của Cursor như video đăng ngày 01/11/2026 trình bày: Cursor đăng thông báo ngày 29/10/2026. Thông báo nêu tên package là Anthropic.claude-code, hai phiên bản 2.1.312 và 2.1.313. Với Windows và macOS, Cursor nói các phiên bản bị sửa có mặt trên marketplace từ khoảng 2:27 sáng tới 1:35 chiều giờ Pacific ngày hôm đó.

Slide What Cursor and Phorion published: modified package published, marketplace shut down and rebuilt
Slide "What Cursor and Phorion published": ô 29 October ghi khoảng 2:27am đến 1:35pm PT theo thông báo của Cursor, ô Marketplace response ghi gỡ bỏ, đóng, kiểm tra, dựng lại (slide trong video đăng ngày 01/11/2026).

Theo thông báo của Cursor (video đăng ngày 01/11/2026), Cursor gỡ các phiên bản đó, rồi đóng toàn bộ marketplace để phòng ngừa, kiểm tra lại quyền truy cập, xoay vòng (rotate) các key của mình, dựng lại marketplace và đưa nó hoạt động trở lại. Cursor cũng làm việc với nhà cung cấp hosting để đưa server của kẻ tấn công xuống. Cursor nói không có bằng chứng nào cho thấy các phiên bản khác hay bản phân phối chính thức bị ảnh hưởng.

Ngày hôm sau, Phorion đăng một advisory chi tiết, và sau đó thêm số phiên bản thứ hai khi Cursor cập nhật thông báo của mình (video đăng ngày 01/11/2026; trang của Phorion ghi phiên bản được thêm vào là 2.1.312, đọc ngày 02/11/2026). Khi nhóm SimpleTech kiểm tra vào ngày 01/11/2026, nhóm không tìm thấy một thông báo riêng nào từ Anthropic, nên video chỉ trích Cursor và Phorion.

3. Vì sao một extension làm được nhiều đến vậy

Nhóm SimpleTech đặt một tình huống: bạn đang build TaskFlow trong editor. Project của bạn, các thiết lập git và thư mục SSH đều thuộc về user account của bạn (video đăng ngày 01/11/2026). Phorion nói thẳng điều này: extension chạy với quyền của editor và của user đang chạy nó, nên một extension có backdoor có ngay quyền truy cập vào file trên máy, source code và các công cụ dành cho developer (bài của Phorion, video đăng ngày 01/11/2026).

Để minh hoạ, nhóm tự viết một extension vô hại cho việc giảng dạy tên là TaskFlow Helper. Theo video đăng ngày 01/11/2026, nó không đọc gì và không gửi gì đi. Nó chỉ ghi lại lúc nào code của nó chạy. Dòng code ở đầu file chạy ngay khi editor nạp file. Hàm activate chạy sau đó.

Slide Why an extension can do so much, với file demo-extension/extension.js và ô Your user's permissions
Slide "Why an extension can do so much": bên trái là file demo-extension/extension.js của TaskFlow Helper, ghi "Our own harmless example • 1 test passed"; bên phải là ô "Your user's permissions" với file, Git config và thư mục SSH (slide trong video đăng ngày 01/11/2026).

Bài test của nhóm nạp file đó và kiểm thứ tự chạy, và bài test pass: phần code ở top-level đã chạy trước khi activate được gọi (demo trong video đăng ngày 01/11/2026). Theo video, điều này quan trọng vì Phorion thấy đoạn code độc hại được đặt ở ngay đầu file chính của extension. Nó chạy ngay khi file được nạp, người dùng không cần bấm vào bất cứ thứ gì (video đăng ngày 01/11/2026).

4. Bốn việc payload đã thử

Theo cả hai nguồn (video đăng ngày 01/11/2026), payload đã thử làm bốn việc:

  1. Thêm public key của kẻ tấn công vào file SSH authorized keys của bạn, với nhãn svc-telemetry. Ai giữ private key tương ứng đều có thể đăng nhập vào máy dưới tên bạn, nếu SSH đang chạy (theo Cursor và Phorion, video đăng ngày 01/11/2026).
  2. Thử bật dịch vụ SSH của máy (theo Cursor và Phorion, video đăng ngày 01/11/2026).
  3. Mở một SSH tunnel đi ra ngoài tới server của kẻ tấn công, để kẻ tấn công có thể vào ngược lại máy qua chính kết nối đó. Một vòng lặp retry dựng lại tunnel khoảng mỗi 60 giây (theo Cursor và Phorion, video đăng ngày 01/11/2026).
  4. Tự làm cho mình tồn tại lâu dài (persistent). Trên macOS, nó tạo một launch agent được đặt tên để trông giống một dịch vụ hệ thống của Apple. Trên Windows, nó thử tạo một scheduled task tên SysMon, và dùng một script trong thư mục Startup làm phương án dự phòng (theo Cursor và Phorion, video đăng ngày 01/11/2026).
Slide Four things the payload tried: add key vào ~/.ssh/authorized_keys, open tunnel tới attacker server
Slide "Four things the payload tried" với hai mục đầu: thêm key vào ~/.ssh/authorized_keys (nhãn svc-telemetry) và mở tunnel tới server của kẻ tấn công (retry khoảng mỗi 60 giây). Dòng chú thích ghi "Described by Cursor and Phorion • we did not run the malware" (slide trong video đăng ngày 01/11/2026).

Song song với tất cả những việc đó, theo hai nguồn (video đăng ngày 01/11/2026), payload gửi đi một báo cáo một lần, gồm: hostname, username, hệ điều hành, thư mục home, email git, địa chỉ IP public, và tên của các biến môi trường trông giống secret. Phorion ghi chú rằng nó thu thập tên biến, không lấy giá trị.

5. Mức độ nghiêm trọng: bước nào hỏng, bước nào vẫn chạy

Vậy vụ này tệ đến mức nào? Theo video đăng ngày 01/11/2026, cả hai nguồn đều mô tả một chỗ hỏng trong cuộc tấn công. Bật dịch vụ SSH cần quyền administrator. Cursor nói rằng, ngoài những trường hợp rất bất thường, ví dụ Cursor đang chạy với quyền administrator, bước này sẽ thất bại vì lỗi trong chính đoạn code độc hại.

Phorion tìm ra một trong những lỗi đó trên macOS (theo video đăng ngày 01/11/2026). Script hỏi macOS xem remote login có đang tắt không, nhưng khi không có quyền administrator, macOS trả về một thông báo lỗi thay cho câu trả lời. Script tìm chữ "off", không thấy, và bỏ qua bước bật SSH. Từ đó Cursor kết luận rằng trên những máy như vậy, kẻ tấn công không thể đăng nhập qua tunnel.

Slide What worked, and what failed: SSH enable step failed (most hosts), key + persistence installed, host report sent
Slide "What worked, and what failed": bước bật SSH thất bại (trên đa số máy), key và persistence đã được cài, báo cáo về máy đã được gửi; bên phải là "A bug in the attack", "Login likely blocked" và "Still compromised", kèm câu trích Cursor "Follow the remediation steps below regardless." (slide trong video đăng ngày 01/11/2026).

Nhưng theo nhóm SimpleTech (video đăng ngày 01/11/2026), đừng đọc điều này thành "an toàn". Cursor nói rõ extension vẫn đã thêm key của kẻ tấn công, vẫn cài persistence và vẫn gửi thông tin về máy. Phorion bổ sung: nếu remote login đã bật sẵn, hoặc được bật lên sau này, thì backdoor đã sẵn sàng. Lời khuyên của Cursor là vẫn làm theo các bước khắc phục dù thế nào đi nữa.

6. Kiểm máy bằng một lệnh

Theo video đăng ngày 01/11/2026, thông báo của Cursor đưa ra một lệnh một dòng cho macOS. Lệnh này tìm chữ svc-telemetry trong file SSH authorized keys của bạn. Nếu nó in ra dòng báo đã tìm thấy key, máy của bạn bị ảnh hưởng. Lệnh Cursor cho macOS, chép từ slide trong video đăng ngày 01/11/2026:

# Cursor's macOS check (from the notice)
grep -qs svc-telemetry ~/.ssh/authorized_keys \
  && echo "svc-telemetry key found" \
  || echo "No key found; machine not impacted"

Cũng theo video đăng ngày 01/11/2026, thông báo của Cursor có một lệnh PowerShell tương ứng cho Windows.

Nhóm SimpleTech cũng viết một checker nhỏ, chỉ đọc (read-only), cho video này. Theo video đăng ngày 01/11/2026, nó tìm các dấu hiệu đã được công bố: hai thư mục extension bị ảnh hưởng, key bị cài vào, các file persistence, và tunnel key còn sót lại trong thư mục tạm. Nó không bao giờ xoá hay tải lên thứ gì.

Slide Check your machine in one command, với file extension-safety/check.sh gồm lệnh của Cursor và checker read-only
Slide "Check your machine in one command": file extension-safety/check.sh gồm lệnh macOS của Cursor, rồi checker read-only của nhóm (python3 check_extension_iocs.py, kết quả "No published indicators found.") và dòng "# tests on fake homes: 3 passed"; dòng chú thích ghi "Teaching aid • remediation: use Cursor's official scripts" (slide trong video đăng ngày 01/11/2026).

Nhóm đã test checker trên các thư mục home giả: một thư mục sạch và một thư mục được cài sẵn mọi dấu hiệu, và cả ba bài test đều pass (demo trong video đăng ngày 01/11/2026). Theo nhóm SimpleTech (video đăng ngày 01/11/2026), một kết quả sạch chỉ cho biết các dấu hiệu đã công bố này không có trên máy. Nếu tìm thấy bất cứ thứ gì, hãy dùng các script chính thức của Cursor, không dùng script của nhóm.

7. Nếu key có trên máy

Nếu key có trên máy, Cursor liệt kê các bước (theo video đăng ngày 01/11/2026): cô lập máy; gỡ SSH key của kẻ tấn công, các file persistence và mọi tiến trình tunnel đang chạy; rồi quyết định xem máy có nên được cài lại từ đầu hay không. Cursor cung cấp các script khắc phục cho macOS và Windows làm đúng những việc này, và báo lỗi rõ ràng nếu còn sót lại thứ gì.

Slide If the key is there: isolate the machine, run Cursor's remediation script, rotate secrets from another machine
Slide "If the key is there": cô lập máy, chạy script khắc phục của Cursor, rotate secret từ một máy khác; bên phải là "Isolate and remove", "Uninstall may not be enough" và "Rotate from a trusted machine". Dòng chú thích ghi "Steps summarised from Cursor's notice" (slide trong video đăng ngày 01/11/2026).

Theo video đăng ngày 01/11/2026, có một chi tiết làm người ta bất ngờ: gỡ extension có thể là chưa đủ. Cursor nói payload thả ra các script persistence độc lập và chúng tiếp tục chạy. Phorion cũng nói chỉ gỡ cài đặt thôi sẽ không xoá được backdoor.

Cuối cùng, theo các bước của Cursor (video đăng ngày 01/11/2026), hãy rotate các credential và session mà tài khoản bị ảnh hưởng có thể truy cập, và làm việc đó từ một máy đáng tin cậy.

Video đăng ngày 01/11/2026 nhắc lại: báo cáo kia đã liệt kê tên các biến môi trường chứa secret của bạn. Phorion gọi đó là một bản kiểm kê nhanh xem những credential nào đang nằm trên máy. Cursor ghi chú rằng việc thu thập có giới hạn này không loại trừ khả năng bị truy cập sau đó qua backdoor. Theo nhóm SimpleTech (video đăng ngày 01/11/2026), với laptop của công ty, hãy báo cho đội bảo mật thay vì lặng lẽ tự dọn.

8. Bốn thói quen cho lần sau

Nhóm SimpleTech kết lại bằng bốn điều nên mang theo (video đăng ngày 01/11/2026):

  1. Một cái tên quen không phải là lời bảo đảm. Extension mang một cái tên đáng tin, nhưng một package đã bị sửa được phân phối qua một marketplace. Hãy kiểm publisher và nơi editor của bạn thực sự tải extension về (theo nhóm SimpleTech, video đăng ngày 01/11/2026).
  2. Đừng chạy editor với quyền administrator. Chính thông báo của Cursor mô tả quyền administrator là trường hợp bất thường mà ở đó bước bật SSH có thể đã thành công (theo nhóm SimpleTech, video đăng ngày 01/11/2026).
  3. Giữ các secret dài hạn ra khỏi môi trường shell dùng thường ngày khi có thể, vì payload này đã kiểm kê đúng tên những biến đó (theo nhóm SimpleTech, video đăng ngày 01/11/2026).
  4. Thỉnh thoảng rà lại các extension đã cài và gỡ những cái bạn không còn dùng. Mọi extension đều là code chạy dưới tên bạn (theo nhóm SimpleTech, video đăng ngày 01/11/2026).
Slide Habits for the next one: check where it came from, run without admin rights, review what runs as you
Slide "Habits for the next one" gom các thói quen thành ba dòng: kiểm extension đến từ đâu, chạy không có quyền admin, rà lại những gì chạy dưới tên bạn; bên phải là "Name ≠ guarantee", "Not as administrator" và "Fewer secrets, fewer extensions" (slide trong video đăng ngày 01/11/2026).

Nguồn và liên kết 6 nguồn

  1. Tên gốc: The Claude Code Extension Backdoor: What Happened and How to Check
  2. Sự kiện: YouTube
  3. Video gốc: https://www.youtube.com/watch?v=iluQpJaeH4g youtube.com
  4. Kênh YouTube SimpleTech (Shafeequ Ahmed): youtube.com/channel/UCKJf3O0tpeCI5npXto0n-AA youtube.com
  5. Cursor, "Security notice: malicious version of Anthropic.claude-code (2.1.312 and 2.1.313) identified in the Cursor VS Code Extension Marketplace", đăng ngày 29/10/2026, cập nhật ngày 30/10/2026 (có lệnh kiểm cho macOS và Windows, script khắc phục và danh sách dấu hiệu; đọc ngày 02/11/2026): cursor.com/blog/claude-code-extension-security-notice cursor.com
  6. Phorion, "Official Claude Code Extension Compromise: Security Advisory", đăng ngày 30/10/2026, cập nhật ngày 31/10/2026 (đọc ngày 02/11/2026): phorion.io/blog/offical-claude-code-vsx-compromise phorion.io