Lỗi Đóng Gói npm Tiết Lộ Toàn Bộ Mã Nguồn Công Cụ Claude Code Của Anthropic

07 tháng 4, 2026·7 phút đọc

Anthropic vô tình lộ toàn bộ mã nguồn TypeScript của công cụ dòng lệnh Claude Code do gộp nhầm file source map trong phiên bản npm 2.1.88. Bộ mã gồm 512.000 dòng code đã được lưu trữ trên GitHub chỉ trong vài giờ. Sự cố này bộc lộ các tính năng chưa ra mắt, tên mã nội bộ và kiến trúc điều phối đa tác nhân.

Lỗi Đóng Gói npm Tiết Lộ Toàn Bộ Mã Nguồn Công Cụ Claude Code Của Anthropic

Nghiên cứu viên bảo mật Chaofan Shou đã phát hiện vào ngày 31/3 rằng công cụ dòng lệnh Claude Code CLI của Anthropic đã để lộ toàn bộ mã nguồn TypeScript ngay trên npm registry công khai. Phiên bản 2.1.88 của gói @anthropic-ai/claude-code được phát hành kèm theo một file source map không bao giờ nên xuất hiện ở đó. Shou đã đăng tải phát hiện này lên X (Twitter cũ), nơi nó thu hút hàng triệu lượt xem. Chỉ trong vài giờ, toàn bộ mã nguồn đã được lưu trữ (archive) lên nhiều kho GitHub, nhanh chóng tích lũy hàng chục nghìn sao (stars) và fork.

Trong một tuyên bố với CNBC, Anthropic gọi đây là "vấn đề đóng gói bản phát hành do lỗi con người, không phải là sự cố bảo mật", đồng thời bổ sung rằng không có dữ liệu khách hàng hay thông tin đăng nhập nào bị liên quan. Công ty cho biết họ đang triển khai các biện pháp để ngăn chặn sự việc tái diễn.

Vậy điều gì đã sai? Một tệp .map — loại tạo tác gỡ lỗi giúp ánh xạ mã sản xuất đã rút gọn (minified) trở lại mã nguồn gốc — đã bị gộp nhầm vào gói npm được công bố. Tệp này tham chiếu đến mã nguồn TypeScript hoàn chỉnh, không bị làm mờ, được lưu trữ trên bộ nhớ đám mây R2 của riêng Anthropic, khiến nó có thể tải xuống trực tiếp dưới dạng lưu trữ ZIP. Claude Code sử dụng runtime Bun, công cụ này tạo source map theo mặc định trừ khi bạn tắt rõ ràng. Việc ngăn chặn điều này không quá phức tạp: thêm *.map vào .npmignore, duy trì danh sách cho phép (whitelist) trong trường files của package.json, hoặc chạy npm pack --dry-run trước khi công bố để kiểm tra những gì được đưa vào.

Nhà phát triển và chuyên gia phân tích bảo mật Gabriel Anhaia đã viết trong bài phân tích của mình trên cộng đồng DEV:

Một cấu hình sai lệch duy nhất tại .npmignore hoặc trường files trong package.json có thể lộ tất cả mọi thứ.

Đáng chú ý, đây reportedly không phải lần đầu tiên Anthropic phát hành các source map trong các gói npm của mình. Các phiên bản trước đó vào năm 2025 cũng bao gồm đầy đủ source map trước khi bị gỡ bỏ khỏi registry.

Cần lưu ý rằng đây là công cụ CLI Claude Code, không phải ứng dụng web claude.ai hay chính các mô hình LLM. Tuy nhiên, như một người dùng trên Reddit nhận xét:

Dù về mặt kỹ thuật không phải là tận thế vì các máy khách front-end luôn có thể bị ngược kỹ thuật, nhưng việc để lộ toàn bộ mã nguồn không bị làm mờ vẫn là một sai lầm khổng lồ, vì ở đó chứa một kho báu giá trị gồm các system prompt, thiết kế engine truy vấn/bối cảnh/RAG, logic điều phối viên (coordinator/orchestrator) và kiến trúc tác nhân tổng thể. Về cơ bản, đây là sách hướng dẫn tham khảo về cách thiết kế một tác nhân dựa trên LLM.

Không phải ai cũng đồng ý rằng thiệt hại nghiêm trọng như các tiêu đề báo chí gợi ý. Một người bình luận khác phản bác rằng:

Bất kỳ ai thực sự muốn nó thì đã có sẵn từ trước rồi. Các prompt liên quan đã có sẵn dưới dạng chuỗi tự do trong tệp thực thi. Toàn bộ mã nguồn bị rò rỉ đều có sẵn dưới dạng JS đã rút gọn.

Vì Claude Code là một ứng dụng JavaScript được đóng gói với runtime, mã nguồn rút gọn về mặt kỹ thuật luôn có thể truy cập được, mặc dù việc sở hữu mã TypeScript đầy đủ có chú thích, tên biến gốc và cấu trúc mô-đun mang lại mức độ tiếp xúc khác biệt hoàn toàn.

