Việc xâm phạm xảy ra ở gói NPM như “is” sau khi tài khoản của người bảo trì bị chiếm đoạt thông qua lừa đảo. Tin tặc sau đó đã thay đổi chủ sở hữu trái phép mà không bị phát hiện trong vài giờ, có khả năng gây ảnh hưởng đến nhiều nhà phát triển đã tải xuống các bản phát hành mới.
NPM viết tắt của Node package manager là một công cụ tạo và quản lý các thư viện lập trình Javascript được sử dụng rộng rãi trong cộng đồng Node.js. Nó cho phép các nhà phát triển tìm kiếm, chia sẻ, cài đặt và quản lý các thư viện, công cụ và các thành phần khác dưới dạng các "package". NPM giúp đơn giản hóa quá trình phát triển bằng cách cung cấp một kho lưu trữ trực tuyến khổng lồ các package đã được đóng gói sẵn, giúp tránh việc phải viết lại code từ đầu cho các chức năng phổ biến
Như vậy, có thể thấy, Gói 'is' là một thư viện tiện ích JavaScript nhẹ, cung cấp nhiều chức năng kiểm tra kiểu và xác thực giá trị.
![]() |
Phần mềm này có hơn 2,8 triệu lượt tải xuống hàng tuần trên chỉ mục gói NPM. Nó được sử dụng rộng rãi như một tiện ích phụ thuộc cấp thấp trong các công cụ phát triển, thư viện thử nghiệm, hệ thống xây dựng, cũng như các dự án backend và CLI.
Vào ngày 19/7/2025, người bảo trì chính của gói là John Harband đã thông báo rằng, các phiên bản từ 3.3.1 đến 5.0.0 chứa phần mềm độc hại và đã bị xóa khoảng 6 giờ sau khi các tác nhân đe dọa gửi chúng đến chương trình quản lý thư viện ngầm định trong môi trường Node.js (npm). Được biết, Node.js là một môi trường thời gian chạy (runtime environment) mã nguồn mở và đa nền tảng, cho phép thực thi JavaScript bên ngoài trình duyệt web.
Đây là kết quả của cùng một cuộc tấn công chuỗi cung ứng NPM, sử dụng tên miền giả mạo 'npnjs[.]com' để đánh cắp thông tin đăng nhập của người bảo trì và sau đó phát hành các phiên bản bị nhiễm mã độc của các gói phổ biến.
Ngoài 'is', các gói sau đây đã được xác nhận là đang phát tán phần mềm độc hại, bị xâm phạm trong cùng một cuộc tấn công:
eslint-config-prettier (8.10.1, 9.1.1, 10.1.6, 10.1.7)
eslint-plugin-prettier (4.2.2, 4.2.3)
synckit (0.11.9)
@pkgr/core (0.2.8)
napi-postinstall (0.3.1)
got-fetch (5.1.11, 5.1.12)
Socket báo cáo rằng 'is' chứa trình tải phần mềm độc hại JavaScript đa nền tảng, mở ra một cửa hậu dựa trên WebSocket, cho phép thực thi mã từ xa.
"Khi được kích hoạt, nó sẽ truy vấn mô-đun hệ điều hành của Node để thu thập thông tin chi tiết về tên máy chủ, hệ điều hành và CPU, đồng thời ghi lại tất cả các biến môi trường từ process.env", Socket giải thích.
"Sau đó, nó sẽ tự động nhập thư viện dịch vụ web (web service) để trích xuất dữ liệu này qua kết nối WebSocket".
"Mọi thông điệp nhận được qua giao diện lập trình ứng dụng (socket) đều được coi là JavaScript có thể thực thi, cung cấp cho kẻ tấn công một shell từ xa tương tác tức thời."
Các nhà nghiên cứu cũng đã phân tích tải trọng (payload) trong 'eslint' (công cụ kiểm tra mã nguồn JavaScript mở rộng) và các gói còn lại, phát hiện ra một chương trình đánh cắp thông tin Windows có tên là 'Scavanger' nhắm vào thông tin nhạy cảm được lưu trữ trong trình duyệt web.
Phần mềm độc hại này có các cơ chế né tránh như các cuộc gọi hệ thống gián tiếp, giao tiếp chỉ huy và điều khiển (C2) được mã hóa, nhưng nó có thể kích hoạt cảnh báo bảo mật trong trình duyệt Chrome do thao túng cờ.
Dựa trên mô hình tấn công, kẻ tấn công có thể đã xâm phạm thêm thông tin xác thực của người bảo trì và đang chuẩn bị thử nghiệm các payload ẩn danh hơn trên các gói phần mềm mới.
Để ngăn chặn điều này, người bảo trì nên đặt lại mật khẩu và thay đổi tất cả mã thông báo ngay lập tức, và các nhà phát triển chỉ nên sử dụng các phiên bản được biết là an toàn từ trước ngày 18/7/2025.
Người dùng nên tắt tính năng tự động cập nhật, trong khi có thể sử dụng tệp khóa để đóng băng các bản phát hành trên các phiên bản phụ thuộc cụ thể.
Hà Linh
Bình luận