Hàng chục gói thư viện độc hại đã được phát hiện trên kho NPM, có hành vi thu thập dữ liệu hệ thống nhạy cảm và gửi về máy chủ điều khiển thông qua Discord webhook.

Theo báo cáo mới nhất từ nhóm Nghiên cứu Mối đe dọa của Socket, 60 gói độc hại đã được phát hiện trên kho lưu trữ NPM kể từ ngày 12/5, được đăng tải bởi ba tài khoản khác nhau. Mỗi gói đều tích hợp một tập lệnh “post-install” tự động thực thi trong quá trình cài đặt, cho phép thu thập thông tin như: tên máy chủ (hostname), địa chỉ IP nội bộ, thư mục người dùng, thư mục làm việc hiện tại, tên người dùng, máy chủ DNS của hệ thống
Ngoài ra, tập lệnh còn kiểm tra các chuỗi tên máy chủ liên quan đến nhà cung cấp dịch vụ đám mây và địa chỉ DNS ngược, nhằm xác định xem môi trường đang hoạt động có phải là môi trường phân tích hay không.
Mặc dù chưa ghi nhận hành vi tải xuống mã độc giai đoạn hai, leo thang đặc quyền hoặc thiết lập cơ chế bám trụ, nhưng theo các chuyên gia, việc thu thập thông tin chi tiết như vậy có thể tạo tiền đề cho các cuộc tấn công có chủ đích (targeted attacks) trong tương lai.
Gói độc vẫn còn xuất hiện trước khi bị gỡ bỏ
Tại thời điểm công bố, các gói độc hại vẫn còn hiển thị trên NPM và đã có tổng cộng khoảng 3.000 lượt tải. Tuy nhiên, đến thời điểm bài viết này được đăng tải, tất cả các gói liên quan đã bị gỡ bỏ khỏi kho lưu trữ.
Kẻ tấn công được cho là đã sử dụng chiến thuật “giả mạo tên gói” (typosquatting), đặt tên tương tự với các thư viện phổ biến như flipper-plugins
, react-xterm2
, hermes-inspector-msggen
, hoặc dùng các tên mang tính chung chung dễ tạo cảm giác tin tưởng, nhằm đánh lừa các nhà phát triển. Một số gói còn có tên ám chỉ chức năng kiểm thử, nhiều khả năng nhằm vào quy trình CI/CD trong doanh nghiệp.
Danh sách đầy đủ 60 gói độc hại đã được Socket công bố trong phần cuối báo cáo kỹ thuật. Người dùng được khuyến cáo nên kiểm tra hệ thống, gỡ bỏ ngay các gói liên quan nếu đã cài đặt và tiến hành quét toàn diện để đảm bảo không còn sót lại thành phần nào.
Chi tiết các gói mã độc
Dưới đây là danh sách các gói bị phát hiện, phân chia theo ba tài khoản phát hành:
Tài khoản bbbb335656 (email: npm9960+1@gmail[.]com)
- Tổng cộng 20 gói, gồm:
e-learning-garena
,inhouse-root
,event-sharing-demo
,hermes-inspector-msggen
,template-vite
,flipper-plugins
,appium-rn-id
,bkwebportal
,gop_status_frontend
,index_patterns_test_plugin
,seatable
,zdauth
,mix-hub-web
,chromastore
,performance-appraisal
,choosetreasure
,rapper-wish
,12octsportsday
,credit-risk
,raffle-node
.
Tài khoản sdsds656565 (email: npm9960+2@gmail[.]com)
- 20 gói khác, bao gồm:
coral-web-be
,garena-react-template-redux
,sellyourvault
,admin-id
,seacloud-database
,react-xterm2
,bkeat-pytest
,mysteryicons
,mshop2
,xlog-admin-portal
,datamart
,garena-admin
,estatement-fe
,kyutai-client
,tgi-fe
,gacha-box
,tenslots
,refreshrewards
,codeword
,sps
.
Tài khoản cdsfdfafd1232436437 (email: npm9960+3@gmail[.]com)
- 20 gói còn lại, gồm:
seatalk-rn-leave-calendar
,netvis
,input_control_vis
,env-platform
,web-ssar
,hideoutpd
,arcademinigame
,customer-center
,team-portal
,dof-ff
,seamless-sppmy
,accumulate-win
,sfc-demo
,osd_tp_custom_visualizations
,routing-config
,gunbazaar
,mbm-dgacha
,wsticket
,all-star-2019
,data-portal-dwh-apps-fe
.
Tất cả các gói này đều có chung điểm là sử dụng các tên gọi dễ gây nhầm lẫn với các thư viện phổ biến, hoặc đánh vào sự tin tưởng của nhà phát triển nhằm tăng cơ hội được cài đặt.
Điểm đến dữ liệu và kỹ thuật tấn công
Thông tin thu thập được gửi đến endpoint webhook sau:
hxxps://discord[.]com/api/webhooks/1330015051482005555/5fll497pcjzKBiY3b_oa9YRh-r5Lr69vRyqccawXuWE_horIlhwOYzp23JWm-iSXuPfQ
Theo khung MITRE ATT&CK, chiến dịch tấn công này sử dụng nhiều kỹ thuật như:
- T1195.002 – Tấn công chuỗi cung ứng phần mềm
- T1059.007 – Thực thi mã độc bằng JavaScript
- T1567.004 – Rò rỉ dữ liệu qua webhook
- T1590 – Thu thập thông tin mạng của nạn nhân
- T1497 – Né tránh môi trường ảo hóa và phân tích
Các tập lệnh độc hại đặc biệt kiểm tra các dấu hiệu cho thấy hệ thống đang chạy trong sandbox hoặc trên môi trường đám mây, cho thấy chiến dịch được thiết kế cẩn trọng nhằm tránh bị phát hiện trong giai đoạn kiểm tra bảo mật.
Chiến dịch mã độc xóa dữ liệu tồn tại hơn hai năm trên NPM
Bên cạnh đó, nhóm nghiên cứu của Socket còn tiết lộ một chiến dịch mã độc khác cũng nhắm vào NPM, liên quan đến 8 gói thư viện được thiết kế để xóa dữ liệu, làm hỏng hệ thống và khiến máy tính ngừng hoạt động.
Các gói này sử dụng chiêu thức typosquatting nhằm vào các hệ sinh thái phát triển phổ biến như React, Vue.js, Vite, Node.js và Quill, với tổng cộng khoảng 6.200 lượt tải xuống trong suốt hai năm qua.
Điều đáng chú ý là mã độc trong các gói này chỉ được kích hoạt theo ngày hệ thống đã được mã hóa sẵn, và có cơ chế phá hoại tiến trình theo thời gian, bao gồm hủy tệp, làm sai lệch phương thức lõi của JavaScript và phá hoại cơ chế lưu trữ của trình duyệt.
Đối tượng đứng sau chiến dịch này sử dụng bí danh “xuxingfeng” – người cũng từng đăng tải nhiều gói thư viện hợp pháp nhằm tạo lòng tin và né tránh hệ thống phát hiện.
Mặc dù mối đe dọa tức thời đã tạm thời giảm do điều kiện thời gian đã hết hạn, các chuyên gia cảnh báo người dùng nên xóa bỏ hoàn toàn các gói liên quan, vì kẻ tấn công hoàn toàn có thể cập nhật mã để tái kích hoạt chức năng phá hoại trong tương lai.
Cảnh báo và khuyến nghị
Dù hiện tại phần lớn các gói đã bị gỡ bỏ khỏi NPM, các chuyên gia bảo mật cảnh báo nếu đã cài đặt một trong số các gói trên, người dùng cần gỡ bỏ ngay lập tức và quét hệ thống để phát hiện dấu vết còn sót lại. Các tổ chức, đặc biệt là các doanh nghiệp sử dụng CI/CD pipelines, cần rà soát kỹ chuỗi cung ứng mã nguồn mở và triển khai biện pháp xác thực nghiêm ngặt hơn cho thư viện bên ngoài.