Những gì mã nguồn tiết lộ là một hệ thống phức tạp hơn nhiều so với giao diện dòng lệnh của Claude Code gợi ý. Kéo dài khoảng 1.900 tệp TypeScript và hơn 512.000 dòng mã, nguồn này đã được phân tích trên cộng đồng DEV, Hacker News và trong một bài phân tích chi tiết trên GitHub. Trong số các phát hiện: khoảng 40 công cụ riêng biệt, mỗi công cụ có cổng quyền riêng. Một engine truy vấn khoảng 46.000 dòng xử lý các lệnh gọi API LLM, truyền trực tuyến (streaming), bộ nhớ đệm và điều phối. Sự phối hợp đa tác nhân (multi-agent) cho phép tạo và quản lý các tác nhân công nhân song song. Tích hợp cầu nối IDE sử dụng xác thực JWT. Một hệ thống bộ nhớ liên tục hoàn thiện kiến trúc này.

Chôn sâu bên trong mã là nhiều tính năng chưa ra mắt được ẩn sau các cờ tính năng (feature flags). KAIROS mô tả chế độ daemon tự động, nơi Claude Code hoạt động như một tác nhân nền, thực hiện hợp nhất bộ nhớ khi người dùng không hoạt động. ULTRAPLAN có vẻ được thiết kế để chuyển các nhiệm vụ lập trình phức tạp sang cơ sở hạ tầng đám mây. BUDDY là một người bạn đồng hành AI theo phong cách Tamagotchi, hoàn chỉnh với các loài, cấp độ hiếm và chỉ số. Các tên mã mô hình nội bộ cũng hiển thị, với Capybara tương ứng với biến thể Claude 4.6 và Fennec tương ứng với biến thể Opus 4.6.

Một chi tiết thu hút sự chú ý đặc biệt: một hệ thống con gọi là "Undercover Mode" (Chế độ Ngụy trang). Được thiết kế để ngăn Claude Code tiết lộ thông tin nội bộ khi đóng góp cho các kho lưu trữ mã nguồn mở công khai, hệ thống này nhắc mô hình chèn các hướng dẫn yêu cầu không tham chiếu tên mã nội bộ, số phiên bản chưa phát hành, kênh Slack nội bộ hay việc nó là một AI. Điểm trớ trêu không bị người quan sát bỏ qua. Anthropic đã xây dựng toàn bộ một hệ thống con để ngăn AI của mình rò rỉ chi tiết nội bộ, nhưng một sơ suất cấu hình bản dựng (build) đã lộ toàn bộ mã nguồn.

Một người dùng trên Reddit đã làm nổi bật hàm ý bảo mật của logic điều phối bị rò rỉ:

Nếu bạn biết vị trí và cách áp dụng các biện pháp phòng thủ chống tiêm prompt (prompt injection), bạn có thể dễ dàng tìm ra cách vượt qua. Nếu bạn biết các system prompt, kẻ tấn công không cần phải đoán phần mở đầu nữa để tạo nội dung sử dụng đúng ngôn ngữ để lật ngược mô hình.

Trùng hợp vào thời điểm này, một cuộc tấn công chuỗi cung ứng riêng biệt và không liên quan đã đánh vào gói npm axios vào cùng ngày, lần đầu được báo cáo bởi StepSecurity. Giữa 00:21 và 03:29 UTC vào ngày 31/3, các phiên bản độc hại của axios (1.14.1 và 0.30.4) chứa mã độc truy cập từ xa (Remote Access Trojan) đã được công bố lên npm. Vì Claude Code phụ thuộc vào axios, bất kỳ ai cài đặt hoặc cập nhật nó trong khoảng thời gian đó có thể đã kéo về phụ thuộc bị xâm phạm. Các nhà phát triển nên kiểm tra các tệp lockfiles của họ để tìm các phiên bản cụ thể này hoặc phụ thuộc plain-crypto-js.

Đối với các nhóm doanh nghiệp dựa vào Claude Code như một phần của cơ sở hạ tầng phát triển của họ, sự cố này đặt ra những câu hỏi khó chịu. Việc lộ source map được cho là trường hợp thứ ba của loại lỗi này. Nó cũng xảy ra chưa đầy một tuần sau khi các tài liệu nội bộ mô tả một mô hình sắp ra mắt gọi là Claude Mythos được phát hiện trong bộ nhớ đệm dữ liệu công khai, đánh dấu đây là lần lộ thứ hai trong thời gian ngắn. Anthropic chưa công bố chi tiết các bước khắc phục cụ thể nào ngoài việc gỡ bỏ các phiên bản npm bị ảnh hưởng.

Bài viết được tổng hợp và biên soạn bằng AI từ các nguồn tin tức công nghệ. Nội dung mang tính tham khảo. Xem bài gốc ↗