📑 Mục lục chi tiết bài viết (20 mục)
- 1. Chuyện gì đã xảy ra, kiểm tra trong 1 phút trước khi đọc tiếp
- 1.1 Phiên bản, kênh phân phối và khung giờ phơi nhiễm
- 1.2 Ai có thể đã nhận bản bị sửa mà không tự tải về
- 2. Bản bị sửa đã làm gì trên máy người dùng
- 2.1 Loader chạy khi extension được tải và khóa SSH bị đặt thêm
- 2.2 Cơ chế bám trụ và beacon gửi về máy chủ tấn công
- 3. Vì sao cửa hậu SSH từ xa thất bại trên hầu hết máy, và vì sao máy vẫn chưa thể gọi là sạch
- 3.1 Hai lỗi khiến bước bật SSH từ xa bị chặn lại
- 3.2 Giới hạn này có nghĩa gì và không có nghĩa gì
- 4. Hai phía nói gì và điểm nào vẫn chưa rõ
- 4.1 Phía Anthropic và phía Cursor, mỗi phía nói đến đâu
- 4.2 Điểm chưa rõ và góc nhìn cộng đồng cần gắn nhãn đúng
- 5. Phản ứng của Cursor và checklist dọn dẹp cho người đọc
- 5.1 Cursor đã làm gì sau khi phát hiện bản bị sửa
- 5.2 Checklist kiểm tra và dọn dẹp theo đúng thứ tự của Cursor
- 6. Bài học rút ra cho lần cài extension sau
- 6.1 Ba giả định bị phá vỡ và thói quen thay thế
- 6.2 Tự động cập nhật và tâm thế chờ thông tin chính thức
- Kết bài
- Nguồn tham khảo
Nghe tin một extension mang tên chính thức, nằm trong marketplace chính thức, mà vẫn bị thay ruột thì mình thấy hơi lạnh gáy, vì thói quen cứ thấy tên quen, chợ quen là yên tâm cài đến lúc phải soi lại rồi, và vụ này bắt đầu từ hai phiên bản 2.1.312 và 2.1.313 của Anthropic.claude-code trên Cursor Marketplace trong ngày 29/10/2026, với dấu vết đầu tiên cần kiểm tra là khóa mang comment svc-telemetry trong file ~/.ssh/authorized_keys.
Tóm tắt nhanh để đọc lướt: phiên bản bị sửa là
2.1.312và2.1.313, chỉ phân phối qua Cursor VS Code Extension Marketplace, khung giờ phơi nhiễm khoảng 11 giờ trong ngày 29/10/2026 từ khoảng 2:27am đến 1:35pm PT, tương đương 9:27am đến 8:35pm UTC, và việc đầu tiên anh em nên làm là kiểm tra xem trong file~/.ssh/authorized_keyscó khóa nào mang commentsvc-telemetryhay không.
1. Chuyện gì đã xảy ra, kiểm tra trong 1 phút trước khi đọc tiếp
Trước khi đi vào chi tiết kỹ thuật, anh em chỉ cần trả lời một câu trong một phút, máy của mình có nằm trong diện ảnh hưởng hay không, dựa vào phiên bản, kênh phân phối và khung giờ, vì ba yếu tố này phải khớp cùng lúc thì mới thuộc diện đã xác nhận của vụ này.

1.1 Phiên bản, kênh phân phối và khung giờ phơi nhiễm
Extension bị ảnh hưởng là Anthropic.claude-code, hai phiên bản 2.1.312 và 2.1.313, dành cho macOS và Windows, và kênh phân phối duy nhất của bản bị sửa là Cursor VS Code Extension Marketplace, trong khi Microsoft VS Code Marketplace, Open VSX và npm đều không phân phối bản bị sửa này, nên anh em chỉ cài từ mấy kênh kia thì không thuộc diện đã xác nhận của vụ này, dù tên extension giống hệt nhau thì vẫn phải phân biệt kênh cho kỹ trước khi kết luận máy mình có dính hay không.
1.2 Ai có thể đã nhận bản bị sửa mà không tự tải về
Khung thời gian phơi nhiễm kéo dài khoảng 11 giờ trong ngày 29/10/2026, từ khoảng 2:27am đến 1:35pm PT, tương đương 9:27am đến 8:35pm UTC, và vì Cursor bật tự động cập nhật theo mặc định nên người dùng có thể đã nhận bản bị sửa mà không cần tải thủ công, với ước tính tối đa 5.000 người dùng có thể đã nhận bản bị sửa theo ước tính của Cursor qua báo chí, và đây là ước tính trần về số người có thể đã nhận bản bị sửa, còn số người thực sự bị đăng nhập từ xa thành công thì đến nay vẫn chưa rõ.
2. Bản bị sửa đã làm gì trên máy người dùng
Phần này mình giải thích cơ chế ở mức người dùng bình thường hiểu được, không cần là chuyên gia bảo mật, và không đi vào chi tiết đủ để ai đó tái tạo lại tấn công.

