Một trong những cuộc tấn công supply chain nghiêm trọng nhất năm 2025 vừa được phát hiện trên hệ sinh thái NPM - nền tảng chia sẻ gói mã JavaScript lớn nhất thế giới. Kẻ tấn công đã chiếm quyền điều khiển tài khoản của một lập trình viên nổi tiếng để chèn mã độc vào hàng loạt thư viện mã nguồn mở, ảnh hưởng đến hàng triệu dự án và hàng tỷ lượt tải mỗi tuần.
Kẻ tấn công đã giả mạo email từ NPM để thực hiện một cuộc tấn công lừa đảo (phishing) nhắm vào Josh Junon (tên tài khoản: qix) - người duy trì nhiều gói mã cực kỳ phổ biến trên NPM như: Chalk, debug, strip-ansi, v.v...
Email mạo danh được gửi từ địa chỉ trông rất đáng tin: Support@npmjs[.]help, với nội dung yêu cầu người dùng cập nhật xác thực hai yếu tố (2FA), nếu không tài khoản sẽ bị khóa vào ngày 10/09/2025.
Đây là một chiêu lừa khá tinh vi, đánh vào tâm lý hoang mang để khiến nạn nhân nhấn vào đường link giả mạo và nhập thông tin tài khoản vào trang web giả (npmjs[.]help), từ đó bị đánh cắp thông tin đăng nhập.
Sau khi chiếm được tài khoản maintainer, kẻ tấn công đã âm thầm cập nhật các gói NPM với mã độc được nhúng trực tiếp trong file "index.js". Mã độc này có khả năng xâm nhập trình duyệt web khi ứng dụng sử dụng gói bị nhiễm chạy trên nền web.
Cụ thể, mã độc "hook" vào các hàm JavaScript phổ biến như fetch, XMLHttpRequest, và các API ví tiền số như window.ethereum, Solana, Tron, v.v... Mục tiêu là:
Các gói npm đã bị chiếm quyền kiểm soát và lượt tải bị ảnh hưởng:
Mặc dù mức độ ảnh hưởng thực tế có giới hạn (chỉ xảy ra nếu gói được cài đặt mới từ 9h - 11h30 sáng ET ngày xảy ra sự cố, và không sử dụng package-lock.json), nhưng:
Những điểm kỹ thuật đáng lưu ý
Đối với nhà phát triển:
Kẻ tấn công đã giả mạo email từ NPM để thực hiện một cuộc tấn công lừa đảo (phishing) nhắm vào Josh Junon (tên tài khoản: qix) - người duy trì nhiều gói mã cực kỳ phổ biến trên NPM như: Chalk, debug, strip-ansi, v.v...
Email mạo danh được gửi từ địa chỉ trông rất đáng tin: Support@npmjs[.]help, với nội dung yêu cầu người dùng cập nhật xác thực hai yếu tố (2FA), nếu không tài khoản sẽ bị khóa vào ngày 10/09/2025.
Đây là một chiêu lừa khá tinh vi, đánh vào tâm lý hoang mang để khiến nạn nhân nhấn vào đường link giả mạo và nhập thông tin tài khoản vào trang web giả (npmjs[.]help), từ đó bị đánh cắp thông tin đăng nhập.
Sau khi chiếm được tài khoản maintainer, kẻ tấn công đã âm thầm cập nhật các gói NPM với mã độc được nhúng trực tiếp trong file "index.js". Mã độc này có khả năng xâm nhập trình duyệt web khi ứng dụng sử dụng gói bị nhiễm chạy trên nền web.
Cụ thể, mã độc "hook" vào các hàm JavaScript phổ biến như fetch, XMLHttpRequest, và các API ví tiền số như window.ethereum, Solana, Tron, v.v... Mục tiêu là:
- Giám sát các giao dịch tiền mã hóa của người dùng trong trình duyệt
- Thay thế địa chỉ ví đích bằng ví của hacker mà người dùng không hề hay biết
- Chiếm đoạt tiền mã hóa ngay trước khi giao dịch được ký và gửi
Các gói npm đã bị chiếm quyền kiểm soát và lượt tải bị ảnh hưởng:
- backslash - 260.000 lượt tải mỗi tuần
- chalk-template - 3,9 triệu lượt tải mỗi tuần
- supports-hyperlinks - 19,2 triệu lượt tải mỗi tuần
- has-ansi - 12,1 triệu lượt tải mỗi tuần
- simple-swizzle - 26,26 triệu lượt tải mỗi tuần
- color-string - 27,48 triệu lượt tải mỗi tuần
- error-ex - 47,17 triệu lượt tải mỗi tuần
- color-name - 191,71 triệu lượt tải mỗi tuần
- is-arrayish - 73,8 triệu lượt tải mỗi tuần
- slice-ansi - 59,8 triệu lượt tải mỗi tuần
- color-convert - 193,5 triệu lượt tải mỗi tuần
- wrap-ansi - 197,99 triệu lượt tải mỗi tuần
- ansi-regex - 243,64 triệu lượt tải mỗi tuần
- supports-color - 287,1 triệu lượt tải mỗi tuần
- strip-ansi - 261,17 triệu lượt tải mỗi tuần
- chalk - 299,99 triệu lượt tải mỗi tuần
- debug - 357,6 triệu lượt tải mỗi tuần
- ansi-styles - 371,41 triệu lượt tải mỗi tuần
Mặc dù mức độ ảnh hưởng thực tế có giới hạn (chỉ xảy ra nếu gói được cài đặt mới từ 9h - 11h30 sáng ET ngày xảy ra sự cố, và không sử dụng package-lock.json), nhưng:
- Các hệ thống CI/CD tự động có thể đã vô tình lấy bản mã độc mà không hay biết
- Giao dịch tiền mã hóa có thể bị chuyển hướng
- Các trang web có thể trở thành trung gian phát tán mã độc tới người dùng
Những điểm kỹ thuật đáng lưu ý
- Hook API trình duyệt: Mã độc "chen ngang" các hàm xử lý mạng như fetch, đánh cắp dữ liệu gửi/nhận.
- Giao diện không thay đổi: Người dùng vẫn thấy thông tin chính xác, nhưng hành động đằng sau đã bị can thiệp.
- Mã độc "đa tầng": Không chỉ theo dõi, mà còn thay đổi, ghi đè, và điều hướng giao dịch theo cách gần như không thể phát hiện bằng mắt thường.
Đối với nhà phát triển:
- Kiểm tra lại tất cả các package đã cài đặt từ thời điểm 9h - 11h30 sáng ET ngày bị tấn công.
- Cập nhật các gói bị ảnh hưởng lên phiên bản đã được làm sạch.
- Khóa phiên bản phụ thuộc bằng package-lock.json hoặc yarn.lock.
- Bật xác thực hai yếu tố (2FA) với tài khoản NPM, GitHub, và các hệ thống liên quan.
- Thường xuyên rà soát code và log CI/CD để phát hiện hành vi lạ.
- Cẩn trọng khi sử dụng ứng dụng web có tích hợp ví tiền mã hóa.
- Kiểm tra địa chỉ ví thật kỹ trước khi xác nhận giao dịch.
- Sử dụng trình duyệt an toàn, plugin chống mã độc, và ví phần cứng để bảo vệ tài sản số.
Theo WhiteHat.vn
Được phối hợp thực hiện bởi các chuyên gia của Bkav,
cộng đồng An ninh mạng Việt Nam WhiteHat
và cộng đồng Khoa học công nghệ VnReview