Bảo mật & quyền riêng tư

Phần mở rộng Claude Code bị xâm nhập cài đặt cửa hậu SSH trên macOS

Phorion đã phát hiện một cửa hậu trong phiên bản chính thức của Claude Code cho VS Code (2.1.312 và 2.1.313) trên Cursor Marketplace, có khả năng cài đặt quyền truy cập SSH bền vững.

Kính lúp phơi bày các kết nối độc hại ẩn trong biểu tượng phần mở rộng code
Minh họa được tạo riêng cho bài viết này

Được dịch tự động từ bản gốc tiếng Anh.

Các nhà nghiên cứu bảo mật tại Phorion đã xác định một vụ tấn công chuỗi cung ứng ảnh hưởng đến phần mở rộng chính thức Claude Code for VS Code được phân phối qua Cursor Marketplace. Các phiên bản độc hại, 2.1.312 và 2.1.313, chèn một cửa hậu Secure Shell (SSH) bền vững vào các môi trường macOS, Linux và Windows ngay khi tải.

Sự cố này làm nổi bật những rủi ro vốn có trong hệ sinh thái công cụ dành cho nhà phát triển, nơi các phần mở rộng chạy với đặc quyền cao và có thể âm thầm sửa đổi cấu hình hệ thống. Các tổ chức đang sử dụng những phiên bản cụ thể này phải coi mọi lần cài đặt là một nguy cơ vi phạm tiềm tàng và khởi động quy trình phản hồi sự cố.

Chuyện gì đã xảy ra

Vụ tấn công nhắm vào các nhà phát triển sử dụng trình soạn thảo Cursor, nền tảng sở hữu chợ riêng cho các phần mở rộng tương thích với VS Code. Phorion phát hiện rằng gói cài đặt của Claude Code phiên bản 2.1.312 và 2.1.313 chứa một mã độc được chèn thêm. Mã này thực thi trước logic kích hoạt tiêu chuẩn của phần mở rộng, nghĩa là người dùng không cần tương tác với công cụ để malware chạy. Cursor sau đó đã gỡ bỏ các phiên bản này khỏi marketplace của mình.

Mục tiêu chính của mã độc là thiết lập quyền truy cập tương tác dài hạn vào máy của nạn nhân. Nó đạt được điều này bằng cách cài đặt các khóa SSH và tạo các đường hầm ngược (reverse tunnels) tới máy chủ do kẻ tấn công kiểm soát tại địa chỉ IP 134.209.82.225. Mặc dù malware bao gồm logic cho tất cả các hệ điều hành desktop chính, nhưng phân tích tập trung vào macOS do các chi tiết triển khai cụ thể và lỗi trên các nền tảng khác.

Vì các phần mở rộng hoạt động với quyền hạn của môi trường phát triển tích hợp (IDE) và người dùng, cửa hậu giành được quyền truy cập ngay lập tức vào mã nguồn cục bộ, tệp tin và các công cụ phát triển. Mức độ truy cập này cho phép kẻ tấn công thu thập thông tin nhạy cảm và duy trì sự tồn tại (persistence) ngay cả khi IDE đã đóng.

Cách thức hoạt động

Quá trình lây nhiễm bắt đầu bằng một biểu thức hàm được gọi ngay lập tức (immediately invoked function expression) được thêm vào đầu tệp extension.js đã rút gọn (minified). Script này nhập các mô-đun Node.js tiêu chuẩn để thao tác với hệ thống tệp và thực thi lệnh shell. Hành động đầu tiên của nó là đảm bảo thư mục ~/.ssh tồn tại và thêm một khóa công khai Ed25519 do kẻ tấn công kiểm soát vào tệp authorized_keys. Khóa này được gắn nhãn với bình luận svc-telemetry, tuy nhiên các nhà điều tra nên dựa vào dấu vết khóa (key fingerprint) thay vì bình luận để phát hiện.

Tiếp theo, script cố gắng kích hoạt daemon SSH. Trên macOS, nó kiểm tra trạng thái Remote Login bằng cách sử dụng systemsetup -getremotelogin. Tuy nhiên, có một lỗi nghiêm trọng ở đây: lệnh này yêu cầu đặc quyền quản trị viên để đọc trạng thái. Khi chạy dưới tư cách người dùng tiêu chuẩn, nó trả về thông báo lỗi thay vì "Off", khiến script bỏ qua bước kích hoạt. Nếu Remote Login đã được bật từ trước, cửa hậu hoạt động như dự kiến; nếu không, đường dẫn truy cập inbound vẫn bị hỏng cho đến khi người dùng tự tay bật nó.

