Cuộc tấn công chuỗi cung ứng “mini Shai Hulud” đã xâm phạm bốn gói npm liên quan đến SAP, mở ra rủi ro bảo mật nghiêm trọng cho môi trường phát triển và pipeline CI/CD. Kỹ thuật tấn công dựa trên preinstall script độc hại trong package.json, tự động thực thi trong quá trình cài đặt dependency để đánh cắp thông tin xác thực từ GitHub, npm và các nhà cung cấp đám mây lớn.
Tin tức bảo mật: các gói npm SAP bị can thiệp
Nhiều nhà nghiên cứu từ StepSecurity, Aikido Security, SafeDep, Socket và Wiz đã ghi nhận các phiên bản độc hại của bộ công cụ SAP Cloud Application Programming Model (CAP). Bốn gói bị phát tán phiên bản cài cắm mã độc gồm @cap-js/sqlite, @cap-js/postgres, @cap-js/db-service và mbt.
Các gói hợp lệ này bị chèn thêm preinstall hook trong package.json, khiến mã độc được kích hoạt ngay khi người dùng chạy npm install hoặc khi hệ thống CI/CD dựng dependency tree.
Tham khảo phân tích gốc từ StepSecurity: https://www.stepsecurity.io/blog/a-mini-shai-hulud-has-appeared
Chuỗi thực thi và kỹ thuật né phát hiện
Khác với các chiến dịch trước, phần dropper setup.mjs không chạy payload trực tiếp bằng Node.js. Thay vào đó, nó tải về Bun JavaScript runtime ngay trong lúc cài đặt và dùng Bun để thực thi payload giai đoạn hai có dung lượng lớn, được làm rối mạnh là execution.js.
Thiết kế này nhằm né các công cụ bảo mật tập trung vào Node.js hoặc phân tích tĩnh truyền thống. Việc sử dụng Bun trong bối cảnh cài đặt npm là một chỉ báo bất thường đáng chú ý trong tin tức an ninh mạng này.
Luồng hoạt động của payload
Khi setup.mjs được kích hoạt, nó tải và khởi chạy execution.js. Payload này hoạt động như một trình đánh cắp thông tin xác thực và khung tự lan truyền.
- Thu thập thông tin xác thực từ môi trường phát triển.
- Đánh cắp token GitHub, token npm và khóa truy cập đám mây.
- Mã hóa dữ liệu thu được trước khi exfiltration.
- Gửi dữ liệu ra các repository GitHub công khai do kẻ tấn công kiểm soát.
Hành vi tự lan truyền trong hệ sinh thái npm
Phần mềm độc hại còn có logic propagation. Khi lấy được token npm hợp lệ, nó liệt kê các package khác thuộc tài khoản maintainer bị xâm phạm, chèn mã độc vào các package đó rồi phát hành lại.
Cơ chế này làm tăng tốc độ lây lan trong hệ sinh thái npm mà không cần thao tác thủ công từ kẻ tấn công. Đây là đặc trưng quan trọng của một cuộc tấn công chuỗi cung ứng, vì chỉ cần một điểm xâm nhập ở maintainer hoặc pipeline là có thể ảnh hưởng tới nhiều phụ thuộc downstream.
Kỹ thuật geofencing và dấu hiệu nhận diện
Trong giai đoạn khởi tạo, mã độc kiểm tra múi giờ, locale hệ thống và biến môi trường ngôn ngữ. Nếu phát hiện giá trị bắt đầu bằng “ru”, nó tự kết thúc ngay lập tức để không thực thi trên các môi trường cấu hình ngôn ngữ này.
Cơ chế loại trừ này được ghi nhận là một dấu vết hành vi lặp lại trong chiến dịch, hỗ trợ phát hiện xâm nhập và phân loại mẫu mã độc bằng threat intelligence.
IOC kỹ thuật
- setup.mjs – dropper dùng chung trong các package bị ảnh hưởng.
- SHA1: 307d0fa7407d40e67d14e9d5a4c61ac5b4f20431
- execution.js – payload giai đoạn hai, dung lượng khoảng 11 MB.
- SHA256: eb6eb4154b03ec73218727dc643d26f4e14dfda2438112926bb5daf37ae8bcdb
- Hành vi IOC: tải Bun runtime bất thường trong quá trình
npm install. - Hành vi IOC: exfiltration qua repository GitHub công khai.
- Hành vi IOC: tự dừng khi locale/ngôn ngữ hệ thống bắt đầu bằng
ru.
Ảnh hưởng hệ thống và rủi ro an toàn thông tin
Chiến dịch này tác động trực tiếp đến developer workstation, môi trường build và các CI/CD pipeline sử dụng phụ thuộc npm từ hệ sinh thái SAP CAP. Nếu token hoặc secret đã có mặt trong môi trường bị ảnh hưởng, kẻ tấn công có thể truy cập tiếp vào kho mã nguồn, dịch vụ đám mây hoặc hệ thống phát hành nội bộ.
Rủi ro bảo mật đáng chú ý nằm ở việc mã độc không cần khai thác lỗi runtime truyền thống. Thay vào đó, nó lợi dụng cơ chế lifecycle script của npm để thực thi trong ngữ cảnh tin cậy của chuỗi cung ứng phần mềm. Điều này làm cho phát hiện tấn công khó hơn nếu chỉ dựa vào kiểm tra Node.js thông thường.
Khuyến nghị kiểm tra và ứng phó
Các tổ chức sử dụng SAP CAP tooling cần rà soát ngay dependency trong CI/CD, xác định xem có sử dụng các phiên bản đã bị can thiệp hay không và thay thế bằng phiên bản sạch sau khi được xác minh.
Những hành động tối thiểu cần thực hiện gồm:
- Kiểm tra dependency tree và khóa phiên bản npm.
- Thu hồi và xoay vòng toàn bộ secret có thể đã tồn tại trong môi trường bị ảnh hưởng.
- Chặn các phiên bản package bị xác định là độc hại.
- Giám sát log cài đặt để phát hiện tải Bun runtime bất thường.
- Kiểm tra repository GitHub công khai hoặc endpoint lưu trữ có dấu hiệu exfiltration.
Để đối chiếu thêm với chỉ dẫn theo dõi lỗ hổng và chiến dịch liên quan, có thể tham khảo hệ thống cảnh báo từ NVD: https://nvd.nist.gov/
Chỉ báo kỹ thuật cho phát hiện xâm nhập
Trong quá trình giám sát an ninh mạng, các đội SOC và DevSecOps nên ưu tiên nhận diện các chỉ báo sau trong log build và telemetry:
- Quá trình cài đặt npm tự tải binary/runtime ngoài dự kiến.
- Xuất hiện script preinstall trong package hợp lệ nhưng có thay đổi không được phê duyệt.
- Giao tiếp ra ngoài tới GitHub công khai từ tiến trình build.
- Token npm hoặc GitHub được truy cập trong ngữ cảnh pipeline.
- Hoạt động bất thường liên quan đến locale/ngôn ngữ hệ thống.
Với các môi trường đang dùng lỗ hổng CVE hoặc quản trị dependency tự động, nên bổ sung kiểm tra lifecycle script để giảm nguy cơ remote code execution thông qua chuỗi cung ứng. Trong bối cảnh này, việc cập nhật bản vá và khóa nguồn package đáng tin cậy là biện pháp trọng tâm để giảm nguy cơ bảo mật.
Thông tin điều tra hiện tại chưa gắn với CVE cụ thể, nhưng hành vi của chiến dịch cho thấy đây là một dạng cảnh báo CVE theo hướng supply chain và cần được xử lý như một sự cố hệ thống bị xâm nhập trong pipeline phát triển phần mềm.