2.1 Loader chạy khi extension được tải và khóa SSH bị đặt thêm
Một loader dạng IIFE, tức đoạn mã chạy ngay khi vừa được tải, đã bị chèn thêm vào đầu file extension.js của extension, và loader này chạy ngay khi extension được tải, không cần người dùng bấm hay xác nhận thêm gì cả, rồi từ đó loader thêm một khóa SSH Ed25519 của kẻ tấn công, có comment svc-telemetry, vào file ~/.ssh/authorized_keys trên máy người dùng, đồng thời cố gắng bật dịch vụ SSH local và mở reverse SSH tunnel tới 134.209.82[.]225 với khóa dùng cho tunnel mang comment svc-telemetry-tun.
2.2 Cơ chế bám trụ và beacon gửi về máy chủ tấn công
Cơ chế bám trụ được ghi nhận gồm macOS LaunchAgent tên com.apple.sysmond, Windows scheduled task tên SysMon kèm fallback qua thư mục Startup, và Linux cron @reboot, với payload thử lại khoảng mỗi 60 giây, nghĩa là dấu vết này không nằm gọn trong extension để gỡ extension là xong, mà nó tự cắm rễ riêng và tự thử lại đều đặn.
Song song với đó, payload còn gửi beacon POST tới 134.209.82[.]225:8099/beacon kèm hostname, username, hệ điều hành và kiến trúc máy, thư mục home, thư mục làm việc, Git email, địa chỉ IP công khai, và chỉ tên của tối đa 40 biến môi trường khớp mẫu KEY, TOKEN, SECRET, PASS, AWS hoặc GCP, nhưng beacon này chỉ gửi tên biến, không kèm giá trị, và điểm này vẫn đáng lo vì nó cho kẻ tấn công biết trên máy có những loại credential nào, dù giá trị credential không bị gửi đi trong beacon này.
3. Vì sao cửa hậu SSH từ xa thất bại trên hầu hết máy, và vì sao máy vẫn chưa thể gọi là sạch
Đây là phần dễ gây hiểu nhầm nhất trong cả vụ việc. Một bước tấn công thất bại rất dễ bị đọc thành máy an toàn, trong khi các dấu vết khác vẫn có thể đã nằm lại trên máy từ trước.

3.1 Hai lỗi khiến bước bật SSH từ xa bị chặn lại
Giới hạn cốt lõi nằm ở chỗ việc bật dịch vụ SSH cần quyền admin mà extension bình thường không có, nên nếu Cursor không chạy dưới quyền admin thì bước bật SSH từ xa khó thành công, và trên macOS còn có thêm một lỗi ở bước kiểm tra quyền, khi lệnh kiểm tra systemsetup trả về lỗi quyền admin nhưng kèm exit code 0, nên phép thử /Off/ bị fail và bước bật SSH bị chặn lại dù tín hiệu thoát trông như thành công, còn trên Windows thì helper dùng cho bước này hardcode /bin/sh, vốn là đường dẫn kiểu Unix, nên không chạy đúng trên Windows.
3.2 Giới hạn này có nghĩa gì và không có nghĩa gì
Hệ quả đã kiểm chứng là bước đăng nhập từ xa thất bại trên hầu hết máy, trừ trường hợp Cursor chạy dưới quyền admin, nhưng số người thực sự bị đăng nhập từ xa thành công thì vẫn là unknown, chưa có con số nào xác nhận, và giới hạn này chỉ chặn bước đăng nhập từ xa, còn khóa SSH, cơ chế persistence và beacon vẫn có thể đã hạ cánh trên máy ngay cả khi bước bật SSH từ xa thất bại, nên chỉ cập nhật extension lên bản khác là không đủ để làm sạch máy nếu dấu vết đã có.
4. Hai phía nói gì và điểm nào vẫn chưa rõ
Vụ việc này có một tranh cãi quy quyền cần trình bày đủ cả hai phía đã kiểm chứng, rồi giữ nguyên khoảng trống thông tin thay vì lấp bằng giả thuyết, vì chỗ nào chưa rõ mà mình cứ đoán thì người đọc sẽ tưởng đó là dữ kiện.