Để duy trì quyền truy cập, malware thiết lập một đường hầm SSH ngược outbound tới máy chủ của kẻ tấn công. Nó sử dụng một khóa riêng tư nhúng sẵn, được gắn nhãn svc-telemetry-tun, lưu trữ trong thư mục tạm thời. Đường hầm chuyển tiếp lưu lượng từ một cổng được cấp phát động trên máy chủ của kẻ tấn công sang cổng 22 trên localhost của nạn nhân. Điều này cho phép toán tử kết nối lại vào máy bằng khóa công khai đã được cài đặt trước đó. Kết nối được giữ sống bằng autossh hoặc vòng lặp thử lại, đảm bảo tính bền vững qua các gián đoạn mạng.

Chi tiết quan trọng

  • Phiên bản bị ảnh hưởng: Claude Code for VS Code phiên bản 2.1.312 và 2.1.313 trên Cursor Marketplace.
  • Cơ sở hạ tầng của kẻ tấn công: Lệnh và beacon được gửi tới địa chỉ IP 134.209.82.225 trên các cổng 22 và 8099.
  • Cơ chế duy trì sự tồn tại: Trên macOS, malware tạo một LaunchAgent tên là com.apple.sysmond.plist trong ~/Library/LaunchAgents để tồn tại qua quá trình khởi động lại.
  • Dữ liệu trinh sát: Payload gửi beacon chứa siêu dữ liệu máy chủ, bao gồm hostname, OS và tên của các biến môi trường khớp với các mẫu như KEY, TOKEN hoặc AWS.
  • Lỗi trên macOS: Script thất bại trong việc bật Remote Login trên macOS nếu chạy mà không có đặc quyền quản trị viên do xử lý lỗi không đúng cách của lệnh systemsetup.
  • Thách thức trong phát hiện: Malware sửa đổi trực tiếp authorized_keys thông qua API tệp Node.js, vượt qua các quy tắc giám sát dựa trên shell tìm kiếm các lệnh như echo hoặc tee.

Tại sao điều này quan trọng

Đối với các nhóm kỹ thuật phần mềm, sự cố này nhấn mạnh tính dễ tổn thương của chuỗi cung ứng trong môi trường phát triển. Các phần mở rộng IDE là thành phần đáng tin cậy thường yêu cầu quyền hạn rộng để hoạt động hiệu quả. Khi một thành phần như vậy bị xâm nhập, nó cung cấp một con đường trực tiếp vào các tài sản nhạy cảm nhất của tổ chức: mã nguồn và thông tin đăng nhập. Khả năng malware đánh cắp tên các biến môi trường chứa bí mật cho phép kẻ tấn công ưu tiên các mục tiêu giá trị cao mà ban đầu chưa cần đánh cắp chính các bí mật đó.

Hơn nữa, các cơ chế duy trì sự tồn tại được sử dụng đủ tinh vi để sống sót qua các bước khắc phục điển hình. Việc đơn giản gỡ cài đặt phần mở rộng không loại bỏ được cửa hậu, vì malware cài đặt các dịch vụ hệ thống độc lập và cron jobs. Điều này có nghĩa là các hành động quản lý gói tiêu chuẩn là không đủ để dọn dẹp. Các đội ngũ bảo mật phải hiểu rằng công cụ dành cho nhà phát triển giờ đây là một vector tấn công chính, đòi hỏi mức độ xem xét kỹ lưỡng ngang bằng với cơ sở hạ tầng sản xuất.

Bạn có thể làm gì

  • Kiểm toán các phần mở rộng đã cài đặt: Ngay lập tức kiểm tra tất cả các máy phát triển để tìm Claude Code for VS Code phiên bản 2.1.312 hoặc 2.1.313 và gỡ cài đặt chúng nếu tìm thấy.
  • Kiểm tra các dấu vết duy trì sự tồn tại: Tìm kiếm ~/.config/.smt, ~/.config/.smtk và ~/Library/LaunchAgents/com.apple.sysmond.plist trên các hệ thống macOS.
  • Xem xét cấu hình SSH: Kiểm tra ~/.ssh/authorized_keys để tìm các khóa công khai không rõ nguồn gốc, đặc biệt là những khóa có bình luận svc-telemetry hoặc các khóa Ed25519 lạ.
  • Giám sát lưu lượng mạng: Tìm kiếm các kết nối SSH outbound tới 134.209.82.225 hoặc các yêu cầu HTTP POST tới cổng 8099 trên cùng IP đó.
  • Phân tích nhật ký tiến trình: Sử dụng telemetry của Endpoint Security Framework để phát hiện các tiến trình phụ trợ của IDE ghi vào các tệp cấu hình SSH hoặc tạo LaunchAgents.
  • Xoay vòng thông tin đăng nhập: Nếu bất kỳ máy nào bị ảnh hưởng được xác định, hãy giả định rằng chúng đã bị xâm nhập và xoay vòng tất cả các bí mật, API keys và SSH keys được lưu trữ trên các thiết bị đó.
  • #security
  • #supply-chain
  • #macos
  • #ide-security
  • #ssh

Công cụ từ cửa hàng Bytechap

Đọc tiếp

Tất cả bài viết