Ngày 29/10/2026, trong khoảng 11 tiếng, ai dùng Cursor và để extension tự cập nhật có thể đã nhận về một bản Claude Code bị cài cửa hậu. Bản độc hại được đẩy lên Cursor Marketplace dưới đúng định danh anthropic.claude-code, nên nhìn bề ngoài không khác gì một lần cập nhật bình thường. Bài này tóm tắt chuyện gì đã xảy ra, cách kiểm tra máy của bạn và cách dọn dẹp.
Chuyện gì đã xảy ra?
- Extension: Claude Code for VS Code (
anthropic.claude-code), phân phối qua marketplace extension của Cursor. - Phiên bản độc hại:
2.1.312và2.1.313. Cursor xác nhận hai bản này không phải do Anthropic phát triển. - Thời gian: khoảng 2:27 đến 13:35 giờ Thái Bình Dương ngày 29/10/2026 — tức khoảng 16:27 ngày 29/10 đến 03:35 ngày 30/10 giờ Việt Nam.
- Phạm vi: chưa có bằng chứng các phiên bản khác hay kênh phân phối chính thức (VS Code Marketplace) bị ảnh hưởng.
Sau khi phát hiện, Cursor gỡ bản độc hại, tạm dừng marketplace, kiểm tra lại toàn bộ để chắc chắn không extension nào khác bị chỉnh sửa, xoay vòng khóa, rồi phối hợp với nhà cung cấp hosting đánh sập máy chủ của kẻ tấn công. Công ty bảo mật Phorion là một trong những bên phân tích mẫu sớm nhất.
Mã độc làm gì?
Đoạn mã được chèn vào đầu file extension.js đã minify. Nó chạy ngay khi editor nạp file, trước cả hàm kích hoạt của extension — người dùng không cần bấm gì cả. Sau đó:
- Cài khóa SSH của kẻ tấn công vào
~/.ssh/authorized_keys, kèm commentsvc-telemetry. - Cố bật SSH server trên máy và mở reverse SSH tunnel ra máy chủ của kẻ tấn công, để từ đó chúng có thể SSH ngược vào máy bạn dù máy nằm sau NAT hay firewall. Tunnel được thử lại mỗi 60 giây, kể cả khi đã đóng editor.
- Gửi thông tin trinh sát qua HTTP: hostname, user, hệ điều hành, thư mục làm việc, email Git, IP public và tên các biến môi trường có chứa KEY, TOKEN, SECRET, PASS, AWS, GCP… (chỉ tên, không gửi giá trị — nhưng thế là đủ để biết máy bạn đáng để quay lại).
- Cài cơ chế bám trụ để sống sót qua reboot: cron
@reboottrên Linux, LaunchAgent giả danh thành phần của Apple trên macOS, scheduled task trên Windows.
Trên máy không có quyền admin, bước bật SSH và tunnel thường thất bại. Nhưng khóa SSH, file bám trụ và dữ liệu trinh sát vẫn được cài/gửi đi. Phorion còn ghi nhận lỗi trong đoạn xử lý crontab của mã độc có thể xóa các cron job sẵn có của bạn trên Linux.
Điểm quan trọng nhất: gỡ extension là chưa đủ. Các script chạy nền và khóa SSH vẫn nằm lại trên máy.
Kiểm tra máy của bạn
Nếu bạn dùng Cursor và extension Claude Code tự cập nhật trong khoảng thời gian trên, hãy kiểm tra ngay. Trên Linux/macOS:
# 1. Có khóa lạ trong authorized_keys không?
grep -n "svc-telemetry" ~/.ssh/authorized_keys
# So theo fingerprint, đừng chỉ tin vào comment
ssh-keygen -lf ~/.ssh/authorized_keys | grep 0Z6R+DF64Do2nwQic8a7kkfDLNNk4IiK+2U2Rci4htk
# 2. File của mã độc
ls -la ~/.config/.smt ~/.config/.smtk /tmp/.stk_* 2>/dev/null
# 3. Cơ chế bám trụ
crontab -l | grep ".config/.smt" # Linux
ls ~/Library/LaunchAgents/com.apple.sysmond.plist # macOS
# 4. Tunnel đang chạy?
ps aux | grep -E "autossh|ssh -N -R" | grep -v grep
# 5. Phiên bản extension đã cài
ls ~/.cursor/extensions | grep claude-code
Trên Windows, kiểm tra %USERPROFILE%\.ssh\authorized_keys, C:\ProgramData\ssh\administrators_authorized_keys, thư mục %USERPROFILE%\.config\ (file smt.cmd, smtk), scheduled task tên SysMon và file sysmon.cmd trong thư mục Startup.
Dấu hiệu xâm nhập (IoC)
- IP máy chủ kẻ tấn công:
134.209.82.225— cổng 22 (reverse tunnel, usertunnel) và cổng 8099 (POST /beacon). - Khóa SSH cài vào máy: comment
svc-telemetry, fingerprintSHA256:0Z6R+DF64Do2nwQic8a7kkfDLNNk4IiK+2U2Rci4htk. - Khóa dùng cho tunnel: comment
svc-telemetry-tun, fingerprintSHA256:KOAU57+ZG6u3MG4WwzPzPX2O5YEe9qdOC1Bl+6MVyDQ. - File
extension.jsđộc hại (SHA-256):ecb58cb29078d9646ad1dcdbe51526f2d9cfea06be5fb2ab183e8ecc3ab6bf15. - Log SSH: đăng nhập bằng public key từ
127.0.0.1hoặc::1kể từ 29/10/2026 — dấu hiệu kẻ tấn công đã đi qua tunnel.
Nếu máy đã dính thì làm gì?
- Cô lập máy khỏi mạng nếu có thể.
- Dừng tiến trình: kill vòng lặp
/bin/shchạy nền và mọi tiến trìnhssh/autosshkết nối tới IP trên. - Gỡ bám trụ: sao lưu crontab trước (
crontab -l > ~/crontab.bak) rồi xóa dòng@rebootgọi.config/.smt; trên macOS unload và xóacom.apple.sysmond.plist; trên Windows xóa taskSysMonvàsysmon.cmd. - Xóa khóa và file: bỏ dòng
svc-telemetrykhỏiauthorized_keys, xóa~/.config/.smt,~/.config/.smtk,/tmp/.stk_*. Kiểm tra lại SSH server có đang bị bật ngoài ý muốn không. - Chặn IP
134.209.82.225ở firewall. - Xoay vòng bí mật: mọi API key, token, mật khẩu, session mà user đó truy cập được — ưu tiên các biến môi trường có tên chứa KEY, TOKEN, SECRET, PASS, AWS, GCP vì đúng những tên này đã bị gửi đi.
- Cập nhật extension lên bản sạch mới nhất. Nếu thấy dấu hiệu đã có người đăng nhập qua tunnel, cân nhắc cài lại máy thay vì chỉ dọn dẹp.
Cursor đã phát hành script dọn dẹp cho macOS và Windows kèm thông báo bảo mật của họ. Với Linux, hãy làm thủ công theo các bước trên.
Ghi chú của tôi
Extension của editor chạy với đúng quyền của bạn: đọc được mã nguồn, file .env, khóa SSH và mọi thứ trong home. Vậy mà phần lớn chúng ta để nó tự cập nhật mà không nghĩ ngợi. Vụ này không cần lỗ hổng nào trong code của Claude Code — chỉ cần một bản cập nhật mạo danh lọt được vào marketplace.
Vài thói quen nên có, nhất là với máy làm việc có quyền vào production:
- Tắt tự cập nhật extension trên máy nhạy cảm; cập nhật có chủ đích và ghim phiên bản.
- Với team: giữ danh sách extension được phép dùng.
- Đừng để secret production nằm sẵn trong biến môi trường của máy dev; dùng secret manager hoặc nạp khi cần.
- Thỉnh thoảng nhìn lại
~/.ssh/authorized_keysvàcrontab -l— hai chỗ kẻ tấn công rất thích nhưng ít ai để ý.
