top of page

"Sâu Shai-Hulud" trở lại lây nhiễm 868 gói phần mềm với hơn 2 tỷ lượt tải mỗi tháng

Hệ sinh thái mã nguồn mở npm vừa trải qua một đợt chấn động lớn. Ngày 4/8/2026, chiến dịch mã độc mang tên Shai-Hulud đã bùng phát trở lại dưới dạng một worm (loại mã độc có khả năng tự nhân bản và lây lan tự động). Cuộc tấn công nhắm trực tiếp vào chuỗi cung ứng phần mềm, chiếm quyền điều khiển tài khoản của nhà phát triển trọng yếu và nhanh chóng đầu độc hàng loạt thư viện lập trình phổ biến.

ma-doc-worm-shai-hulud
Mã độc worm Shai-Hulud

Quy mô lây nhiễm và cách thức xâm nhập chuỗi cung ứng

Chỉ trong một thời gian ngắn, đợt bùng phát này đã ảnh hưởng tới ít nhất 868 gói thư viện với hơn 1.381 phiên bản khác nhau. Ước tính tổng lượt tải về của các gói bị ảnh hưởng vượt mốc 2 tỷ lượt mỗi tháng, đặt toàn bộ hạ tầng phần mềm dùng chung vào trạng thái báo động đỏ.

Mọi chuyện bắt đầu khi kẻ tấn công chiếm được tài khoản GitHub của nhà phát triển phụ trách keyv – một thư viện lưu trữ dữ liệu rất phổ biến với khoảng 127 triệu lượt tải về mỗi tuần. Từ điểm tựa này, kẻ tấn công nhanh chóng đẩy các đoạn mã độc trực tiếp lên nhánh chính của dự án và phát hành các phiên bản mới.

Do nhà phát triển này đồng thời quản lý nhiều dự án lưu trữ bộ nhớ đệm (caching) quan trọng khác, hiệu ứng dây chuyền đã xảy ra ngay lập tức. Hàng loạt thư viện cốt lõi rơi vào tầm ảnh hưởng, bao gồm:

  • keyv phiên bản 6.0.0 (khoảng 604 triệu lượt tải/tháng).

  • flat-cache phiên bản 6.1.24 (580 triệu lượt tải/tháng).

  • file-entry-cache phiên bản 11.1.6 (571 triệu lượt tải/tháng).

  • cacheable-request phiên bản 13.0.20 (137 triệu lượt tải/tháng).

  • Nhiều dự án liên quan khác như cacheable, @cacheable/memory, cache-manager, @cacheable/node-cache, @cacheable/utils, @cacheable/net và ecto.

Không dừng lại ở một tác giả, worm này tự động lan truyền qua "mạng lưới tin tưởng" của hệ thống. Khi một nhà phát triển vô tình cài đặt gói chứa mã độc lên máy tính cá nhân, worm sẽ lấy cắp quyền hạn của họ để tiếp tục lây sang các dự án tiếp theo. Hậu quả là nhiều gói mã nguồn thuộc các tổ chức và tập đoàn lớn như Deliveroo (@deliveroo/reevent), Picsart (@picsart/ai-sdk), Qlik (@qlik/embed-runtime) hay Picasso.js cũng bị cuốn vào vòng xoáy lây nhiễm.

Cơ chế kích hoạt ngầm khi người dùng cài đặt ứng dụng

Điểm đáng chú ý của đợt tấn công này nằm ở cách mã độc tự động chạy mà không cần người dùng phải thao tác phức tạp. Mỗi gói thư viện bị đầu độc đều bị chèn thêm hai tệp tin mới là setup.mjs và Math_Symbol.js, đồng thời bổ sung một lệnh kích hoạt ngầm ("preinstall": "node setup.mjs") trong tệp cấu hình package.json.

Khi bất kỳ ai gõ lệnh cài đặt thư viện (npm install), hệ thống sẽ tự động chạy tệp setup.mjs trước khi quá trình cài đặt hoàn tất. Tệp setup.mjs đóng vai trò là một "kẻ tải ngầm" (dropper) đã được xáo trộn mã nhằm qua mặt các công cụ bảo mật. Tệp này sẽ âm thầm tải môi trường thực thi Bun JavaScript từ Internet về máy, sau đó dùng Bun để chạy tệp mã độc chính Math_Symbol.js.

Khả năng "vét sạch" dữ liệu xác thực và thông tin nhạy cảm

