Lỗ hổng CVE nguy hiểm trong Claude Code

Lỗ hổng CVE nguy hiểm trong Claude Code

Lỗ hổng CVE trong Claude Code đã làm lộ một cơ chế network sandbox bypass nghiêm trọng, cho phép kẻ tấn công vượt qua kiểm soát kết nối outbound và trích xuất thông tin nhạy cảm từ hệ thống lập trình viên. Vấn đề ảnh hưởng đến nhiều phiên bản trong khoảng từ v2.0.24 đến v2.1.89, trước khi được vá âm thầm ở v2.1.90.

Lỗ hổng CVE Và Phạm Vi Ảnh Hưởng

Điểm đáng chú ý của lỗ hổng CVE này là nó tồn tại hơn 5,5 tháng trên khoảng 130 phiên bản phát hành. Bản vá được đưa vào v2.1.90 ngày 01/04/2026, nhưng ghi chú phát hành không đề cập đây là một bản sửa bảo mật.

Trước đó, một lỗi bypass khác đã được công bố dưới mã CVE-2025-66479, liên quan đến cách kiểm tra allowedDomains. Tuy nhiên, sự cố SOCKS5 null-byte injection này không có mã CVE công khai tại thời điểm được mô tả.

Tham chiếu từ cơ sở dữ liệu lỗ hổng có thể xem tại NVD.

Cơ Chế Tấn Công

Lỗ hổng CVE xuất phát từ sự khác biệt khi phân tích chuỗi giữa JavaScript và thư viện C nền dưới. Claude Code dùng một SOCKS5 proxy để kiểm tra hostname theo allowlist, ví dụ *.google.com, bằng hàm endsWith().

Kẻ tấn công có thể tạo hostname dạng attacker-host.com\x00.google.com. Lớp lọc JavaScript thấy hậu tố .google.com nên chấp nhận kết nối, trong khi libc với getaddrinfo() dừng tại ký tự null \x00 và phân giải sang attacker-host.com.

Đây là một dạng parser differential, trong đó lớp kiểm tra và lớp phân giải tên miền không thống nhất cách xử lý chuỗi đầu vào.

Điều Kiện Khai Thác

Lỗ hổng CVE này nguy hiểm hơn khi kết hợp với prompt injection. Nếu Claude Code đọc phải nội dung độc hại trong issue comment, README hoặc tài liệu, mã lệnh do kẻ tấn công điều khiển có thể chạy bên trong sandbox và tận dụng bypass để đưa dữ liệu ra ngoài.

  • Đầu vào bị kiểm soát: hostname SOCKS5 mang ký tự null.
  • Điều kiện môi trường: allowlist outbound dựa trên hostname.
  • Tác động: kết nối ra ngoài bị chặn có thể bị biến thành kết nối tới host do kẻ tấn công chỉ định.

Phân Tích Kỹ Thuật Lỗ Hổng CVE

Phiên bản sandbox-runtime <= 0.0.42 truyền trực tiếp byte DOMAINNAME từ yêu cầu SOCKS5 CONNECT vào bộ so khớp mà không chặn ký tự null, không giới hạn độ dài và không áp dụng whitelist ký tự DNS.

Bản sửa trong sandbox-runtime 0.0.43 bổ sung wrapper isValidHost() để loại bỏ \x00, %, CRLF và các ký tự không hợp lệ khác trước khi chạy matcher.

// Logic kiểm tra trước khi vá
if (hostname.endsWith(".google.com")) {
  allowConnection(hostname);
}

// Host độc hại có thể vượt qua filter
// attacker-host.com\x00.google.com

// Sau khi vá trong sandbox-runtime 0.0.43
function isValidHost(host) {
  return !host.includes("\x00") &&
         !host.includes("%") &&
         !host.includes("\r") &&
         !host.includes("\n");
}

Điểm yếu này cho thấy lỗ hổng CVE không nằm ở sai sót logic đơn lẻ, mà ở cách triển khai kiểm tra hostname không đồng bộ với lớp phân giải DNS của hệ thống nền.

Phiên Bản Bị Ảnh Hưởng

  • Claude Code v2.0.24 đến v2.1.89: bị ảnh hưởng.
  • Claude Code v2.1.90: đã vá.
  • sandbox-runtime <= 0.0.42: chứa logic dễ bị khai thác.
  • sandbox-runtime 0.0.43: đã thêm kiểm tra đầu vào an toàn hơn.

Tác Động Đối Với Hệ Thống

Trong các hệ thống có quyền truy cập vào credentials, source codeenvironment variables, lỗ hổng CVE này có thể dẫn tới rò rỉ dữ liệu nhạy cảm qua outbound traffic do sandbox kiểm soát.

Rủi ro tăng cao nếu máy trạm phát triển dùng wildcard allowlist, vì kẻ tấn công có thể lợi dụng kết nối SOCKS để chuyển hướng lưu lượng ra ngoài mà không bị phát hiện ngay.

Vì vậy, sandbox của nhà cung cấp chỉ nên được xem là lớp defense-in-depth, không phải ranh giới bảo mật cuối cùng.

Dấu Hiệu Cần Kiểm Tra

  • Lưu lượng SOCKS outbound bất thường từ máy chạy Claude Code.
  • Hostname có chứa ký tự null hoặc chuỗi bất thường trong log ứng dụng.
  • Kết nối ra ngoài tới domain không nằm trong allowlist thực tế.
  • Hành vi truy xuất dữ liệu môi trường, token hoặc source code không đúng ngữ cảnh.

Khuyến Nghị Xử Lý Và Giám Sát

Người dùng nên cập nhật ngay lên Claude Code v2.1.90 hoặc mới hơn và xác minh bằng lệnh claude --version. Đây là bước bắt buộc để khắc phục lỗ hổng CVE liên quan đến SOCKS5 bypass.

claude --version

Ngoài ra, bất kỳ hệ thống nào đã dùng wildcard allowlist trên máy có chứa thông tin xác thực trong giai đoạn từ 20/10/2025 đến trước thời điểm nâng cấp đều cần rà soát log outbound qua SOCKS và xoay vòng toàn bộ credential có thể tiếp cận.

Việc giám sát nên tập trung vào phát hiện xâm nhập thông qua log proxy, DNS, và các luồng kết nối bất thường từ tiến trình AI coding assistant.

Hướng Dẫn Kiểm Tra Nhanh

  • Xác minh phiên bản Claude Code đang chạy.
  • Rà soát cấu hình allowlist outbound.
  • Đối chiếu log SOCKS với domain hợp lệ.
  • Kiểm tra dấu hiệu truy cập dữ liệu nhạy cảm không giải thích được.

Đối Chiếu Với Tài Liệu Kỹ Thuật

Các thông tin về lỗ hổng CVE và bản vá có thể đối chiếu với hồ sơ advisory công khai của GitHub tại GitHub Advisory. Theo mô tả kỹ thuật, lỗi đầu tiên đã được sửa trong v2.0.55, nhưng lỗi SOCKS5 null-byte vẫn còn tồn tại cho đến v2.1.90.

Trong bối cảnh này, lỗ hổng CVE phản ánh một vấn đề triển khai kéo dài hơn là sự cố riêng lẻ. Do đó, kiểm soát egress ở mức mạng hoặc hypervisor là biện pháp cần thiết để giảm khả năng khai thác tiếp theo.