Anthropic Claude Cowork: Lỗ hổng Zero-Day Nguy Hiểm

Anthropic Claude Cowork: Lỗ hổng Zero-Day Nguy Hiểm

Một chuỗi lỗ hổng trong Anthropic Claude Cowork cho phép kẻ tấn công có quyền thực thi mã cục bộ leo thang đặc quyền và chạy các lệnh tùy ý với quyền root bên trong môi trường sandbox Linux biệt lập của sản phẩm, vượt qua mọi lớp phòng thủ mà Anthropic đã xây dựng. Lỗ hổng này, được Armadin phát hiện, mở ra nguy cơ bảo mật đáng kể cho người dùng.

Phân tích lỗ hổng trong Claude Cowork

Claude Cowork là sản phẩm của Anthropic dành cho những người làm việc tri thức, cho phép người dùng không chuyên về kỹ thuật tận dụng Claude Code để xây dựng công cụ và xử lý dữ liệu. Trên nền tảng Windows, Cowork đóng gói Claude Code bên trong một máy ảo Ubuntu biệt lập bằng Hyper-V. Môi trường này được bảo vệ bởi nhiều lớp như RPC qua named pipe được xác thực bằng Authenticode, không gian tên bubblewrap, người dùng không có đặc quyền theo mỗi phiên, bộ lọc seccomp và proxy egress bị giới hạn tên miền.

Kỹ thuật khai thác zero-day

Nghiên cứu của Armadin nhằm mục đích thực thi mã tùy ý bên trong máy ảo với quyền root và truy cập mạng không giới hạn, và đã thành công. Claude Cowork trên Windows cung cấp sandbox thông qua Host Compute Service, chạy một máy ảo Ubuntu ẩn với các công cụ Hyper-V tiêu chuẩn. Việc này chỉ có thể xác nhận thông qua lệnh hcdiag list với quyền quản trị.

Một dịch vụ Local System có tên CoworkVMService quản lý kết nối máy tính để bàn thông qua một named pipe (\\.\pipe\cowork-vm-service) chứa một máy chủ RPC dựa trên JSON. CoworkVMService xác thực kết nối bằng cách kiểm tra chữ ký Authenticode, đảm bảo người gọi được ký bởi “Anthropic, PBC.” Các nỗ lực vượt qua kiểm tra này bằng cách sử dụng các bản sao chữ ký hoặc chuỗi tin cậy thay thế đều thất bại.

Khai thác lỗ hổng thông qua DLL Sideloading

Thay vào đó, các nhà nghiên cứu đã chuyển hướng sang kỹ thuật DLL sideloading. Họ phát hiện ra rằng tiến trình claude.exe sẽ tìm nạp tệp USERENV.dll từ thư mục ứng dụng của nó trước khi quay về tệp hệ thống. Bằng cách tạo ra một tệp DLL độc hại xuất khẩu hàm GetUserProfileDirectoryW và đặt tên tệp là USERENV.dll, Armadin đã đạt được việc thực thi mã tùy ý bên trong một tệp nhị phân được ký hợp lệ của Anthropic. Điều này đáp ứng yêu cầu kiểm tra danh tính của pipe mà không làm hỏng nó.

Với quyền thực thi mã bên trong claude.exe, Armadin đã sử dụng một tác nhân AI để đảo ngược kỹ thuật giao thức RPC từ các bản ghi dịch vụ, thông báo lỗi và fuzzzing JSON. Giao thức sử dụng định dạng đơn giản [độ dài 4 byte][payload JSON], phơi bày các phương thức như configure, startVM, isGuestConnected và quan trọng nhất là spawn.

Vượt qua các biện pháp bảo vệ sandbox

Hầu hết các biện pháp bảo vệ sandbox vẫn vững chắc dưới các cuộc tấn công trực tiếp: useradd từ chối các tên người dùng đã đặt trước như root, proxy egress chặn các tên miền không có trong danh sách cho phép bằng lỗi 403, và các NTFS junction không được theo dõi vào máy khách. Điểm đột phá đến từ hai tham số của lệnh spawn được chuyển tiếp nguyên vẹn đến sdk-daemon của máy ảo: isResumeallowedDomains. Bằng cách fuzzzing JSON bị định dạng sai, Armadin đã sử dụng các lỗi unmarshalling mô tả của Go để liệt kê toàn bộ lược đồ tham số.

Thông thường, isResume: false buộc tạo một người dùng mới không có đặc quyền. Tuy nhiên, khi đặt isResume: true đã bỏ qua hoàn toàn việc kiểm tra người dùng hiện có. Điều này cho phép daemon thực thi các lệnh với bất kỳ người dùng nào được chỉ định, bao gồm cả root, mà không cần xác thực.

Việc gửi chuỗi JSON {"name": "root", "isResume": true} đã trả về một shell root bên trong sandbox bubblewrap.

Ảnh hưởng và cảnh báo về CVE

Armadin đã xác thực toàn bộ chuỗi khai thác trên phiên bản Claude Desktop for Windows 1.9255.2.0. Mặc dù mô hình mối đe dọa của Anthropic không xem xét yêu cầu thực thi mã cục bộ, phát hiện này nhấn mạnh rằng các ranh giới đặc quyền bên trong các công cụ AI “được sandbox” có thể dễ dàng bị bỏ qua một khi truy cập ban đầu đã được thiết lập. Đây là một ví dụ điển hình về lỗ hổng zero-day có thể gây ra rủi ro bảo mật nghiêm trọng.

Thông tin về lỗ hổng này có thể được tìm thấy trong các bản tin tức bảo mật và các cảnh báo bảo mật. Cập nhật bản vá và theo dõi các thông báo từ nhà cung cấp là biện pháp cần thiết để bảo vệ hệ thống.

Chi tiết kỹ thuật bổ sung có thể tham khảo tại Armadin’s research blog.