Cuộc Tấn Công Chuỗi Cung Ứng NPM Quy Mô Lớn Xâm Nhập Hơn 180 Gói Phần Mềm Với Malware Tự Nhân Bản

Nhóm Cộng đồng BigGo
Cuộc Tấn Công Chuỗi Cung Ứng NPM Quy Mô Lớn Xâm Nhập Hơn 180 Gói Phần Mềm Với Malware Tự Nhân Bản

Một cuộc tấn công chuỗi cung ứng tinh vi đã tấn công hệ sinh thái NPM, xâm nhập hơn 180 gói phần mềm với malware tự nhân bản có khả năng lan truyền như một con sâu kỹ thuật số. Cuộc tấn công được đặt tên là Shai Hulud theo tên loài sâu cát khổng lồ trong series Dune, đại diện cho một trong những vụ xâm nhập rộng lớn nhất vào kho lưu trữ gói JavaScript từ trước đến nay.

Thống kê cuộc tấn công:

  • Các gói bị xâm phạm: Hơn 180 gói
  • Kích thước mã độc: Gói nén 3.6MB đã được tối ưu hóa
  • Hệ thống mục tiêu: Linux và macOS (cố tình loại trừ Windows )
  • Vector tấn công: Đánh cắp token xác thực NPM và tự động xuất bản gói

Thiết Kế Malware Tự Lan Truyền

Malware hoạt động như một con sâu tự nhân bản có khả năng tự động lan truyền đến các gói mới một khi nó có quyền truy cập vào hệ thống của nhà phát triển. Khi được cài đặt, mã độc hại sẽ tìm kiếm các token xác thực NPM và sử dụng chúng để phát hành các phiên bản bị nhiễm của các gói khác mà nhà phát triển duy trì. Điều này tạo ra hiệu ứng dây chuyền trong đó mỗi gói bị xâm nhập trở thành điểm khởi đầu cho các cuộc nhiễm độc tiếp theo.

Cuộc tấn công đặc biệt nhắm vào các hệ thống Linux và macOS, cố ý bỏ qua môi trường Windows. Malware bao gồm một gói bundle đã được minified có dung lượng lên đến 3.6MB để xử lý việc đánh cắp thông tin xác thực, trinh sát hệ thống và tự động lan truyền đến các gói mới.

Thu Thập Thông Tin Xác Thực Của Nhà Phát Triển

Ngoài việc lan truyền qua hệ sinh thái NPM, malware còn chủ động tìm kiếm các thông tin xác thực nhạy cảm được lưu trữ trên các hệ thống bị nhiễm. Nó nhắm vào các khóa truy cập AWS, token GitHub và các tài liệu xác thực khác có thể cung cấp quyền truy cập vào cơ sở hạ tầng đám mây và kho lưu trữ mã nguồn. Cách tiếp cận hai mục đích này khiến cuộc tấn công trở nên đặc biệt nguy hiểm, vì nó có thể dẫn đến việc xâm nhập hệ thống rộng lớn hơn ngoài các kho lưu trữ gói.

Cuộc tấn công cho thấy cách các mối đe dọa chuỗi cung ứng hiện đại đã phát triển vượt ra ngoài việc chèn mã đơn giản để trở thành các hoạt động thu thập thông tin xác thực tinh vi có thể tồn tại trên nhiều hệ thống và dịch vụ.

Ví dụ về các gói bị ảnh hưởng:

  • ARCVinylcolor
  • @ctrl/tinycolor
  • Nhiều gói NPM của CrowdStrike
  • Nhiều gói trong hệ sinh thái " nx "
  • Các gói có hàng triệu lượt tải xuống hàng tuần
Cảnh báo bảo mật làm nổi bật cuộc tấn công chuỗi cung ứng NPM và các gói bị xâm phạm
Cảnh báo bảo mật làm nổi bật cuộc tấn công chuỗi cung ứng NPM và các gói bị xâm phạm