4.1 Phía Anthropic và phía Cursor, mỗi phía nói đến đâu
Phía Anthropic, qua nhân viên Felix Rieseberg trả lời The Register, nói vụ này không thuộc về hệ thống của Anthropic hay laptop của nhân viên Anthropic, mà một actor độc hại đã dùng quyền truy cập vào marketplace của Cursor để phát hành một bản sao đã bị sửa đổi, và theo phía Anthropic thì bản sao đó không do Anthropic xây dựng hay phát hành, và mình trình bày đây đúng như phát ngôn của một phía, chứ chưa phải kết luận chung cuộc đã được mọi bên xác nhận. Bản bị sửa mang tên extension chính thức và nằm trong marketplace chính thức, nên chỗ vênh giữa tên hiển thị với nguồn gốc thực sự là điểm gây bối rối nhất.
4.2 Điểm chưa rõ và góc nhìn cộng đồng cần gắn nhãn đúng
Điểm vẫn chưa rõ, và mình xin giữ nguyên là chưa rõ chứ không suy đoán thêm, là Cursor chưa giải thích kẻ tấn công đã chiếm được quyền truy cập marketplace bằng cách nào, nên cách thức xâm nhập marketplace đến nay vẫn là unknown.
Song song với đó, thảo luận trên Hacker News ngày 30/10 đã lên top story, tập trung vào niềm tin vào chuỗi cung ứng của công cụ lập trình AI, với luận điểm được nhấn mạnh là gỡ cài đặt hay cập nhật extension thôi là chưa đủ, vì dấu vết như khóa SSH và persistence tồn tại độc lập với extension, và mình xin gắn nhãn rõ ràng, phần thảo luận cộng đồng này là Ý KIẾN, chứ chưa phải dữ kiện đã kiểm chứng, còn checklist của Cursor mới là hướng dẫn hành động đã kiểm chứng.
5. Phản ứng của Cursor và checklist dọn dẹp cho người đọc
Sau phần tranh cãi, anh em cần một thứ tự hành động rõ ràng, lấy đúng checklist của Cursor, chứ không chỉ một lời khuyên chung chung là cập nhật extension.

5.1 Cursor đã làm gì sau khi phát hiện bản bị sửa
Cursor đã gỡ các phiên bản bị ảnh hưởng, chặn phân phối tiếp, tạm đóng toàn bộ marketplace, kiểm tra quyền truy cập và xác nhận không có extension nào khác bị sửa đổi, xoay các khóa liên quan, xây dựng lại marketplace, và phối hợp với nhà cung cấp hosting để đưa máy chủ của kẻ tấn công offline, và theo dữ kiện đã kiểm chứng thì máy chủ tấn công hiện không còn hoạt động, còn Cursor có kế hoạch liên hệ trực tiếp với người dùng bị ảnh hưởng theo báo chí, nhưng thời điểm và phương thức liên hệ cụ thể thì vẫn là unknown.
5.2 Checklist kiểm tra và dọn dẹp theo đúng thứ tự của Cursor
Làm theo ngay, đúng thứ tự của Cursor:
- Kiểm tra phiên bản đang dùng, phiên bản đó không được là
2.1.312hoặc2.1.313từ Cursor Marketplace trong khung giờ đã nêu. - Mở file
~/.ssh/authorized_keysvà tìm xem có khóa nào mang commentsvc-telemetryhay không. - Nếu có khóa đó thì gỡ khóa đó.
- Gỡ persistence gồm LaunchAgent
com.apple.sysmondtrên macOS, scheduled taskSysMonkèm fallback qua thư mục Startup trên Windows, và cron@reboottrên Linux. - Gỡ các tiến trình tunnel đang chạy.
- Dùng cleanup scripts của Cursor thay vì chỉ gỡ extension bằng tay.
- Xoay các credential mà máy đó có thể truy cập được, và bước xoay này phải thực hiện từ một thiết bị đáng tin, chứ không nên làm trên chính máy đang nghi bị đặt khóa.
- Theo thông báo của Cursor, nếu tìm thấy khóa thì coi máy như đã bị phơi nhiễm.
6. Bài học rút ra cho lần cài extension sau
Vụ việc này đáng nhớ vì nó phá vỡ mấy giả định quen thuộc của người dùng, và mỗi giả định vỡ ra đều cho một thói quen kiểm tra cụ thể cho lần cài extension sau.

