Tấn công chuỗi cung ứng npm: Mã độc IndonesianFoods nguy hiểm

Tấn công chuỗi cung ứng npm: Mã độc IndonesianFoods nguy hiểm

Nghiên cứu bảo mật Paul McCarty đã phát hiện một chiến dịch spam quy mô lớn, phối hợp tấn công hệ sinh thái npm. Mã độc IndonesianFoods worm, bao gồm hơn 43.000 gói độc hại được phát hành qua ít nhất 11 tài khoản người dùng, đã hoạt động trong registry gần hai năm trước khi bị phát hiện. Đây là một ví dụ điển hình về tấn công chuỗi cung ứng npm tinh vi.

Nội dung
Chiến dịch Mã độc IndonesianFoods Worm

Cơ chế Đặt tên Gói Độc đáo
Cấu trúc Gói và Kỹ thuật Che giấu
Phạm vi và Cơ chế Lây lan trong Tấn công Chuỗi Cung ứng NPM

Quy mô và Tốc độ Lan truyền
Khả năng Tự Nhân rộng Qua Chuỗi Phụ thuộc
Mục tiêu và Động cơ của Kẻ tấn công

Liên kết với Hệ thống Phần thưởng Blockchain
Bằng chứng về Sự Phát triển Hoạt động
Các Chỉ số Thỏa hiệp (IOCs) và Khuyến nghị An ninh Mạng

Danh sách Tài khoản Bị xâm nhập
Bài học và Cải thiện An ninh Mạng

Chiến dịch Mã độc IndonesianFoods Worm

Cơ chế Đặt tên Gói Độc đáo

Chiến dịch này được đặt tên từ lược đồ đặt tên gói đặc trưng. Script độc hại nhúng bên trong kết hợp ngẫu nhiên các tên tiếng Indonesia (như “andi,” “budi,” “cindy,” “zul”) với các thuật ngữ món ăn Indonesia (“rendang,” “sate,” “bakso,” “tapai”). Sau đó, nó thêm các số ngẫu nhiên từ 1-100 và các hậu tố như “-kyuki” hoặc “-breki.”

Mẫu đặt tên này tạo ra các tên gói như “zul-tapai9-kyuki” và “andi-rendang23-breki.”

Cấu trúc Gói và Kỹ thuật Che giấu

Điều làm cho chiến dịch này đặc biệt nguy hiểm là các gói ban đầu có vẻ hợp pháp. Mỗi gói chứa một cấu trúc dự án Next.js tiêu chuẩn với các tệp cấu hình phù hợp, các dependencies hợp pháp (React, Next.js, Tailwind CSS) và tài liệu chuyên nghiệp.

Thành phần độc hại là một tệp script có tên “auto.js” hoặc “publishScript.js”. Tệp này nằm không được tham chiếu trong cấu trúc gói và vẫn ở trạng thái ngủ cho đến khi được thực thi thủ công. Không có các hook postinstall hoặc script vòng đời nào tự động kích hoạt trong quá trình cài đặt, điều này cho phép các gói này lẩn tránh các máy quét bảo mật tự động.

Phạm vi và Cơ chế Lây lan trong Tấn công Chuỗi Cung ứng NPM

Quy mô và Tốc độ Lan truyền

Chiến dịch này chiếm hơn 1% toàn bộ hệ sinh thái npm. Điều này phơi bày những lỗ hổng đáng kể trong các biện pháp an ninh chuỗi cung ứng hiện tại. Nghiên cứu của Endor Labs cung cấp thêm chi tiết về chiến dịch này.

Khi script độc hại được thực thi, nó thực hiện ba hành động phối hợp trong một vòng lặp vô hạn. Đầu tiên, nó xóa cờ “private” khỏi package.json để bỏ qua các biện pháp bảo vệ ngăn chặn việc publish công khai ngoài ý muốn. Thứ hai, nó tạo ra các số phiên bản ngẫu nhiên (ví dụ: “2.3.1” hoặc “4.1.3”) để vượt qua tính năng phát hiện phiên bản trùng lặp của npm. Thứ ba, nó publish các gói mới vào registry với tên ngẫu nhiên.

