Phát hiện backdoor trong tiện ích chính thức Claude Code cho VS Code trên Cursor Marketplace
Công ty bảo mật Phorion đã phát hiện gói tiện ích mở rộng chính thức Claude Code cho VS Code phiên bản 2.1.313 trên Cursor Marketplace bị chèn mã độc, cài đặt cửa hậu SSH liên tục trên macOS, Linux và Windows. Cursor đã gỡ bỏ phiên bản này khỏi marketplace và các registry liên quan, song giới phát triển được khuyến cáo kiểm tra ngay môi trường của mình.

Một sự cố an ninh mạng nghiêm trọng vừa được công bố, liên quan trực tiếp đến cộng đồng lập trình viên sử dụng các trợ lý AI trong môi trường phát triển phần mềm. Công ty bảo mật Phorion cho biết đã phát hiện gói tiện ích chính thức Claude Code cho VS Code trên Cursor Marketplace bị chèn mã độc, tạo ra một cửa hậu SSH (SSH backdoor) tồn tại lâu dài trên máy nạn nhân.
Sự việc đặc biệt đáng lo ngại bởi đây không phải một tiện ích lạ mà là tiện ích chính thức của Anthropic, được hàng nghìn lập trình viên tin dùng để tích hợp trợ lý AI Claude vào quy trình viết mã.
Bản chất của cuộc tấn công chuỗi cung ứng
Theo phân tích của Phorion, tệp extension.js bị xâm nhập bắt đầu bằng một biểu thức hàm thực thi ngay (IIFE) được chèn vào trước gói tiện ích đã được rút gọn (minified). Phần còn lại của gói trông giống hệt tiện ích gốc, với các chuỗi Claude Code, VS Code, hàm activate và deactivate thông thường cùng mã giao diện.
Điểm nguy hiểm là đoạn mã độc chạy ngay khi Node.js nạp tệp, trước cả khi hàm activate của tiện ích được gọi. Người dùng không cần mở hay tương tác với tiện ích thì payload vẫn kích hoạt. Do tiện ích mở rộng chạy với quyền của IDE và người dùng đang đăng nhập, mã độc có quyền truy cập tức thì vào tệp cục bộ, mã nguồn và toàn bộ công cụ phát triển.
Đây là một cuộc tấn công chuỗi cung ứng phần mềm điển hình: kẻ tấn công không cần lừa người dùng cài phần mềm lạ, mà lợi dụng chính uy tín của một gói phổ biến.
Bốn giai đoạn của mã độc
Quy trình xâm nhập được chia thành bốn giai đoạn rõ rệt:
- Giai đoạn 1 – Chuẩn bị truy cập SSH: Mã độc tạo thư mục
~/.ssh, chèn một khóa công khai Ed25519 do kẻ tấn công kiểm soát vào~/.ssh/authorized_keysvới chú thíchsvc-telemetry, rồi đặt quyền 0700 cho thư mục và 0600 cho tệp. - Giai đoạn 2 – Thiết lập đường hầm SSH ngược: Kịch bản mở kết nối SSH ra ngoài tới
134.209.82[.]225với người dùngtunnel, sử dụng khóa riêng Ed25519 nhúng sẵn (chú thíchsvc-telemetry-tun). Đường hầm dùng cờ-R *:0:localhost:22để chuyển tiếp cổng động, cho phép kẻ tấn công quay lại xâm nhập vào cổng 22 cục bộ. - Giai đoạn 3 – Duy trì quyền truy cập: Trên macOS, mã độc tạo LaunchAgent giả danh
com.apple.sysmond.plisttrong~/Library/LaunchAgents/; trên Linux là mục@reboottrong crontab; trên Windows là tác vụ lên lịch tênSysMonhoặc tệp trong thư mục Startup. - Giai đoạn 4 – Trinh sát máy chủ: Kịch bản thu thập tên máy, người dùng, hệ điều hành, kiến trúc, email Git toàn cục, địa chỉ IP công khai và tên của tối đa 40 biến môi trường khớp mẫu
KEY|TOKEN|SECRET|PASS|AWS|GCP, sau đó gửi báo cáo qua HTTP POST tới/beacon.
Đáng chú ý, mã độc chỉ gửi tên biến môi trường chứ không gửi giá trị, nên không đánh cắp trực tiếp bí mật. Tuy nhiên, danh sách này giúp kẻ tấn công biết máy nào đang lưu thông tin xác thực đám mây để ưu tiên tấn công tiếp.
Lỗi triển khai giúp giảm thiểu tác động trên macOS
Phorion phát hiện một sơ suất của chính kẻ tấn công trong logic bật SSH trên macOS. Kịch bản giả định có thể kiểm tra trạng thái Remote Login mà không cần quyền root. Nhưng khi chạy dưới người dùng thông thường, lệnh systemsetup -getremotelogin in ra thông báo lỗi thiếu quyền quản trị và thoát với mã trạng thái 0, thay vì trả về Off.
Vì mã chỉ bật SSH khi đầu ra khớp với Off, bước bật SSH bị bỏ qua hoàn toàn. Hệ quả là trên máy Mac chưa bật SSH từ trước, đường truy cập vào bị cắt đứt, dù khóa SSH và cơ chế duy trì vẫn được cài đặt.
Tuy nhiên, chuyên gia bảo mật khuyến cáo không nên dựa vào lỗi này như một biện pháp phòng vệ. Nếu người dùng đã bật Remote Login trước đó, hoặc bật sau này, cửa hậu sẽ sẵn sàng hoạt động.
Khuyến nghị xử lý cho lập trình viên và tổ chức
Phorion nhấn mạnh rằng chỉ gỡ cài đặt tiện ích là không đủ để loại bỏ cửa hậu. Các bước ứng phó cần thiết bao gồm:
- Dừng các tiến trình đường hầm đang hoạt động, gồm vòng lặp
/bin/shvà mọi tiến trìnhsshhoặcautosshkết nối tới134.209.82[.]225. - Gỡ bỏ cơ chế duy trì: xóa
~/Library/LaunchAgents/com.apple.sysmond.plisttrên macOS (hoặc mục crontab trên Linux, tác vụSysMontrên Windows), cùng các tệp~/.config/.smtvà~/.config/.smtk. - Xóa khóa công khai
svc-telemetrykhỏi~/.ssh/authorized_keys, xóa các tệp/tmp/.stk_*và kiểm tra xem Remote Login có bị bật ngoài ý muốn hay không. - Xoay vòng toàn bộ thông tin xác thực nếu SSH từng được bật hoặc có dấu hiệu đăng nhập từ bên ngoài, đặc biệt là các token khớp mẫu biến môi trường mà mã độc tìm kiếm.
Trong nhật ký SSH, các phiên đăng nhập trái phép sẽ xuất hiện như đến từ localhost (127.0.0.1 hoặc ::1) với khóa svc-telemetry, do chúng đi qua cổng chuyển tiếp cục bộ.
Bài học cho cộng đồng phát triển tại Việt Nam
Với các đội ngũ kỹ thuật tại Việt Nam đang ngày càng tích hợp trợ lý AI vào quy trình phát triển, sự cố này là lời cảnh báo thiết thực. Các tiện ích mở rộng IDE chạy với quyền rất cao nhưng thường được cài đặt thiếu kiểm soát. Doanh nghiệp nên:
- Giới hạn danh sách tiện ích được phép cài đặt và kiểm tra phiên bản cụ thể đang dùng.
- Giám sát các tiến trình IDE ghi vào
~/.ssh/authorized_keys– hành vi mà một tiện ích hợp pháp không bao giờ cần thực hiện. - Áp dụng nguyên tắc đặc quyền tối thiểu, không chạy IDE bằng tài khoản có quyền quản trị.
Cursor đã gỡ bỏ bản phát hành 2.1.313 khỏi marketplace và thu hồi các phiên bản tương ứng trên NPM và VSCode. Bất kỳ ai từng cài đặt phiên bản này cần coi máy của mình là đã bị xâm nhập cho đến khi hoàn tất kiểm tra.
Bài viết liên quan

Phần mềm
Binning hay chọn lọc đặc trưng: Đâu mới là yếu tố giúp chúng tôi vô địch hackathon bảo hiểm?
30 tháng 10, 2026

Công nghệ
NHS cảnh báo rủi ro dữ liệu bệnh nhân sau khi nhà cung cấp website phá sản
30 tháng 10, 2026

Phần mềm
Đừng bắt AI Agent tự quyết mọi bước: đưa mô hình quyết định vào công cụ để nhanh gấp 3 lần
30 tháng 10, 2026