Lỗ hổng CVE Claude Code CLI: RCE nghiêm trọng

Lỗ hổng CVE thực thi mã từ xa (RCE) nghiêm trọng đã được phát hiện trong Claude Code CLI, cho phép kẻ tấn công thực thi lệnh tùy ý trên máy nạn nhân chỉ bằng cách khiến họ nhấp vào một deeplink được tạo đặc biệt. Lỗ hổng CVE này đã được vá trong phiên bản 2.1.118 của Claude Code.
Lỗ hổng CVE trong Claude Code CLI
Vấn đề nằm ở bộ phân tích đối số dòng lệnh eagerParseCliFlag trong main.tsx, được dùng để phân tích các cờ quan trọng như –settings trước khi quy trình khởi tạo chính chạy. Cách triển khai này quét toàn bộ mảng đối số process.argv để tìm bất kỳ chuỗi nào bắt đầu bằng –settings=, nhưng không phân biệt đó là một cờ thực sự hay chỉ là giá trị được truyền cho một cờ khác.
Cách phân tích “không có ngữ cảnh” này tạo ra điểm chèn nguy hiểm. Khi một ứng dụng xử lý đầu vào từ deeplink mà không tách bạch cờ và tham số đi kèm, lỗ hổng CVE có thể bị khai thác để chèn cấu hình ngoài ý muốn vào tiến trình khởi chạy.
Cơ chế khai thác qua deeplink
Claude Code CLI sử dụng handler claude-cli:// và tùy chọn –prefill để đổ sẵn nội dung vào prompt người dùng từ tham số q của deeplink. Do bộ phân tích sớm không phân biệt được đâu là flag và đâu là đối số của flag, bất kỳ chuỗi –settings=… nào được nhúng trong giá trị q đều bị hiểu nhầm thành một ghi đè cấu hình hợp lệ.
Kẻ tấn công có thể lợi dụng điều này để chèn một SessionStart hook độc hại thông qua URI được tạo sẵn. Khi nạn nhân mở liên kết, Claude Code sẽ khởi chạy với cấu hình do kẻ tấn công cung cấp, và lệnh được chèn sẽ chạy ngay khi phiên bắt đầu mà không cần thêm tương tác nào khác ngoài thao tác nhấp link.
claude-cli://...?q=... --settings={"hooks":{"SessionStart":["sh -c '...'" ]}}Ảnh hưởng của lỗ hổng CVE
Lỗ hổng CVE này dẫn đến remote code execution trên hệ thống bị ảnh hưởng. Mức độ nghiêm trọng tăng cao vì payload có thể được kích hoạt ngay khi phiên làm việc bắt đầu, thay vì cần chuỗi thao tác phức tạp từ người dùng.
Điểm đáng chú ý khác là cơ chế khai thác có thể bỏ qua hoàn toàn hộp thoại tin cậy workspace. Bằng cách đặt tham số repo trong deeplink trỏ tới một repository mà nạn nhân đã clone và tin cậy cục bộ, ví dụ repository nội bộ của Claude Code, việc thực thi có thể diễn ra âm thầm mà không hiển thị cảnh báo nào.
Điều kiện kích hoạt
- Nạn nhân phải nhấp vào deeplink độc hại.
- Phiên bản Claude Code đang chạy phải là bản cũ hơn 2.1.118.
- Giá trị trong tham số q phải chứa chuỗi –settings= được nhúng đúng cách.
- Repository được chỉ định trong deeplink phải là một repo đã được tin cậy cục bộ để vượt qua workspace trust dialog.
Cách khắc phục và cập nhật bản vá
Nhà phát triển đã xử lý lỗ hổng CVE trong Claude Code 2.1.118. Bản sửa đổi áp dụng cơ chế phân tích đối số có ngữ cảnh, tách rõ CLI flags và giá trị đi kèm, từ đó loại bỏ bề mặt chèn cấu hình.
Người dùng vẫn đang chạy phiên bản cũ cần cập nhật bản vá ngay lập tức. Đây là biện pháp bắt buộc để giảm rủi ro bảo mật từ các deeplink được chế tạo nhằm khai thác remote code execution.
Tham khảo nguồn phân tích kỹ thuật và thông tin liên quan tại NVD.
Phân tích kỹ thuật về lỗi parse đối số
Lỗi cốt lõi là việc dùng mẫu kiểm tra startsWith trực tiếp trên mảng process.argv. Cách làm này dễ dẫn đến nhầm lẫn giữa cờ cấu hình và dữ liệu đầu vào, đặc biệt trong các ứng dụng có deeplink handler hoặc cơ chế prefill nội dung.
Đây là một lỗi thiết kế phổ biến trong các ứng dụng thực hiện eager parsing và kiểm tra đối số quá sớm. Khi logic xử lý không giữ được ngữ cảnh của từng tham số, các giá trị do người dùng kiểm soát có thể trở thành điểm tiêm lệnh ngoài ý muốn.
Điểm cần lưu ý khi kiểm tra hệ thống
- Rà soát các ứng dụng CLI có hỗ trợ deeplink hoặc URI handler.
- Kiểm tra các đường dẫn xử lý cờ cấu hình trước khi khởi tạo chính.
- Ưu tiên triển khai parser có ngữ cảnh cho process.argv.
- Giới hạn hoặc xác thực nghiêm ngặt các hook tự động như SessionStart.
Mẫu IOC liên quan đến lỗ hổng CVE
Trong dữ liệu gốc không có IOC theo nghĩa malware, ransomware hoặc APT. Tuy nhiên, các chỉ dấu kỹ thuật có thể dùng để nhận diện nỗ lực khai thác lỗ hổng CVE này gồm:
- Deeplink scheme:
claude-cli:// - Tham số đáng ngờ:
q,--prefill,--settings= - Cấu hình bị lợi dụng:
hooks.SessionStart - Phiên bản bị ảnh hưởng: các bản trước 2.1.118
Việc phát hiện xâm nhập nên tập trung vào các chuỗi deeplink bất thường, các giá trị --settings= lồng trong tham số nội dung và hành vi gọi hook ngay khi phiên bắt đầu. Các dấu hiệu này cho thấy khả năng hệ thống bị xâm nhập qua đường dẫn thực thi lệnh từ xa.
Khuyến nghị cập nhật và kiểm soát rủi ro
Để giảm nguy cơ bảo mật, các hệ thống sử dụng Claude Code CLI cần được kiểm tra phiên bản và triển khai bản vá bảo mật mới nhất. Trong môi trường có xử lý deeplink, nên xem xét lại logic parse đối số để tránh tái phát lỗi tương tự.
Ngoài ra, các công cụ CLI có cơ chế tự động chạy lệnh theo hook cần được đánh giá theo nguyên tắc hạn chế đặc quyền, đồng thời xác minh chặt chẽ nguồn nhập và ngữ cảnh của từng tham số trước khi áp dụng cấu hình.






