Sâu Shai-Hulud tấn công chuỗi cung ứng npm và PyPI: 6 bước bảo vệ doanh nghiệp ngay lập tức

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

Sâu Shai-Hulud đã xâm nhập 172 gói npm và PyPI, đánh cắp thông tin xác thực từ AWS, SSH và cả cấu hình AI như Claude. Sâu này có khả năng tự duy trì và kích hoạt tính năng hủy dữ liệu khi token bị thu hồi, vượt qua các lớp bảo mật provenance. Bài viết cung cấp lộ trình kiểm tra và khắc phục sự cố an ninh nghiêm trọng này.

Sâu Shai-Hulud tấn công chuỗi cung ứng npm và PyPI: 6 bước bảo vệ doanh nghiệp ngay lập tức

Một cuộc tấn công chuỗi cung ứng phần mềm quy mô lớn đang diễn ra, nhắm vào hệ sinh thái npm và PyPI với sự xuất hiện của sâu Shai-Hulud. Kể từ ngày 11 tháng 5, hơn 172 gói phần mềm bị xâm phạm đã được phát hiện, ảnh hưởng đến hàng trăm triệu lượt tải xuống. Cuộc tấn công này đặc biệt nguy hiểm vì nó đánh cắp thông tin đăng nhập từ hơn 100 đường dẫn tệp, bao gồm khóa AWS, SSH, token npm, và thậm chí là cả cấu hình của các tác nhân AI như Claude và Kiro.

Đáng lo ngại hơn, sâu này có khả năng tự duy trì (persistence) ngay cả khi gói phần mềm bị gỡ cài đặt và chứa một cơ chế hủy dữ liệu tự động nếu nạn nhân cố gắng thu hồi quyền truy cập.

Cơ chế tấn công vượt qua lớp bảo mật provenance