Phản Ứng Của Cộng Đồng Và Chiến Lược Giảm Thiểu

Cộng đồng phát triển JavaScript đã phản ứng với sự kết hợp giữa lo ngại và các giải pháp thực tế. Nhiều nhà phát triển đang xem xét lại các thực hành quản lý dependency của họ, với một số ủng hộ việc kiểm soát nghiêm ngặt hơn đối với việc cài đặt gói và những người khác kêu gọi thay đổi cơ bản trong cách hệ sinh thái xử lý mã của bên thứ ba.

Đây là vấn đề văn hóa với các nhà phát triển, những người thấy việc có hàng trăm dependency (bắc cầu) là bình thường, và sau đó tuân theo các quy trình mà về cơ bản là tự động cập nhật chúng một cách mù quáng.

Một số package manager đã triển khai các biện pháp bảo vệ. PNPM hiện chặn các lifecycle script theo mặc định trừ khi được đưa vào danh sách trắng một cách rõ ràng, trong khi các công cụ khác đang khám phá các tính năng cài đặt trì hoãn sẽ ngăn các gói mới được phát hành khỏi việc tự động cài đặt trong một khoảng thời gian nhất định.

Các Công Cụ Giảm Thiểu Bảo Mật:

  • PNPM: Chặn các lifecycle script theo mặc định, yêu cầu đưa vào danh sách trắng
  • Cài Đặt Trì Hoãn: Cài đặt minimumReleaseAge để ngăn chặn việc cài đặt ngay lập tức các package mới
  • Quét Package: Phát hiện tự động bởi Socket.dev , Aikido Security , và các nhà cung cấp bảo mật khác
  • OIDC Publishing: Các nhà xuất bản đáng tin cậy để giảm thiểu các lỗ hổng dựa trên token
Bài đăng blog thảo luận về cuộc tấn công chuỗi cung ứng và phản ứng của cộng đồng trong hệ sinh thái JavaScript
Bài đăng blog thảo luận về cuộc tấn công chuỗi cung ứng và phản ứng của cộng đồng trong hệ sinh thái JavaScript

Tác Động Rộng Lớn Đến Hệ Sinh Thái

Cuộc tấn công này làm nổi bật những thách thức bảo mật cơ bản mở rộng ra ngoài NPM đến các hệ sinh thái gói khác bao gồm PyPI của Python, Cargo của Rust và Go modules. Văn hóa micro-dependency của hệ sinh thái JavaScript tạo ra một bề mặt tấn công lớn bất thường, với các dự án điển hình thường bao gồm hàng trăm hoặc hàng nghìn transitive dependency.

Sự cố này đã làm tái diễn các cuộc thảo luận về nhu cầu có các thư viện chuẩn tốt hơn, yêu cầu ký gói và quét bảo mật mạnh mẽ hơn trước khi các gói được cung cấp để cài đặt. Một số nhà phát triển đang kêu gọi NPM triển khai xác thực hai yếu tố bắt buộc cho tất cả nhà phát hành và giới thiệu thời gian chờ cho các gói mới được phát hành.

Cuộc tấn công này đóng vai trò như một lời nhắc nhở nghiêm khắc rằng sự phụ thuộc nặng nề của phát triển phần mềm hiện đại vào các gói của bên thứ ba tạo ra những rủi ro bảo mật đáng kể đòi hỏi cả giải pháp kỹ thuật và thay đổi văn hóa trong cách các nhà phát triển tiếp cận quản lý dependency.

Tham khảo: ARCVinylcolor and 46+ NPM Packages Compromised

Biểu diễn trực quan về các mối quan ngại bảo mật liên quan đến hệ sinh thái package rộng lớn hơn dưới ánh sáng của cuộc tấn công chuỗi cung ứng gần đây
Biểu diễn trực quan về các mối quan ngại bảo mật liên quan đến hệ sinh thái package rộng lớn hơn dưới ánh sáng của cuộc tấn công chuỗi cung ứng gần đây