
Một nghiên cứu an ninh mạng chấn động vừa được đội ngũ Checkmarx Zero công bố cho thấy chiến dịch mã độc chuỗi cung ứng nhắm vào kho lưu trữ npm đã tìm ra phương thức vượt qua toàn bộ các rào cản bảo vệ mới nhất mà GitHub áp dụng từ tháng 6/2026. Bằng việc chuyển dịch điểm kích hoạt từ các tập lệnh vòng đời cài đặt sang giai đoạn thực thi runtime kết hợp hạ tầng điều khiển C2 trên blockchain, chiến dịch đã lây nhiễm thành công hơn 7 triệu lượt tải trước khi bị phát hiện.
Lỗ hổng trong mô hình kiểm duyệt tĩnh: Khi tập lệnh cài đặt không còn là đích ngắm duy nhất
Các vụ tấn công chuỗi cung ứng mã nguồn mở trong giai đoạn 2025 – 2026 đã thúc đẩy GitHub ban hành các tiêu chuẩn an ninh nghiêm ngặt trên hệ sinh thái npm v12. Quy chuẩn này thiết lập cơ chế chặn mặc định đối với các tập lệnh vòng đời như preinstall, install và postinstall, đồng thời cô lập khả năng tự động truy xuất các gói phụ thuộc từ máy chủ Git từ xa mà không có sự phê duyệt rõ ràng từ quản trị viên.
Chiến dịch mang tên indexed-btree đã chứng minh một sự thật đáng lo ngại: mô hình phòng thủ chỉ tập trung vào khâu nạp gói đã bộc lộ giới hạn nghiêm trọng trước các kỹ thuật ẩn náu ở cấp độ hàm. Bằng cách mạo danh cấu trúc của thư viện sorted-btree chính thống, gói indexed-btree không chứa bất kỳ tập lệnh vòng đời nào trong tệp package.json, giúp gói mã này vượt qua dễ dàng các hệ thống kiểm tra vết dữ liệu (taint analysis) và vượt mặt hoàn toàn các công cụ phân tích mã nguồn tĩnh (SAST).

Cơ chế kích hoạt tinh vi qua phương thức BTree.prototype.set và hạ tầng C2 bất tử
Kỹ thuật ẩn mã của chiến dịch được thiết kế vô cùng tinh vi khi gắn chặt vào luồng nghiệp vụ thông thường của ứng dụng. Kẻ tấn công cấy bộ tải mã độc trực tiếp vào phương thức BTree.prototype.set. Đây là phương thức cốt lõi chịu trách nhiệm ghi dữ liệu mà bất kỳ phần mềm nào sử dụng thư viện cũng phải gọi với tần suất dày đặc.
Khi phương thức này được kích hoạt với một điều kiện khóa xác định, tệp sharedLoad.min.js bị xáo trộn mã (obfuscated) sẽ được nạp vào bộ nhớ tiến trình để thu thập thông số môi trường của máy chủ mục tiêu. Tiếp theo, mã độc chuyển sang giai đoạn liên lạc C2 thông qua một cơ chế phân tán cao: truy vấn trạng thái của một hợp đồng thông minh được triển khai trên mạng thử nghiệm Ethereum Sepolia.
Thông qua giao thức trao đổi khóa X25519, tiến trình độc hại sẽ dẫn xuất khóa mã hóa AES tương ứng nhằm giải mã payload giai đoạn hai được lưu trữ trực tiếp bên trong dữ liệu hợp đồng thông minh. Việc sử dụng mạng lưới blockchain làm hạ tầng C2 giúp tin tặc vô hiệu hóa hoàn toàn các biện pháp chặn tên miền hoặc thu hồi địa chỉ IP của các trung tâm dữ liệu truyền thống.
Khả năng tự hủy và bài toán chuyển đổi sang giám sát hành vi tại thời điểm thực thi
Một điểm đáng chú ý khác trong kỹ thuật của nhóm tấn công là khả năng tự xóa dấu vết pháp y kỹ thuật số (anti-forensics). Khi nhận lệnh kết thúc chu kỳ thu thập dữ liệu từ smart contract, phần mềm độc hại sẽ tự động dọn dẹp các tệp tạm thời trên hệ thống và thậm chí chỉnh sửa lại chính mã nguồn của gói thư viện trên đĩa cứng để loại bỏ đoạn mã kích hoạt độc hại. Hành vi này khiến các quản trị viên hệ thống khi thực hiện rà quét hậu kiểm rất khó phát hiện ra bằng chứng xâm nhập nếu chỉ dựa vào nhật ký quét tệp tin tĩnh.
Bên cạnh gói chính indexed-btree với gần 2 triệu lượt tải mỗi tuần, Checkmarx đã xác định thêm 9 gói thư viện phụ trợ khác có liên quan trực tiếp đến chiến dịch bao gồm btree-core (hơn 1,95 triệu lượt tải), btree-leaderboard, priority-slot-queue, btree-range-store và sliding-score-window. Toàn bộ các gói này hiện đã bị gỡ bỏ khỏi kho lưu trữ chính thức của npm.
Vụ việc gióng lên một hồi chuông cảnh tỉnh sâu sắc cho các kiến trúc sư bảo mật phần mềm doanh nghiệp: kỷ nguyên kiểm soát an toàn chuỗi cung ứng chỉ dựa vào việc rà quét lúc cài đặt đã chính thức lỗi thời. Các tổ chức công nghệ bắt buộc phải chuyển dịch sang mô hình phòng thủ theo chiều sâu, kết hợp các công cụ giám sát hành vi tiến trình thời gian thực (runtime application self-protection – RASP) và quản lý chặt chẽ chính sách truy cập mạng của các dịch vụ chạy ngầm.
