Cuộc tấn công này bắt đầu bằng việc xâm nhập vào các gói phổ biến như @tanstack/* và mistralai. Điểm đáng chú ý là tất cả các phiên bản độc hại đều mang theo chứng thực nguồn gốc (provenance) hợp lệ của SLSA Build Level 3. Điều này chứng minh rằng việc có chữ ký số hay provenance không còn đảm bảo an toàn tuyệt đối nếu quy trình xuất bản (publish pipeline) bị sai lệch về phạm vi tin cậy.

Kẻ tấn công đã sử dụng kỹ thuật "orphaned commit" (commit mồ côi) để tiêm mã độc vào quy trình CI/CD. Bằng cách khai thác lỗ hổng trong cấu hình OIDC trusted publishing, chúng đã lấy được token xuất bản hợp lệ ngay cả khi không có lịch sử commit hay nhánh (branch) hợp lệ. Điều này cho thấy việc giới hạn phạm vi OIDC quan trọng hơn nhiều so với việc bật 2FA hay ký provenance.

Sâu Shai-Hulud nhắm vào cả môi trường phát triển AI

Sâu này không chỉ dừng lại ở việc đánh cắp thông tin đăng nhập truyền thống. Nó đặc biệt nhắm vào các công cụ lập trình hỗ trợ AI. Payload độc hại sẽ ghi đè cấu hình trong thư mục .claude/.vscode/, biến các tác nhân AI như Claude Code thành một phần của môi trường thực thi đáng tin cậy.

Mỗi khi nhà phát triển mở dự án, sâu sẽ được thực thi lại. Nó thu thập các token xác thực của máy chủ MCP (Model Context Protocol) mà các tác nhân AI sử dụng để kết nối với các dịch vụ bên ngoài. Đây là một trong những trường hợp đầu tiên phần mềm độc hại chuỗi cung ứng coi cấu hình tác nhân AI là mục tiêu có giá trị cao.

6 lỗ hổng CI/CD cần kiểm tra ngay lập tức

Dưới đây là lưới kiểm tra (audit grid) các lỗ hổng mà sâu Shai-Hulud đã khai thác và biện pháp khắc phục:

  1. Cấu hình OIDC: Đừng cấp quyền tin cậy ở cấp kho lưu trữ (repository level). Hãy ghim (pin) OIDC trusted publishing vào một tệp quy trình công việc cụ thể trên một nhánh được bảo vệ. Đảm bảo công việc xuất bản chạy trong một không gian làm việc sạch sẽ không sử dụng cache chưa được tin cậy.
  2. Provenance không đủ: Coi SLSA provenance là cần thiết nhưng chưa đủ. Hãy thêm phân tích hành vi tại thời điểm cài đặt. Các gói độc hại này đều có provenance hợp lệ nhưng đã bị công cụ quét AI phát hiện nhờ hành vi bất thường.
  3. Cách ly Cache: Hãy cách ly cache của GitHub Actions theo ranh giới tin cậy. Không bao giờ checkout và thực thi mã từ fork trong quy trình pull_request_target. Kẻ tấn công đã đầu độc cache pnpm thông qua kỹ thuật này.
  4. Kiểm tra optionalDependencies: Các công cụ phân tích thường bỏ qua optionalDependencies. Sâu này đã tiêm mã độc thông qua tham chiếu github: trỏ đến một commit mồ côi. Hãy chặn các refs trỏ đến các commit không phải là bản phát hành chính thức.
  5. Kiểm tra Python riêng biệt: Các biện pháp giảm thiểu của npm như --ignore-scripts không hiệu quả với Python. Gói mistralai độc hại thực thi mã ngay khi được import, không phải khi install. Các pipeline AI/ML cần được kiểm toán riêng biệt.
  6. Cách ly trước khi thu hồi: Đây là bước quan trọng nhất. Đừng thu hồi token npm trước khi cách ly máy bị nhiễm. Sâu cài một daemon sẽ quét GitHub mỗi 60 giây và kích hoạt lệnh rm -rf ~/ (xóa toàn bộ thư mục home) nếu phát hiện token bị thu hồi.

Kế hoạch hành động cho Giám đốc An ninh

Hôm nay

Thực hiện lệnh kiểm tra nhanh: find . -name 'router_init.js' -size +1Mgrep -r '79ac49eedf774dd4b0cfa308722bc463cfe5885c' package-lock.json. Nếu phát hiện, hãy cách ly máy ngay lập tức và tạo ảnh forensic (forensically image). Tuyệt đối không thu hồi token khi chưa cách ly máy chủ để tránh kích hoạt tính năng hủy dữ liệu.

Tuần này

Thay đổi mọi thông tin đăng nhập có thể truy cập được từ máy bị nhiễm: token npm, GitHub PAT, khóa AWS, token Vault, khóa SSH. Kiểm tra các gói có phiên bản bất thường sau ngày 11 tháng 5 và chặn các miền filev2.getsession[.]orggit-tanstack[.]com.

Tháng này

Kiểm toán mọi quy trình công việc GitHub Actions dựa trên 6 lỗ hổng nêu trên. Thiết lập npm config set min-release-age=7d. Với các đội ngũ AI/ML, hãy kiểm tra các gói guardrails-aimistralai đối với các phiên bản bị xâm phạm và xoay vòng mọi khóa API LLM.

Quý này (Cấp độ Hội đồng quản trị)

Đầu tư vào phân tích hành vi tại lớp registry gói phần mềm. Yêu cầu kiểm toán bảo mật CI/CD như một phần của đánh giá rủi ro nhà cung cấp. Thiết lập chính sách rằng không quy trình công việc nào có id-token: write được chạy từ một cache chia sẻ. Coi cấu hình tác nhân AI (.claude/, .kiro/, .vscode/) là kho lưu trữ thông tin đăng nhập cần được kiểm soát truy cập nghiêm ngặt.

Cuộc tấn công Shai-Hulud đang liên tục phát triển. Mã nguồn của sâu này đã được công khai, có nghĩa là bất kỳ tác nhân đe dọa nào cũng có thể triển khai chuỗi tấn công tương tự. Các nhà bảo vệ phải nhanh chóng thích nghi và lấp đầy các lỗ hổng về phạm vi tin cậy trong quy trình xuất bản phần mềm của mình.

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