Hơn 46.000 gói npm giả mạo tràn ngập kho lưu trữ trong cuộc tấn công spam dạng Worm

Các nhà nghiên cứu an ninh mạng đang cảnh báo về một chiến dịch spam quy mô lớn đã làm tràn ngập kho lưu trữ npm với hàng nghìn gói giả mạo kể từ đầu năm 2024, như một phần của nỗ lực có khả năng vì động cơ tài chính. "Các gói này được phát hành một cách có hệ thống trong một thời gian dài, làm tràn ngập kho lưu trữ npm bằng các gói rác tồn tại trong hệ sinh thái gần hai năm," các nhà nghiên cứu của Endor Labs cho biết.
Hơn 46.000 gói npm giả mạo

Các nhà nghiên cứu an ninh mạng đang cảnh báo về một chiến dịch spam quy mô lớn đã làm tràn ngập kho lưu trữ npm với hàng nghìn gói giả mạo kể từ đầu năm 2024, như một phần của nỗ lực có khả năng vì động cơ tài chính.

Các gói này được phát hành một cách có hệ thống trong một thời gian dài, làm tràn ngập kho lưu trữ npm bằng các gói rác tồn tại trong hệ sinh thái gần hai năm.

Các nhà nghiên cứu Cris Staicu và Kiran Raj của Endor Labs đã cho biết trong một báo cáo hôm thứ Ba.

Chiến dịch phối hợp này cho đến nay đã phát hành tới 46.484 gói, theo nhà nghiên cứu bảo mật Paul McCarty của SourceCodeRED, người đã đầu tiên cảnh báo về hoạt động này. Mục tiêu cuối cùng khá bất thường – nó được thiết kế để làm tràn ngập kho lưu trữ npm bằng các gói ngẫu nhiên thay vì tập trung vào việc đánh cắp dữ liệu hoặc các hành vi độc hại khác.

Cơ chế lây lan giống như worm và việc sử dụng một lược đồ đặt tên đặc trưng dựa trên các tên và thuật ngữ ẩm thực Indonesia cho các gói mới được tạo đã khiến nó được mệnh danh là IndonesianFoods. Các gói giả mạo này ngụy trang thành các dự án Next.js.

Điều khiến mối đe dọa này đặc biệt đáng lo ngại là những kẻ tấn công đã dành thời gian để tạo ra một NPM worm, thay vì một cuộc tấn công đơn lẻ. Tệ hơn nữa, những tác nhân đe dọa này đã thực hiện điều này trong hơn hai năm.

McCarty cho biết.

Một số dấu hiệu cho thấy một nỗ lực phối hợp, kéo dài bao gồm các mẫu đặt tên nhất quán và thực tế là các gói được xuất bản từ một mạng lưới nhỏ gồm hơn một chục tài khoản npm.

Worm này nằm trong một tệp JavaScript duy nhất (ví dụ: "auto.js" hoặc "publishScript.js") trong mỗi gói, ở trạng thái chờ cho đến khi người dùng tự chạy script bằng lệnh "node auto.js". Nói cách khác, nó không tự động thực thi trong quá trình cài đặt hoặc như một phần của hook "postinstall".

Không rõ tại sao ai đó lại phải tự chạy JavaScript thủ công, nhưng sự tồn tại của hơn 43.000 gói cho thấy có thể nhiều nạn nhân đã thực thi script – do tai nạn hoặc tò mò – hoặc chính những kẻ tấn công đã chạy nó để làm tràn ngập kho lưu trữ, Henrik Plate, trưởng bộ phận nghiên cứu bảo mật tại Endor Labs, nói với The Hacker News.

Chúng tôi chưa tìm thấy bằng chứng về một chiến dịch social engineering phối hợp, nhưng code được viết với tiềm năng social engineering. Các kịch bản nạn nhân có thể bao gồm: các bài đăng blog giả mạo, hướng dẫn hoặc các mục README hướng dẫn người dùng chạy 'node auto.js' để 'hoàn tất cài đặt' hoặc 'khắc phục sự cố build,' [và] các script build pipeline CI/CD với các ký tự đại diện như node *.js thực thi tất cả các tệp JavaScript.

Raj nói thêm.

Thiết kế ở trạng thái chờ của payload nhằm mục đích né tránh phát hiện tự động, bằng cách yêu cầu thực thi thủ công thay vì 'autorun', những kẻ tấn công giảm khả năng bị các security scanner và hệ thống sandboxing gắn cờ.

Việc thực thi thủ công khiến script khởi tạo một loạt các hành động trong một vòng lặp vô hạn, bao gồm loại bỏ <"private": true> khỏi tệp "package.json". Cài đặt này thường được sử dụng để ngăn chặn việc xuất bản ngẫu nhiên các kho lưu trữ riêng tư. Sau đó, nó tiến hành tạo một tên gói ngẫu nhiên bằng cách sử dụng từ điển nội bộ và gán cho nó một số phiên bản ngẫu nhiên để vượt qua tính năng phát hiện phiên bản trùng lặp của npm.

Trong giai đoạn cuối, gói spam được tải lên npm bằng lệnh "npm publish". Bước này được lặp lại trong một vòng lặp vô hạn, khiến một gói mới được đẩy ra cứ sau 7 đến 10 giây. Điều này tương đương với 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.

Điều này làm tràn ngập kho lưu trữ NPM bằng các gói rác, lãng phí tài nguyên hạ tầng, làm ô nhiễm kết quả tìm kiếm và tạo ra rủi ro chuỗi cung ứng nếu nhà phát triển vô tình cài đặt các gói độc hại này.

McCarty cho biết.

Theo Endor Labs, chiến dịch này là một phần của cuộc tấn công lần đầu tiên được Phylum (hiện là một phần của Veracode) và Sonatype cảnh báo vào tháng 4 năm 2024, liên quan đến việc xuất bản hàng nghìn gói spam để thực hiện một "chiến dịch crypto farming tự động quy mô lớn" bằng cách lạm dụng Tea protocol.

Điều khiến chiến dịch này đặc biệt nguy hiểm là cơ chế lây lan giống như worm. Phân tích các tệp 'package.json' cho thấy các gói spam này không tồn tại độc lập; chúng tham chiếu lẫn nhau như các dependency, tạo ra một mạng lưới tự nhân rộng.

Các nhà nghiên cứu cho biết.

Do đó, khi người dùng cài đặt một trong các gói spam, nó sẽ khiến npm tìm nạp toàn bộ cây dependency, làm căng thẳng băng thông kho lưu trữ khi ngày càng nhiều dependency được tìm nạp theo cấp số nhân.

Endor Labs cho biết một số gói do kẻ tấn công kiểm soát, như arts-dao và gula-dao, bao gồm một tệp tea.yaml liệt kê năm tài khoản TEA khác nhau. Tea protocol là một framework phi tập trung cho phép các nhà phát triển open-source được thưởng cho những đóng góp phần mềm của họ.

Điều này có khả năng cho thấy các threat actors đang sử dụng chiến dịch này như một vector kiếm tiền bằng cách kiếm TEA tokens thông qua việc làm tăng điểm impact một cách giả tạo. Không rõ ai đứng sau hoạt động này, nhưng các manh mối từ source code và cơ sở hạ tầng cho thấy đó có thể là một người nào đó hoạt động từ Indonesia.

Công ty security ứng dụng cũng đã cảnh báo về một biến thể thứ hai sử dụng lược đồ đặt tên khác gồm các từ tiếng Anh ngẫu nhiên (ví dụ: able_crocodile-notthedevs).

Những phát hiện này cũng làm nổi bật một điểm mù về security trong các security scanner, vốn được biết là sẽ gắn cờ các gói thực thi code độc hại trong quá trình cài đặt bằng cách giám sát các hook vòng đời hoặc phát hiện các system call đáng ngờ.

Trong trường hợp này, họ không tìm thấy gì vì không có gì để tìm thấy tại thời điểm cài đặt. Số lượng lớn các gói bị gắn cờ trong chiến dịch hiện tại cho thấy các security scanner phải phân tích những tín hiệu này trong tương lai.

Endor Labs cho biết.

Garrett Calpouzos, nhà nghiên cứu bảo mật chính tại công ty bảo mật chuỗi cung ứng phần mềm Sonatype, đã mô tả IndonesianFoods là một worm tự xuất bản hoạt động ở quy mô lớn, làm quá tải các hệ thống dữ liệu security trong quá trình này.

Sự tinh vi về mặt kỹ thuật không nhất thiết phải cao hơn – điều thú vị là các gói này thậm chí dường như không cố gắng xâm nhập máy của nhà phát triển – chính sự tự động hóa và quy mô đang leo thang với tốc độ đáng báo động.

Calpouzos cho biết.

Mỗi làn sóng tấn công này vũ khí hóa tính chất mở của npm theo những cách hơi mới. Cuộc tấn công này có thể không đánh cắp thông tin đăng nhập hoặc inject code, nhưng nó vẫn làm căng thẳng hệ sinh thái và chứng minh việc phá vỡ chuỗi cung ứng phần mềm lớn nhất thế giới là điều tầm thường như thế nào. Mặc dù động cơ chưa rõ ràng, nhưng những tác động của nó rất đáng chú ý.

Khi được hỏi bình luận, người phát ngôn của GitHub cho biết họ đã xóa các gói liên quan khỏi npm và cam kết phát hiện, phân tích cũng như gỡ bỏ các gói và tài khoản vi phạm chính sách của mình.

Chúng tôi đã vô hiệu hóa các gói npm độc hại theo Chính sách sử dụng chấp nhận được của GitHub, trong đó cấm đăng nội dung trực tiếp hỗ trợ các cuộc tấn công chủ động trái pháp luật hoặc các chiến dịch malware gây ra thiệt hại kỹ thuật.

Người phát ngôn nói thêm.

Chúng tôi sử dụng các đánh giá thủ công và phát hiện quy mô lớn sử dụng machine learning và liên tục phát triển để giảm thiểu việc sử dụng nền tảng một cách độc hại. Chúng tôi cũng khuyến khích khách hàng và thành viên cộng đồng báo cáo lạm dụng và spam.