Tệp mã độc chính Math_Symbol.js có dung lượng khoảng 728 KB, hoạt động như một cỗ máy thu gom thông tin mật quy mô lớn. Nó rà soát và tìm kiếm gần như toàn bộ các loại chìa khóa truy cập quan trọng trên máy nạn nhân:

  • Mã xác thực dịch vụ phát triển (npm & GitHub): Tìm kiếm mã thông báo (token) npm trong tệp cấu hình .npmrc và kiểm tra tính hợp lệ trực tiếp với máy chủ npm. Đồng thời, nó trích xuất các loại token GitHub và thậm chí quét trực tiếp bộ nhớ của hệ thống tự động hóa GitHub Actions runner.

  • Tài khoản đám mây & Hạ tầng: Thu thập chứng thư truy cập AWS từ tệp cấu hình, biến môi trường và dịch vụ máy chủ. Nó cũng lấy cắp mã truy cập hệ thống quản trị container Kubernetes, chìa khóa HashiCorp Vault và quét sạch các thông tin lưu trữ trong đó.

  • Cổng thanh toán & Công cụ làm việc: Quét các chuỗi mã API của dịch vụ thanh toán Stripe và nền tảng trao đổi công việc Slack.

  • Quét toàn bộ ổ đĩa: Mã độc sử dụng khoảng 200 mẫu tìm kiếm để dò quét các tệp môi trường .env, khóa riêng SSH (*.pem, *.key), tệp cấu hình VPN, kho mật khẩu KeePass, dữ liệu cấu hình Terraform, Docker và các công cụ lập trình như VS Code hay Claude Code.

Phương thức mã hóa, tẩu tán và khả năng tự nhân bản

Để đảm bảo dữ liệu không bị chặn hay lộ ra ngoài, worm sẽ mã hóa toàn bộ thông tin thu thập được bằng thuật toán khóa công khai RSA trước khi gửi đi. Điều này đồng nghĩa chỉ có kẻ tấn công sở hữu khóa bảo mật riêng mới có thể giải mã và đọc được nội dung.

Kênh tẩu tán chính của dữ liệu là các kho lưu trữ công khai trên GitHub được đặt tên hoặc mô tả chứa chuỗi ký tự "Shai-Hulud: Here We Go Again". Nếu việc tải dữ liệu lên GitHub thất bại, mã độc sẽ chuyển sang kênh dự phòng (npm-cache[.]com). Địa chỉ mạng của kênh dự phòng này được truy xuất linh hoạt thông qua một hợp đồng thông minh (smart contract) trên mạng lưới blockchain Ethereum, giúp kẻ tấn công dễ dàng thay đổi hạ tầng mà không cần chỉnh sửa tệp mã độc.

chuoi-ky-tu-shai-hulud-here-we-go-again
Chuỗi ký tự "Shai-Hulud: Here We Go Again"

Nguy hiểm hơn, worm này còn chứa tính năng tự nhân bản cực kỳ chủ động theo hai con đường:

  1. Lây nhiễm qua gói npm: Sử dụng token npm vừa chiếm đoạt được để tìm tất cả các dự án mà nạn nhân có quyền quản trị. Nó tự động nâng số phiên bản, chèn mã độc (setup.mjs và math_init.js) rồi xuất bản (publish) phiên bản mới lên hệ thống chính thức.

  2. Lây nhiễm qua kho mã nguồn GitHub: Sử dụng token GitHub để tự động tạo commit trên các nhánh của dự án. Mã độc sẽ chèn thêm các đoạn kịch bản ẩn vào cấu hình của ứng dụng VS Code và Claude Code. Nhờ đó, chỉ cần một lập trình viên khác mở dự án bằng các công cụ này, mã độc sẽ lập tức khởi chạy mà không cần phải thực hiện lệnh cài đặt npm.

Sự trở lại của worm Shai-Hulud cho thấy mức độ tinh vi ngày càng tăng của các cuộc tấn công nhắm vào chuỗi cung ứng mã nguồn mở. Việc kẻ tấn công lợi dụng chính hạ tầng đám mây, dịch vụ tự động hóa và các công cụ lập trình phổ biến để biến máy tính của các nhà phát triển thành "trạm phát tán" mã độc đang đặt ra thách thức lớn đối với công tác kiểm tra an toàn thông tin của các doanh nghiệp và cộng đồng công nghệ hiện nay. 

Bình luận


theo dõi ipsip việt nam trên google news.png
conact-ipsip-vietnam
zalo
đặt lịch hẹn
bottom of page