NPM đối mặt Tấn Công Mạng nghiêm trọng: Mã độc tự lan truyền

NPM đối mặt Tấn Công Mạng nghiêm trọng: Mã độc tự lan truyền

Hệ sinh thái NPM một lần nữa trở thành mục tiêu của một chiến dịch tấn công mạng tinh vi, gây ra sự thỏa hiệp chuỗi cung ứng nhắm vào gói @ctrl/tinycolor được sử dụng rộng rãi cùng hơn 40 gói JavaScript khác. Sự cố này đánh dấu một bước leo thang đáng kể trong các mối đe dọa chuỗi cung ứng, với đặc điểm là mã độc tự lan truyền trên diện rộng.

Vụ việc lần đầu tiên được phát hiện bởi nhà nghiên cứu bảo mật @franky47, người đã kịp thời báo cáo vấn đề thông qua cảnh báo GitHub. Cuộc tấn công mạng này đã nhắm vào các phiên bản 4.1.14.1.2 của gói @ctrl/tinycolor, một gói nhận được hơn 2 triệu lượt tải xuống hàng tuần từ các nhà phát triển trên toàn thế giới.

Nội dung
Diễn biến Tấn Công Mạng và Cơ chế Lây nhiễm Mã độc

Kỹ thuật Tự Lan Truyền và Tăng cường Phạm vi
Thu thập Thông tin Đăng nhập và Kỹ thuật Duy trì Truy cập
Các Gói Bị Ảnh Hưởng và Chỉ số Thỏa hiệp (IOCs)

Chỉ số Thỏa hiệp (Indicators of Compromise – IOCs) Cần Lưu Ý
Biện pháp Ứng phó và Tăng cường An Ninh Mạng cho Chuỗi Cung Ứng

Các Giải pháp Bảo mật Chuyên dụng cho Chuỗi Cung Ứng

Diễn biến Tấn Công Mạng và Cơ chế Lây nhiễm Mã độc

Điểm đặc biệt nguy hiểm của sự cố này là khả năng tự động lan truyền của mã độc sang các gói khác. Các gói này có thể thuộc cùng một tác giả hoặc có thể truy cập được thông qua thông tin đăng nhập đã bị xâm phạm. Điều này cho phép một cuộc tấn công ban đầu leo thang nhanh chóng.

Socket.dev đã cung cấp phân tích kỹ thuật toàn diện về cuộc tấn công, tiết lộ một chuỗi lây nhiễm nhiều giai đoạn với mức độ tinh vi đáng lo ngại. Mặc dù các gói bị xâm phạm đã được gỡ bỏ khỏi kho NPM, nhưng nguy cơ thiệt hại tiềm tàng và các hậu quả dài hạn vẫn cần được đánh giá.

Kỹ thuật Tự Lan Truyền và Tăng cường Phạm vi

Cuộc tấn công sử dụng một cách tiếp cận nhiều giai đoạn, khác biệt so với các vụ thỏa hiệp chuỗi cung ứng thông thường. Mã độc được thiết kế để tự động nhân bản mà không cần sự can thiệp thủ công, tạo ra một mối đe dọa lớn hơn.

Cụ thể, mã độc sử dụng một hàm có tên NpmModule.updatePackage để tự động lan truyền sang các gói bổ sung. Khả năng tự lan truyền này biến một sự thỏa hiệp gói đơn lẻ thành một mối đe dọa trên toàn hệ sinh thái.

Để giảm thiểu rủi ro, các nhóm phát triển có thể áp dụng khoảng thời gian chờ ngắn trước khi cho phép các dependency mới. Biện pháp này giúp ngăn chặn việc sử dụng các gói mới bị thỏa hiệp trước khi chúng được phát hiện và báo cáo.

Thu thập Thông tin Đăng nhập và Kỹ thuật Duy trì Truy cập

Mã độc tải xuống và tái sử dụng TruffleHog, một công cụ quét bí mật hợp pháp, cho mục đích thu thập thông tin đăng nhập. Việc repurpose một công cụ hợp pháp cho mục đích độc hại cho thấy sự khéo léo của kẻ tấn công.

Mã độc nhắm mục tiêu một cách có hệ thống vào các loại thông tin đăng nhập quan trọng như:

  • Token xác thực NPM
  • Token truy cập cá nhân GitHub (Personal Access Tokens – PATs)
  • Khóa truy cập AWS
  • Thông tin đăng nhập Google Cloud Platform
  • Chi tiết xác thực Azure

Ngoài ra, mã độc còn cố gắng truy cập các endpoint metadata đám mây để trích xuất thêm thông tin nhạy cảm. Đây là một ví dụ điển hình về việc khai thác các điểm yếu trong cấu hình để dẫn đến rò rỉ dữ liệu quy mô lớn.

Để duy trì quyền truy cập (persistence) lâu dài, cuộc tấn công tạo một tệp workflow GitHub Actions độc hại tại đường dẫn .github/workflows/shai-hulud-workflow.yml. Workflow này có thể được kích hoạt từ xa để lây nhiễm lại các kho lưu trữ hoặc trích xuất dữ liệu bổ sung rất lâu sau khi sự thỏa hiệp ban đầu, đảm bảo khả năng kiểm soát liên tục cho kẻ tấn công.

