Sâu ChainDrop tấn công chuỗi cung ứng npm, vượt qua các lớp phòng thủ tiêu chuẩn
ChainDrop, biến thể mới của sâu Shai-Hulud, đã lây nhiễm 444 gói npm với kỹ thuật phát tán qua tarball và móc nối vào công cụ phát triển, né tránh mọi kiểm tra nguồn mở thông thường. Cuộc tấn công nhắm vào các thư viện hạ tầng quan trọng như keyv, flat-cache và cache-manager, đe dọa hàng tỷ lượt tải mỗi tháng.

Sâu ChainDrop tấn công chuỗi cung ứng npm, vượt qua mọi lớp phòng thủ tiêu chuẩn
Một biến thể mới của sâu npm mang tên Shai-Hulud đã đầu độc hàng trăm gói phần mềm, đồng thời bổ sung kỹ thuật lây lan tinh vi có thể để lại rất ít dấu vết trong kho mã nguồn tương ứng.
Trong tiểu thuyết Dune của Frank Herbert, Shai-Hulud là tên gọi của những con giun cát khổng lồ tự duy trì sự sống, âm thầm di chuyển bên dưới bề mặt hành tinh Arrakis. Vì vậy, khi một loại mã độc tự sao chép có hành vi giống sâu máy tính xuất hiện vào tháng 9 năm 2025, các nhà nghiên cứu bảo mật đã đặt tên nó theo sinh vật hư cấu của Herbert.
Biến thể mới nhất của Shai-Hulud, được Microsoft và các bên khác đặt tên là "ChainDrop", không chỉ đơn thuần là phần tiếp theo. Cộng đồng npm hiện đang phát hiện ra rằng biến thể này có những siêu năng lực tàng hình mới, cho phép nó vượt qua các biện pháp bảo vệ thông thường của kho mã nguồn mở.
Vào ngày 4 tháng 8, nhiều nhà nghiên cứu bảo mật đã xác định một cuộc tấn công chuỗi cung ứng npm quy mô lớn sử dụng biến thể Shai-Hulud này, lây nhiễm 444 gói từ nhiều nhà phát hành khác nhau, với tổng số lượt tải khoảng 2 tỷ lần mỗi tháng. Chiến dịch này nhắm vào các phụ thuộc hạ tầng sâu và được sử dụng rộng rãi như keyv, flat-cache và cache-manager.
Phương thức lây lan độc đáo qua tarball
Abby Kearns, CEO của công ty bảo mật mã nguồn mở doanh nghiệp ActiveState, nhận xét trong một bài đăng trên Medium rằng điều đặc biệt của cuộc tấn công này là nó không sử dụng các phương pháp điển hình để xâm nhập vào hệ thống phòng thủ của kho mã nguồn mở.
Ngay cả khi bạn không cài đặt gói bị nhiễm (theo thuật ngữ npm là npm install), bạn vẫn có thể bị nhiễm mã độc – mặc dù đó là một con đường lây nhiễm khả dĩ. Khi được kích hoạt, ChainDrop còn đặt các móc khởi động vào chính các tệp cấu hình của kho lưu trữ: Chỉ cần mở một nhánh Git bị nhiễm trong VS Code hoặc Claude Code có thể đưa kho lưu trữ của bạn vào tầm kiểm soát của ChainDrop.
Việc rà soát mã nguồn của bạn có thể không cung cấp bằng chứng về sự can thiệp. ChainDrop không lây lan qua các commit trong kho mã nguồn mà qua tarball – một định dạng lưu trữ dùng để tải xuống các gói phần mềm.
Cơ chế hoạt động của ChainDrop
Khi được thực thi, phần mềm này quét không gian làm việc của người dùng để tìm token npm có quyền ghi đầy đủ, cũng như các thông tin xác thực khác như khóa đám mây và bí mật. Nó tìm kiếm trong các tệp cấu hình shell, biến môi trường và thậm chí cả bộ nhớ đang hoạt động. Mọi dữ liệu bị đánh cắp đều được mã hóa và gửi về các điểm cuối do kẻ tấn công kiểm soát.
Nếu tìm thấy token npm, nó sẽ tải xuống tarball của tất cả các gói mà token đó có toàn quyền truy cập, bỏ qua chính các kho lưu trữ.
"Đó chính là điểm tinh vi: ChainDrop tự nhân bản bằng cách xây dựng lại tarball để bao gồm tải trọng của chính nó. Việc xem xét kho mã nguồn sẽ không phát hiện ra bất kỳ dấu hiệu bất thường nào."
Cuộc tấn công của ChainDrop có hai hướng. Nó cũng tìm kiếm thông tin đăng nhập GitHub. Nếu tìm thấy, nó sẽ truy vấn API GitHub để liệt kê tất cả các kho lưu trữ và nhánh có thể truy cập, sau đó ghi mã cấu hình độc hại trực tiếp vào các nhánh đó.
Khi các nhà phát triển khác mở các kho lưu trữ này bằng Claude hoặc VS Code, một tác vụ nền sẽ được kích hoạt để thu thập thông tin xác thực, bắt đầu một chu kỳ lây nhiễm mới.
Điều các nhà phát triển cần làm
Cuộc tấn công này đặc biệt nguy hiểm vì npm được tích hợp sâu vào các quy trình CI/CD tự động, có thể tự động kéo các bản vá phụ thuộc trong quá trình xây dựng lại – tạo điều kiện cho sâu này xâm nhập vào các bản build mới.
Nếu bạn nghi ngờ mình đã bị nhiễm, việc đầu tiên cần làm là kiểm tra các tệp .claude/settings.json và .vscode/tasks.json mà bạn không tự tạo ra, Kearns khuyến cáo. Và đừng chỉ kiểm tra nhánh chính mà hãy kiểm tra tất cả các nhánh khác.
Tất cả các gói bị nhiễm đã nhanh chóng bị gỡ khỏi npm. Công ty bảo mật mã nguồn mở SafeDep cung cấp danh sách tất cả các gói bị xâm phạm kèm số phiên bản, vì vậy hãy đối chiếu với những gì bạn đang chạy.
"Điều mà chiến dịch này thực sự tìm thấy là một đường thực thi mà các công cụ quét phụ thuộc không được cấu hình để xem xét, nằm ngay bên trong các công cụ mà các tổ chức kỹ thuật đã dành hai năm để áp dụng nhanh nhất có thể," Kearns viết. "Đây là chiến dịch đầu tiên nhận ra khoảng trống này và khai thác nó ở quy mô lớn. Nó sẽ không phải là chiến dịch cuối cùng."
Ngoài việc dọn dẹp, các nhà phát triển và nhóm bảo mật nên xem xét lại cách hệ thống của họ có thể bị xâm nhập trước sự xuất hiện của ChainDrop. Các công cụ xuất bản đáng tin cậy như GitHub Actions cần được đánh giá ngay từ đầu. Hãy bắt đầu "coi cấu hình do kho lưu trữ cung cấp là nội dung thực thi", bởi vì bản chất bây giờ nó chính là như vậy.
