Các gói độc hại trên PyPI và npm bị phát hiện lợi dụng dependency trong các cuộc tấn công supply chain

Các nhà nghiên cứu an ninh mạng đã phát hiện một package độc hại trong kho Python Package Index (PyPI), package này cài cắm hành vi nguy hiểm thông qua một dependency cho phép duy trì persistence và thực thi mã độc.
Package có tên termncolor triển khai chức năng độc hại của nó thông qua dependency colorinal theo cơ chế nhiều giai đoạn của malware, theo Zscaler ThreatLabz. Trong khi termncolor được tải xuống 355 lần, colorinal đạt 529 lượt tải. Cả hai thư viện hiện đã bị gỡ khỏi PyPI.
“Cuộc tấn công này có thể tận dụng kỹ thuật DLL side-loading để hỗ trợ giải mã, thiết lập persistence và thực hiện giao tiếp command-and-control (C2), cuối cùng dẫn đến remote code execution,” theo các nhà nghiên cứu Manisha Ramcharan Prajapati và Satyam Singh.
Khi được cài đặt và chạy, termncolor sẽ import colorinal, và từ đó nạp một DLL giả mạo có nhiệm vụ giải mã và chạy payload ở giai đoạn tiếp theo.
Cụ thể, payload này triển khai một binary hợp pháp tên vcpktsvr.exe và một DLL libcef.dll, được kích hoạt bằng DLL side-loading. DLL này có khả năng thu thập thông tin hệ thống và giao tiếp với máy chủ C2 thông qua Zulip – một ứng dụng chat mã nguồn mở – để che giấu hoạt động.
“Persistence được thiết lập bằng cách tạo một entry trong registry dưới key Windows Run nhằm đảm bảo malware tự động chạy khi hệ thống khởi động,” Zscaler cho biết.
Malware này cũng có khả năng lây nhiễm trên hệ thống Linux, khi các thư viện Python thả một file shared object tên terminate.so để thực hiện cùng chức năng.
Phân tích sâu hơn về hoạt động trên Zulip của threat actor cho thấy có ba người dùng đang hoạt động trong tổ chức được tạo ra, với tổng cộng 90.692 tin nhắn đã được trao đổi trên nền tảng này. Người ta tin rằng tác giả của malware đã hoạt động từ ngày 10 tháng 7 năm 2025.
“Package termncolor và dependency độc hại colorinal nhấn mạnh tầm quan trọng của việc giám sát các hệ sinh thái open-source nhằm phát hiện sớm nguy cơ tấn công supply chain,” công ty cho biết.
Tiết lộ này xuất hiện cùng lúc SlowMist cho biết threat actors đang nhắm mục tiêu vào các nhà phát triển bằng cách giả dạng bài kiểm tra tuyển dụng, nhằm lừa họ clone một GitHub repository chứa package npm gài bẫy. Package này có khả năng thu thập dữ liệu từ iCloud Keychain, trình duyệt web, và ví tiền mã hóa, sau đó gửi ra máy chủ bên ngoài.

Các package npm này còn được thiết kế để tải và chạy script Python, thu thập thông tin hệ thống, quét file system để tìm file nhạy cảm, đánh cắp thông tin đăng nhập, ghi lại keystroke, chụp màn hình, và giám sát nội dung clipboard.
Danh sách các package đã bị gỡ khỏi npm bao gồm:

  • redux-ace (163 lượt tải)
  • rtk-logger (394 lượt tải)

Trong những tháng gần đây, nhiều package npm độc hại đã được phát hiện nhắm vào cộng đồng an ninh mạng nhằm phục vụ đánh cắp dữ liệu và khai thác tiền mã hóa thông qua một dependency, đồng thời sử dụng các dịch vụ hợp pháp như Dropbox để exfiltrate dữ liệu ra khỏi hệ thống bị nhiễm.
Theo các nhà nghiên cứu Christophe Tafani-Dereeper và Matt Muir (Datadog), những package này thường được phân phối dưới dạng mã PoC độc hại cho các lỗ hổng bảo mật, hoặc dưới dạng bản vá kernel được quảng bá là giúp cải thiện hiệu năng. Hoạt động này được cho là do một threat actor có mã định danh MUT-1244 thực hiện.
Diễn biến này cũng theo sau báo cáo từ ReversingLabs, cảnh báo về rủi ro liên quan đến việc tự động nâng cấp dependency, đặc biệt khi một dự án bị compromise nhưng lại được sử dụng bởi hàng nghìn dự án khác, khiến rủi ro đối với chuỗi cung ứng phần mềm bị nhân lên nhiều lần.
Điều này được minh họa rõ qua vụ compromise gần đây của package eslint-config-prettier trên npm, xảy ra thông qua một cuộc tấn công phishing cho phép kẻ tấn công (không được tiết lộ danh tính) đẩy trực tiếp các phiên bản độc hại lên npm registry mà không cần bất kỳ commit hay pull request nào trên repository GitHub tương ứng.
Công ty an ninh chuỗi cung ứng phần mềm cho biết có hơn 14.000 package đã khai báo eslint-config-prettier như một direct dependency thay vì devDependency, dẫn đến việc các hành động tự động (như GitHub Actions) tự động merge cảnh báo cập nhật dependency từ Dependabot mà không được rà soát kỹ.

“Vì đây là một cấu hình cho công cụ phát triển dùng để format code, nên hợp lý là nó phải được khai báo như devDependency trong các package sử dụng. Do đó, nó không nên được tự động cài đặt khi chạy lệnh npm install như các dependency thông thường,” nhà nghiên cứu bảo mật Karlo Zanki cho biết.
“Các công cụ quản lý phiên bản tự động như Dependabot được thiết kế để loại bỏ rủi ro liên quan đến việc có dependency chứa lỗ hổng trong code base của bạn, nhưng […] trớ trêu thay, chúng có thể vô tình tạo ra những rủi ro bảo mật còn lớn hơn, chẳng hạn như bị compromise độc hại.”

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *