Tin tức bảo mật mới ghi nhận một chiến dịch typosquatting trên npm nhằm đánh cắp cloud credentials và CI/CD secrets từ máy của nhà phát triển, làm gia tăng rủi ro bảo mật trong chuỗi cung ứng phần mềm mã nguồn mở.
Chiến dịch typosquatting trên npm
Vụ việc được phát hiện vào ngày 28/05/2026, cho thấy cách các gói độc hại có thể len vào môi trường phát triển bằng kỹ thuật đặt tên gần giống với thư viện hợp lệ. Mục tiêu của lỗ hổng zero-day theo nghĩa khai thác hành vi người dùng ở đây không phải là một CVE cụ thể, mà là sự lợi dụng lỗi đánh máy và thói quen cài đặt gói nhanh trong quy trình phát triển.
Các gói độc hại được tải lên npm registry trong một khung thời gian chỉ 4 giờ, với tổng cộng 14 package giả mạo các công cụ phổ biến liên quan đến OpenSearch, ElasticSearch, DevOps và thư viện cấu hình môi trường. Đây là một dạng mối đe dọa mạng nhắm trực tiếp vào developer machine và pipeline tự động.
Tham khảo nguồn gốc phân tích từ Microsoft tại: Microsoft Security Blog.
Lỗ hổng CVE theo ngữ cảnh chuỗi cung ứng phần mềm
Trong trường hợp này không có mã CVE cụ thể được nêu, nhưng chiến dịch vẫn là một cảnh báo CVE theo góc nhìn vận hành vì nó khai thác bề mặt tấn công của hệ sinh thái gói phụ thuộc. Mỗi package được thiết kế để thực thi ngay khi người dùng chạy npm install, khiến hệ thống bị tấn công trước khi có bất kỳ dấu hiệu bất thường rõ ràng nào.
Điểm đáng chú ý là toàn bộ 14 package đều chứa cùng một payload thu thập thông tin xác thực, được đóng gói dưới dạng một binary biên dịch bằng Bun dung lượng khoảng 195 KB. Cách triển khai này giúp payload gọn nhẹ và khó bị chú ý trong quá trình kiểm tra nhanh.
Mô hình hoạt động
Quy trình xâm nhập bắt đầu từ lifecycle hook của npm. Khi gói được cài đặt, mã độc chạy tự động mà không cần thêm thao tác nào từ nạn nhân. Đây là điểm làm tăng nguy cơ bảo mật vì nó tận dụng chính cơ chế hợp lệ của trình quản lý gói.
- Bước 1: Người dùng chạy npm install.
- Bước 2: Lifecycle hook kích hoạt mã độc.
- Bước 3: Payload thu thập thông tin xác thực và biến môi trường.
- Bước 4: Dữ liệu bị gửi đến máy chủ do kẻ tấn công kiểm soát.
IOC và dấu hiệu nhận diện
Các IOC dưới đây được trích xuất từ nội dung gốc. IP và miền đã được làm mờ theo định dạng an toàn để tránh truy cập nhầm.
- Maintainer alias: vpmdhaj
- Email đăng ký: a39155771@gmail[.]com
- Phạm vi thời gian: 14 package trong 4 giờ
- Trình kích hoạt: npm lifecycle hook
- Hành vi tải xuống: Bun runtime hợp lệ được tải về để chạy script độc hại
- Miền C2: đã bị làm mờ trong nguồn gốc và cần xử lý trong SIEM hoặc threat intel platform
Dấu hiệu trên hệ thống
Các package này tạo ra chuỗi hoạt động tập trung vào đánh cắp dữ liệu từ môi trường đám mây và CI/CD. Khi đã thực thi, chúng có thể quét qua 16 vùng AWS trở lên, truy vấn EC2 metadata service, đọc biến môi trường và xác định xem tiến trình có đang chạy trong GitHub Actions hay không.
Các loại dữ liệu bị nhắm tới gồm:
- AWS credentials
- HashiCorp Vault tokens
- GitHub Actions tokens
- npm publish tokens
Rủi ro từ npm publish tokens
Trong số các dữ liệu bị đánh cắp, npm publish tokens là mục tiêu nguy hiểm nhất. Nếu token bị lộ, kẻ tấn công có thể phát hành bản cập nhật độc hại lên các package hợp lệ, biến một máy trạm bị xâm nhập thành điểm xuất phát cho cuộc tấn công mạng rộng hơn.
Điều này làm gia tăng rủi ro an toàn thông tin theo dây chuyền, vì một token bị chiếm đoạt có thể ảnh hưởng đến nhiều dự án phụ thuộc phía sau. Trong bối cảnh này, hệ thống bị xâm nhập không chỉ là máy của một nhà phát triển, mà còn là toàn bộ chuỗi phân phối gói phụ thuộc.
Hai biến thể của stager
Nội dung gốc mô tả hai biến thể của stager độc hại. Biến thể cũ kết nối đến máy chủ command-and-control bên ngoài để tải payload. Biến thể mới kín đáo hơn, tự tải Bun runtime hợp lệ rồi dùng nó để chạy script độc hại đã được nhúng sẵn trong tarball của npm package.
Biến thể mới đáng chú ý vì nó tránh được lưu lượng mạng bất thường rõ ràng tại thời điểm cài đặt. Điều này làm giảm khả năng bị phát hiện bởi các công cụ giám sát hạ tầng và các hệ thống IDS chỉ dựa vào mẫu kết nối ra ngoài.
Ảnh hưởng kỹ thuật đối với CI/CD và máy phát triển
Chiến dịch này nhắm vào máy của nhà phát triển, pipeline tự động và registry npm cùng lúc. Khi một cuộc tấn công mạng thành công ở tầng package manager, hậu quả có thể lan sang build server, kho mã nguồn và các hệ thống ký phát hành.
Trong môi trường CI/CD, việc lộ token có thể dẫn đến xâm nhập trái phép vào quy trình build, sửa đổi artifact hoặc chèn mã độc vào nhánh phát hành. Với các tài khoản có quyền publish, mức độ ảnh hưởng tăng lên đáng kể vì kẻ tấn công có thể phát tán package độc hại dưới danh nghĩa hợp lệ.
Biện pháp xử lý và giảm thiểu
Các đội bảo mật cần hành động ngay nếu bất kỳ package bị ảnh hưởng nào đã được cài đặt vào hoặc sau ngày 28/05/2026. Ưu tiên là xoay vòng toàn bộ thông tin xác thực có thể bị lộ và chặn lưu lượng đến C2 ở lớp mạng và DNS.
- Rotate AWS, Vault, npm và GitHub credentials.
- Block egress tới domain C2 ở firewall và DNS.
- Review build logs để tìm kết nối mạng bất thường.
- Kiểm tra các lần tải Bun runtime không mong muốn từ tiến trình Node.js.
Để giảm nguy cơ thực thi payload từ lifecycle hook, có thể dùng tùy chọn sau khi cài đặt gói:
npm install --ignore-scriptsTùy chọn này ngăn các script tự động chạy, cắt đứt điểm vào sớm nhất của chiến dịch trước khi payload chạm xuống đĩa. Đây là biện pháp phù hợp khi đánh giá tin bảo mật mới nhất liên quan đến package độc hại hoặc khi rà soát một lỗ hổng CVE trong chuỗi cung ứng phần mềm.
Góc nhìn phòng thủ cho chuỗi cung ứng phần mềm
Trường hợp này cho thấy bảo mật thông tin trong hệ sinh thái npm không chỉ phụ thuộc vào kiểm tra mã nguồn, mà còn phụ thuộc vào kiểm soát script cài đặt, token phát hành và lưu lượng mạng từ môi trường build. Với các tổ chức có quy trình tự động hóa mạnh, việc giám sát phát hiện xâm nhập cần bao gồm hành vi của Node.js, Bun và hoạt động truy cập metadata cloud.
Trong thực tế vận hành, các tín hiệu như tải runtime bất thường, truy vấn metadata service, hoặc kết nối đến domain chưa từng xuất hiện trong pipeline là chỉ báo quan trọng để điều tra rủi ro bảo mật của chuỗi cung ứng phần mềm.