6.1 Ba giả định bị phá vỡ và thói quen thay thế
Giả định đầu tiên bị phá vỡ là tên extension chính thức và marketplace chính thức bảo đảm bản đó là bản gốc chưa bị sửa, nên khi có thông báo bảo mật thì anh em cần kiểm tra phiên bản, kênh phân phối và khung giờ thay vì chỉ tin vào tên hiển thị, và giả định thứ hai là thất bại của một bước tấn công đồng nghĩa máy sạch, vì khóa SSH, persistence và beacon vẫn có thể đã hạ cánh dù bước đăng nhập từ xa thất bại, nên quy trình dọn dẹp phải đầy đủ, xử lý cả khóa, persistence và tiến trình tunnel đang chạy.
6.2 Tự động cập nhật và tâm thế chờ thông tin chính thức
Giả định thứ ba liên quan đến cơ chế tự động cập nhật, vì Cursor bật tự động cập nhật theo mặc định nên người dùng có thể nhận bản có vấn đề mà không tải thủ công, và khi có cảnh báo thì anh em cần kiểm tra lại cả những bản đã tự động cập nhật, không chỉ những bản mình nhớ là đã tự cài.
Đồng thời, dù nhà cung cấp đã gỡ bản lỗi, chặn phân phối, tạm đóng marketplace để kiểm tra và xây dựng lại thì người dùng vẫn phải tự kiểm tra máy của mình theo checklist, vì phía cung cấp không thể tự dọn dấu vết đã nằm sẵn trên máy local thay cho người dùng, và giữ tâm thế chờ thông tin chính thức cho những điểm còn unknown, thay vì lan truyền suy đoán về cách kẻ tấn công vào được marketplace.
Kết bài

Vậy nên, nếu máy của anh em nằm trong diện phiên bản, kênh và khung giờ đã nêu thì kiểm tra khóa svc-telemetry trước tiên, nếu tìm thấy khóa thì làm đủ checklist của Cursor và coi máy như đã bị phơi nhiễm, còn bước đăng nhập từ xa thất bại trên hầu hết máy thì vẫn không cho phép kết luận máy sạch, và số người thực sự bị đăng nhập từ xa thành công thì đến nay vẫn là unknown, nên anh em cứ kiểm tra thật, dọn đủ bước, chia sẻ trải nghiệm kiểm tra thật của mình, rồi chờ thông tin chính thức của Cursor cho điểm marketplace access method còn unknown.
Nguồn tham khảo
- Cursor: https://cursor.com/blog/claude-code-extension-security-notice?ref=metacurity.com
- Phorion: https://phorion.io/blog/offical-claude-code-vsx-compromise/
- The Register: https://www.theregister.com/cyber-crime/2026/10/30/anthropic-that-claude-code-extension-compromise-couldnt-be-us/5306682
- BleepingComputer: https://www.bleepingcomputer.com/news/security/malicious-claude-code-extension-on-cursor-planted-ssh-backdoors/
Bài viết Chuyên sâu Cùng Chuyên mục Tin tức AI
- Ram Altman gửi email báo RAM nhàn rỗi cho Sam Altman mỗi ngày
- Board Nvidia mở điều tra độc lập về Jensen Huang ngày 08/11, CEO thừa nhận ngoại tình nhưng cáo buộc gián điệp vẫn chưa được chứng minh
- Goldman Sachs thu hồi Claude Code khỏi tay banker và trader, chỉ để lại cho 12.000 kỹ sư
Bình luận & Trao đổi