Mini Shai-Hulud Tấn Công Trở Lại: Hơn 300 Gói Npm Bị Cài Mã Độc

AI & ML19 tháng 5, 2026·5 phút đọc

Tài khoản npm `atool` bị xâm phạm, dẫn đến việc phát hành 637 phiên bản độc hại trên 317 gói trong vòng 22 phút. Malware "Mini Shai-Hulud" đánh cắp thông tin xác thực từ AWS, GitHub, Docker và sử dụng GitHub làm kênh C2, ảnh hưởng đến các thư viện phổ biến như `echarts-for-react`.

Mini Shai-Hulud Tấn Công Trở Lại: Hơn 300 Gói Npm Bị Cài Mã Độc

Một cuộc tấn công chuỗi cung ứng phần mềm quy mô lớn vừa được phát hiện, nhắm vào hệ sinh thái npm với tên mã "Mini Shai-Hulud". Vào ngày 19 tháng 5 năm 2026, tài khoản npm atool ([email protected]) đã bị xâm phạm, cho phép kẻ tấn công tự động phát hành 637 phiên bản độc hại lên 317 gói thư viện trong vòng chỉ 22 phút.

Tấn công chuỗi cung ứng npmTấn công chuỗi cung ứng npm

Đây được đánh giá là một trong những cuộc tấn công tinh vi nhất, không chỉ đánh cắp thông tin xác thực mà còn tận dụng các công cụ AI hiện đại và cơ chế hạ tầng đám mây để duy trì sự tồn tại.

Tác động và các gói bị ảnh hưởng

Trong số các gói bị ảnh hưởng, có nhiều thư viện JavaScript phổ biến với hàng triệu lượt tải xuống mỗi tháng, bao gồm:

  • size-sensor (4,2 triệu lượt/tháng)
  • echarts-for-react (3,8 triệu lượt/tháng)
  • @antv/scale (2,2 triệu lượt/tháng)
  • timeago.js (1,15 triệu lượt/tháng)
  • Hàng trăm gói khác trong phạm vi @antv.

Đáng lo ngại, kẻ tấn công không di chuyển thẻ latest (phiên bản mới nhất) trên hầu hết các gói. Điều này tạo ra một cảm giác an toàn giả tạo vì npm’s semver (quy trình phân giải phiên bản) vẫn sẽ tự động chọn phiên bản độc hại mới nhất phù hợp với phạm vi phiên bản (ví dụ: ^3.0.6) trong lần cài đặt tiếp theo.

Cơ chế hoạt động của Malware Mini Shai-Hulud

Mỗi phiên bản bị xâm phạm đều thêm một tập lệnh preinstall vào package.json để thực thi mã độc. Payload là một tập lệnh Bun kích thước 498KB đã bị làm rối (obfuscated), phù hợp với bộ công cụ Mini Shai-Hulud từng được sử dụng trong vụ tấn công SAP ba tuần trước đó.

Malware này hoạt động như một bộ quét thông tin xác thực toàn diện, nhắm mục tiêu đến:

  • Chuỗi AWS đầy đủ (biến môi trường, tệp cấu hình, EC2 IMDS, ECS).
  • Token dịch vụ Kubernetes, HashiCorp Vault.
  • GitHub PATs (Personal Access Tokens), npm tokens.
  • SSH keys, Docker auth, Stripe keys, Slack tokens.

Malware npm và hooksMalware npm và hooks

Kênh C2 và Exfiltration qua GitHub

Điểm độc đáo của cuộc tấn công này là kẻ tấn công không sử dụng máy chủ điều khiển (C2 server) riêng. Thay vào đó, chúng sử dụng chính API của GitHub làm kênh exfiltration.

Dữ liệu bị đánh cắp được commit lên các kho lưu trữ công khai mới được tạo dưới tài khoản token bị đánh cắp. Các kho lưu trữ này có tên theo quy mô Dune (ví dụ: harkonnen-melange-742, fremen-sandworm-315) để tránh bị phát hiện. User-Agent được giả mạo thành python-requests/2.31.0 để trộn lẫn với lưu lượng truy cập hợp pháp.

Lợi dụng CI/CD và ký mã Sigstore

Trong môi trường CI, malware thực hiện trao đổi token OIDC của GitHub Actions để lấy token publish npm. Nó thậm chí ký các artifact (tệp tin tạo phẩm) thông qua Sigstore (Fulcio + Rekor) bằng cách sử dụng danh tính bị đánh cắp, tạo ra các tệp có chữ ký hợp pháp nhưng nguồn gốc bị giả mạo.

Ngoài ra, malware tiêm mã độc vào .github/workflows/codeql.yml để đổ toàn bộ bí mật (secrets) của repository ra artifact, sau đó tự xóa sạch dấu vết.

Chiếm quyền điều khiển AI Agent

Một trong những vector tấn công mới nhất là nhắm vào các tác nhân AI viết code. Malware tiêm các hook vào:

  • Claude Code: Thêm SessionStart hook trong .claude/settings.json để thực thi mã mỗi khi phiên AI bắt đầu.
  • VS Code / Codex: Tạo task "runOn": "folderOpen" để kích hoạt malware khi nhà phát triển mở thư mục dự án.

Chiếm quyền kiểm soát npmChiếm quyền kiểm soát npm

Kỹ thuật "Imposter Commits" và Persistence

Để đảm bảo mã độc vẫn được thực thi ngay cả khi hook preinstall bị chặn, kẻ tấn công đã sử dụng kỹ thuật "Imposter Commits". Chúng thêm một optionalDependencies trỏ đến một commit cụ thể trong kho lưu trữ antvis/G2 của Ant Group.

Đây là các commit mồ côi (orphan commits) không thuộc nhánh nào, được tạo bởi một fork đã bị xóa. GitHub cho phép lấy nội dung của commit theo SHA mà không cần quyền ghi vào kho lưu trữ mục tiêu, biến bất kỳ repo phổ biến nào thành host chứa payload độc hại.

Malware cũng cài đặt một systemd service trên Linux hoặc LaunchAgent trên macOS tên là kitty-monitor. Đây là một backdoor C2 kiểu "dead-drop", thăm dò API tìm kiếm commit của GitHub mỗi giờ để tìm các lệnh điều khiển được ký bằng RSA-PSS.

Khuyến nghị bảo mật

Nếu bạn nghi ngờ hệ thống của mình bị ảnh hưởng, cần thực hiện các bước sau ngay lập tức:

  1. Kiểm tra package-lock.json hoặc pnpm-lock.yaml để tìm các phiên bản được xuất bản vào ngày 2026-05-19 bởi tài khoản atool.
  2. Xoay vòng (rotate) tất cả thông tin xác thực có thể truy cập được từ môi trường build: npm tokens, GitHub PATs, AWS keys, SSH keys.
  3. Kiểm tra các kho lưu trữ GitHub công khai bất thường được tạo dưới tài khoản của bạn.
  4. Rà soát các dự án Node.js cục bộ để tìm các tệp .claude/settings.json hoặc .vscode/tasks.json bị chèn mã lạ.

Cuộc tấn công này một lần nữa nhắc nhở cộng đồng phát triển về sự lỏng lẻo trong chuỗi cung ứng phần mềm hiện đại và tầm quan trọng của việc kiểm tra nghiêm ngặt các phụ thuộc cũng như quản lý quyền truy cập CI/CD.

Chia sẻ:FacebookX
Nội dung tổng hợp bằng AI, mang tính tham khảo. Xem bài gốc ↗