Các Gói Bị Ảnh Hưởng và Chỉ số Thỏa hiệp (IOCs)

Cuộc tấn công mạng này đã ảnh hưởng đến nhiều gói quan trọng trên nhiều nhà duy trì khác nhau, cho thấy một chiến dịch có tổ chức. Ngoài @ctrl/tinycolor, các gói bị xâm phạm còn bao gồm:

  • angulartics2 (phiên bản 14.1.2)
  • Nhiều gói trong namespace @ctrl
  • Các gói @nativescript-community
  • Nhiều thư viện React và Angular

Phạm vi rộng lớn của các gói bị ảnh hưởng cho thấy cách tiếp cận có hệ thống của cuộc tấn công nhằm thỏa hiệp hệ sinh thái phát triển phần mềm.

Chỉ số Thỏa hiệp (Indicators of Compromise – IOCs) Cần Lưu Ý

Mỗi gói bị xâm phạm đều chứa tệp bundle.js độc hại với các chỉ số sau. Các tổ chức cần kiểm tra hệ thống của mình để phát hiện sự hiện diện của chúng:

  • SHA-256 Hash của bundle.js:46faab8ab153fae6e80e7cca38eab363075bb524edd79e42269217a083628f09
  • URL Exfiltration (Máy chủ C&C):webhook.site/bb8ca5f6-4175-45d2-b042-fc9ebb8170b7
  • Malicious Workflow Path:.github/workflows/shai-hulud-workflow.yml

Biện pháp Ứng phó và Tăng cường An Ninh Mạng cho Chuỗi Cung Ứng

Các tổ chức sử dụng bất kỳ gói bị ảnh hưởng nào phải hành động ngay lập tức để đối phó với cuộc tấn công mạng này và giảm thiểu thiệt hại. Bước đầu tiên là xác định và gỡ bỏ hoặc hạ cấp tất cả các gói bị xâm phạm khỏi môi trường phát triển và hệ thống sản xuất. Việc này cần được thực hiện một cách có hệ thống.

Cần kiểm tra sự hiện diện của các tệp workflow độc hại trong kho lưu trữ mã nguồn và kiểm tra hoạt động xuất bản NPM gần đây để tìm các sửa đổi trái phép. Mọi hoạt động bất thường cần được điều tra kỹ lưỡng.

Tất cả các thông tin đăng nhập có khả năng bị lộ trong môi trường bị xâm phạm đều yêu cầu xoay vòng ngay lập tức. Điều này bao gồm:

  • Token NPM
  • Token truy cập cá nhân GitHub
  • Thông tin đăng nhập AWS IAM
  • Khóa tài khoản dịch vụ Google Cloud
  • Nguyên tắc dịch vụ Azure

Với bản chất toàn diện của việc thu thập thông tin đăng nhập, hãy giả định rằng bất kỳ bí mật nào có thể truy cập được bởi các hệ thống bị ảnh hưởng đều đã bị xâm phạm và cần được xử lý khẩn cấp để ngăn chặn rò rỉ dữ liệu tiếp theo.

Các Giải pháp Bảo mật Chuyên dụng cho Chuỗi Cung Ứng

Các giải pháp bảo mật cấp doanh nghiệp như StepSecurity cung cấp nhiều lớp bảo vệ chống lại các cuộc tấn công mạng chuỗi cung ứng. Những công cụ này đóng vai trò quan trọng trong việc tăng cường an ninh mạng toàn diện. Ví dụ:

  • NPM Package Cooldown Check: Tính năng này tự động chặn các gói được phát hành trong khoảng thời gian chờ đã cấu hình. Điều này ngăn chặn việc sử dụng các gói mới bị thỏa hiệp trước khi chúng được phát hiện và cảnh báo.
  • Harden-Runner của StepSecurity: Thêm tính năng giám sát thời gian chạy vào các workflow GitHub Actions. Nó cung cấp khả năng hiển thị chi tiết về các cuộc gọi mạng và thực thi quy trình trong quá trình CI/CD, giúp phát hiện hành vi bất thường.
  • Artifact Monitor: Liên tục theo dõi các bản phát hành gói để phát hiện các xuất bản trái phép hoặc bất kỳ thay đổi nào nằm ngoài các pipeline đã được phê duyệt.

Sự cố này làm nổi bật những lỗ hổng nghiêm trọng trong các mô hình bảo mật NPM hiện tại và sự cần thiết của các cơ chế bảo vệ chuỗi cung ứng được tăng cường. Mặc dù mối đe dọa trực tiếp đã được kiềm chế thông qua việc gỡ bỏ gói, nhưng bản chất tự lan truyền của cuộc tấn công này đại diện cho một sự phát triển đáng lo ngại trong các mối đe dọa chuỗi cung ứng, đòi hỏi sự chú ý và các chiến lược phòng thủ nâng cao từ toàn ngành bảo mật.