Một lần thực thi có thể publish khoảng 12 gói mỗi phút, 720 gói mỗi giờ, hoặc 17.000 gói mỗi ngày. Con số này cho thấy có thể có nhiều nạn nhân hoặc sự tham gia trực tiếp của kẻ tấn công trong việc tạo ra lũ lụt gói này.

Khả năng Tự Nhân rộng Qua Chuỗi Phụ thuộc

Chiến dịch hoạt động với khả năng lây lan như worm thông qua chuỗi phụ thuộc. Các gói spam này tham chiếu lẫn nhau như các dependency, tạo ra một mạng lưới tự nhân bản. Việc cài đặt một gói có thể kích hoạt tải xuống tự động 8-10 gói spam bổ sung, nhân lên theo cấp số mũ việc sử dụng băng thông registry và làm phức tạp các nỗ lực dọn dẹp. Đây là một đặc điểm của tấn công chuỗi cung ứng npm có khả năng lan rộng nhanh chóng.

Mục tiêu và Động cơ của Kẻ tấn công

Liên kết với Hệ thống Phần thưởng Blockchain

Các nhà nghiên cứu đã phát hiện rằng một số gói do kẻ tấn công kiểm soát bao gồm các tệp “tea.yaml” liệt kê các tài khoản TEA. Điều này cho thấy một nỗ lực kiếm tiền từ chiến dịch thông qua các token trên hệ thống phần thưởng blockchain được thiết kế cho các đóng góp mã nguồn mở.

Điều này đại diện cho một cuộc tấn công nhiều pha phức tạp, đã phát triển từ spam registry đơn giản thành các kế hoạch kiếm tiền điện tử. Ít nhất một người duy trì gói có vẻ có một hồ sơ LinkedIn liên quan, xác định họ là một kỹ sư phần mềm người Indonesia, giải thích tính đặc thù khu vực của hoạt động.

Bằng chứng về Sự Phát triển Hoạt động

Chiến dịch đã sử dụng nhiều biến thể đặt tên khác nhau. Một số gói sử dụng gói npm hợp pháp “unique-names-generator” để tạo các mẫu thay thế như “able_crocodile-notthedevs.” Điều này gợi ý một sự tiến hóa hoạt động có chủ đích của kẻ tấn công.

Các Chỉ số Thỏa hiệp (IOCs) và Khuyến nghị An ninh Mạng

Danh sách Tài khoản Bị xâm nhập

Các tổ chức nên kiểm tra ngay lập tức các dependencies của họ so với 11 tài khoản bị xâm nhập sau đây:

  • voinza
  • yunina
  • noirdnv
  • veyla
  • vndra
  • vayza
  • bipyruss
  • sernaam.b.y
  • jarwok
  • doaortu
  • rudiox

Đáng chú ý, một số gói đã tích lũy hơn 2.000 lượt tải xuống hàng tuần, tạo ra các vector tiềm năng cho việc chèn mã độc trong tương lai. Đây là một rủi ro đáng kể đối với an ninh mạng của các dự án phụ thuộc.

Bài học và Cải thiện An ninh Mạng

Chiến dịch IndonesianFoods làm nổi bật một sự thay đổi đáng lo ngại trong các chiến lược tấn công chuỗi cung ứng npm. Thay vì nhắm mục tiêu vào các gói cấu hình cao để tạo tác động tức thì, những kẻ tấn công đã triển khai một phương pháp dựa trên khối lượng với hàng nghìn gói cấu hình thấp, để xác suất hoạt động có lợi cho chúng.

Điều này cho thấy rằng sự kiên trì, quy mô và tư duy chiến lược có thể vượt qua các biện pháp bảo mật truyền thống được thiết kế để bắt các cuộc tấn công kỹ thuật tinh vi trong quá trình cài đặt.

Hệ sinh thái npm yêu cầu những cải tiến phòng thủ ngay lập tức: giới hạn tốc độ chặt chẽ hơn đối với các nhà publish, phát hiện mẫu tự động cho các chiến dịch hàng loạt và xác minh tài khoản nghiêm ngặt hơn cho việc publish khối lượng lớn. Ngoài ra, dự án TEA nên hủy kích hoạt các tài khoản và ví vi phạm để ngăn chặn việc tiếp tục kiếm token trái phép.