Tấn công chuỗi cung ứng mới nhắm vào các gói npm của SAP, Intercom và PyPI Lightning

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

Một làn sóng tấn công chuỗi cung ứng mới đã xuất hiện, nhắm vào các công cụ bảo mật và phát triển phần mềm. Các gói npm của SAP và Intercom cùng với gói PyPI Lightning đã bị cài mã độc đánh cắp thông tin đăng nhập, được gọi là sâu "Mini Shai-Hulud".

Tấn công chuỗi cung ứng mới nhắm vào các gói npm của SAP, Intercom và PyPI Lightning

Làn sóng tấn công chuỗi cung ứng nhắm vào các công cụ bảo mật và phát triển phần mềm tiếp tục mở rộng với những nạn nhân mới. Các gói npm của SAP và Intercom, cũng như gói PyPI Lightning, đã bị phát hiện chứa mã độc đánh cắp thông tin xác thực.

Chiến dịch độc hại mới nhất này được đặt tên là sâu "Mini Shai-Hulud", hoạt động tương tự như các biến thể malware tự lan truyền trước đây. Các công ty an ninh mạng Wiz và Socket đã đưa ra cảnh báo về việc các gói phần mềm phổ biến bị xâm phạm để phát tán mã độc.

Các gói phần mềm bị xâm phạm

Theo các báo cáo, danh sách các gói phần mềm bị ảnh hưởng bao gồm:

  • Các gói npm liên quan đến SAP: [email protected], @cap-js/[email protected], @cap-js/[email protected], và @cap-js/[email protected]. Tổng cộng, bốn gói này có khoảng 572.000 lượt tải xuống mỗi tuần và được các nhà phát triển sử dụng rộng rãi để xây dựng ứng dụng đám mây.
  • Gói npm của Intercom: [email protected][email protected]. Đây là SDK chính thức cho API của nền tảng truyền thông khách hàng Intercom, với khoảng 360.000 lượt tải xuống hàng tuần và hơn 100 dự án phụ thuộc.
  • Gói PyPI Lightning: Các phiên bản 2.6.22.6.3 của Lightning, một khung học sâu (deep learning framework) phổ biến用于 đào tạo và triển khai các sản phẩm AI, được tải xuống hàng trăm nghìn lần mỗi ngày.

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

Tất cả các gói nêu trên đều bị nhiễm cùng một loại mã độc đánh cắp thông tin xác thực. Đối với các gói npm, kẻ tấn công đã chèn các tập lệnh preinstall độc hại vào gói cài đặt. Các tập lệnh này được thiết kế để thực thi tự động mỗi khi lệnh npm install được chạy, cho phép mã của kẻ tấn công chạy trước bất kỳ mã ứng dụng nào.

"Payload giai đoạn hai là một khung công tác đánh cắp thông tin xác thực và lan truyền, được thiết kế để nhắm mục tiêu vào cả môi trường phát triển và đường ống CI/CD," các nhà nghiên cứu của Wiz cho biết.

Mã độc này hoạt động theo nhiều giai đoạn phức tạp:

  1. Thu thập dữ liệu nhạy cảm bao gồm token GitHub, thông tin đăng nhập npm, bí mật đám mây (AWS, Azure, GCP), token Kubernetes và bí mật GitHub Actions.
  2. Mã hóa toàn bộ dữ liệu đã đánh cắp.
  3. Tống dữ liệu đã mã hóa vào một kho lưu trữ GitHub công cộng mới dưới tài khoản của chính nạn nhân.
  4. Sử dụng logic tự lan truyền để lây nhiễm thêm các kho lưu trữ và phân phối gói phần mềm khác.

Đối với gói PyPI Lightning, mã độc được thực thi khi nhập mô-đun (import). Socket nhận thấy rằng payload JavaScript bị làm rối trong gói này có nhiều điểm tương đồng với các cuộc tấn công Shai-Hulud trước đây.

Thủ phạm và phản ứng từ các bên liên quan

Cả Wiz và Socket đều quy trách nhiệm cho sự xâm phạm liên quan đến SAP cho nhóm tội phạm mạng TeamPCP. Nhóm này từng bị liên kết với các cuộc tấn công chuỗi cung ứng trước đây nhắm vào Checkmarx, Bitwarden, Telnyx, LiteLLM và Aqua Security Trivy.

Cuộc tấn công vào gói intercom-clientlightning vào thứ Năm cũng được cho là chứa mã độc tương tự như hoạt động của TeamPCP.

Hiện tại, SAP chưa trả lời trực tiếp các câu hỏi nhưng đã đưa ra một tuyên bố cho biết một "ghi chú bảo mật" đã được xuất bản và dành cho khách hàng cũng như đối tác của họ. Tuy nhiên, ghi chú này chỉ có thể truy cập được bởi những khách hàng đã đăng nhập. Intercom và Lightning (PyTorch Lightning) vẫn chưa đưa ra phản hồi chính thức tại thời điểm bài viết này được thực hiện.

Sự kiện này nhấn mạnh sự gia tăng và nguy hiểm ngày càng tăng của các cuộc tấn công chuỗi cung ứng, đặc biệt là khi chúng nhắm trực tiếp vào các công cụ mà các nhà phát triển tin tưởng sử dụng hàng ngày.

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 ↗