StegaBin: Cảnh báo nghiêm trọng tấn công chuỗi cung ứng npm

Một mối đe dọa mạng chuỗi cung ứng phần mềm mới đang khai thác hệ sinh thái npm, nơi một phụ thuộc sai sót có thể âm thầm mở cửa vào máy của nhà phát triển. Hoạt động này, được theo dõi với tên gọi “StegaBin”, kết hợp các kỹ thuật quen thuộc như typosquatting với một lộ trình phân phối theo giai đoạn, thực thi trong quá trình cài đặt và giữ cho hành vi đánh cắp nằm ngoài tầm nhìn.
Tổng Quan Về Cuộc Tấn Công Mạng Chuỗi Cung Ứng StegaBin
Trong đợt tấn công này, 26 gói mã độc đã được công bố trong vòng hai ngày, được thiết kế để chạy một bước cài đặt ẩn khi các nhà phát triển thêm chúng vào dự án của mình. Một khi được thực thi, chuỗi tấn công có thể tải xuống các script dành riêng cho nền tảng, cài đặt một Remote Access Trojan (RAT) và sau đó tải một bộ công cụ chín phần tập trung vào việc đánh cắp thông tin xác thực và bí mật từ máy trạm của nhà phát triển.
Phát Hiện Sớm và Liên Kết Nguồn Gốc
Sau những tín hiệu ban đầu từ quá trình quét tự động, các nhà nghiên cứu của Socket.dev đã ghi nhận hoạt động này và xác định cụm tấn công, liên kết nó với phong cách tấn công tinh vi thường thấy ở các nhóm tấn công có chủ đích (APT) có tổ chức.
Báo cáo độc lập cũng nhanh chóng xuất hiện, với nhà nghiên cứu Kieran Miyamoto tiết lộ 17 gói liên quan và giải thích bộ giải mã Pastebin được sử dụng để khôi phục các địa chỉ Command and Control (C2) ẩn.
Phạm vi của chiến dịch này rất rộng vì các gói giả mạo bắt chước các thư viện phổ biến trên nhiều framework web, tiện ích, cơ sở dữ liệu và công cụ xây dựng. Điều này làm cho việc cài đặt nhầm trở nên khả thi trong quá trình làm việc hàng ngày. Nhiều gói thậm chí còn liệt kê thư viện thực mà chúng bắt chước làm phụ thuộc, giúp dự án của nạn nhân vẫn có thể chạy bình thường trong khi script cài đặt độc hại chạy ẩn trong nền.
Cơ Chế Khai Thác Và Triển Khai Payload
Sự kết hợp giữa cài đặt không ma sát và hành vi đánh cắp này đặt mã nguồn, khóa SSH, thông tin đăng nhập trình duyệt, dữ liệu clipboard và token vào tình thế rủi ro. Đặc biệt đối với các nhóm phát triển nhanh và thường xuyên tái sử dụng các bí mật hàng ngày, đây là một mối đe dọa mạng cần được chú ý.
Bước Khởi Đầu: Script Cài Đặt Ẩn
Bước đầu tiên được kích hoạt trong quá trình cài đặt: tệp package.json khai báo một script cài đặt tự động thực thi:
node ./scripts/test/install.js
Trình cài đặt này gọi một bộ tải (loader) được đặt tại vendor/scrypt-js/version.js, một tên tệp được chọn để giống như một thư viện mã hóa thông thường.
Kỹ Thuật Steganography qua Pastebin
Tiếp theo, bộ tải giải mã ba liên kết Pastebin được mã hóa cứng. Nội dung hiển thị của chúng giống như một bài luận khoa học máy tính vô hại, nhưng các ký tự đơn lẻ được hoán đổi ở khoảng cách đều đặn để che giấu cơ sở hạ tầng thực sự.
Điều này đánh lừa những người xem xét nhanh. Sau khi trích xuất danh sách ẩn, mã độc sẽ duyệt qua 31 tên miền được lưu trữ trên Vercel cho đến khi một trong số chúng phản hồi với một payload shell trực tiếp, trong khi các yêu cầu khác có thể trả về thông báo mồi nhử “Permanently suspended”.
Triển Khai RAT và Bộ Công Cụ Đánh Cắp
Từ đó, một bộ khởi động được bảo vệ bằng token sẽ thiết lập giai đoạn tiếp theo, bao gồm cài đặt Node.js 20.11.1 nếu thiếu, tải xuống các script bổ sung và chạy chúng trong nền trước khi xóa dấu vết.
Remote Access Trojan (RAT) cuối cùng kết nối đến 103[.]106[.]67[.]63:1244 và có thể kích hoạt tải xuống tự động các module nhắm mục tiêu vào các cài đặt VSCode, dữ liệu Git, tài liệu SSH, lưu trữ trình duyệt và các tệp bí mật cục bộ. Đây là một mối đe dọa mạng trực tiếp đến tài sản trí tuệ và thông tin nhạy cảm của nhà phát triển.
Tham khảo thêm về cách phòng chống các cuộc tấn công RAT tại: Cybersecurity Best Practices to Prevent Remote Access Trojan Infections.
Kỹ Thuật Duy Trì Truy Cập (Persistence)
Một kỹ thuật duy trì quyền truy cập nổi bật vì nó hòa nhập vào quy trình phát triển hàng ngày: một module ghi tệp tasks.json độc hại của VSCode và ẩn lệnh thực sự của nó phía sau 186 khoảng trắng đầu dòng, đẩy phần nguy hiểm ra khỏi màn hình.
Tác vụ được cấu hình để chạy khi một thư mục được mở, biến một thư mục dự án bị nhiễm thành một trigger lặp lại mỗi khi nhà phát triển quay lại nó. Điều này tạo ra một mối đe dọa mạng dai dẳng và khó phát hiện.
Chỉ Số Thỏa Hiệp (Indicators of Compromise – IoC)
Để phát hiện và ứng phó với StegaBin, các tổ chức nên tìm kiếm các IoC sau:
- Đường dẫn tệp độc hại:
./scripts/test/install.jsvendor/scrypt-js/version.js- Các tệp
tasks.jsoncủa VSCode có dấu hiệu bất thường (ví dụ: khoảng trắng dài,"runOn": "folderOpen").
- Địa chỉ IP C2:
103[.]106[.]67[.]63:1244
- Tên miền C2:
- Các tên miền được lưu trữ trên Vercel (
*.vercel.app) với hoạt động mạng bất thường. - Lưu lượng truy cập ra bên ngoài đến
pastebin.comvới mục đích mã hóa/giải mã dữ liệu.
- Các tên miền được lưu trữ trên Vercel (
- Hành vi đáng ngờ:
- Các gói npm mới có script cài đặt không mong muốn.
- Đường dẫn tệp lạ và mức độ obfuscation cao trong các gói phụ thuộc.
Biện Pháp Phòng Ngừa và Ứng Phó Để Đảm Bảo An Ninh Mạng
Những người bảo vệ hệ thống nên coi đây là lời nhắc nhở rằng vệ sinh phụ thuộc là một biện pháp kiểm soát an ninh, không chỉ là một vấn đề xây dựng. Việc không tuân thủ có thể dẫn đến một tấn công mạng nghiêm trọng.
Để tăng cường an ninh mạng, cần kiểm tra các gói mới để tìm script cài đặt không mong muốn, đường dẫn tệp lạ và mức độ che giấu cao. Đọc thêm về tầm quan trọng của vệ sinh phụ thuộc tại: StegaBin: 26 malicious npm packages use Pastebin steganography.
Phòng Ngừa Trên CI/CD và Máy Trạm Phát Triển
- Trong môi trường CI/CD và trên máy tính xách tay của nhà phát triển, hãy xem xét việc vô hiệu hóa các script lifecycle khi chúng không cần thiết.
- Ghim các phụ thuộc bằng tệp lockfile để đảm bảo tính nhất quán và ngăn chặn việc tải xuống các phiên bản độc hại mới hơn.
- Xác minh người duy trì trước khi thêm các gói có tên tương tự.
Giám Sát và Phát Hiện Kịp Thời
Các nhóm cần tìm kiếm đường dẫn loader chung vendor/scrypt-js/version.js và lưu lượng truy cập ra bên ngoài đến Pastebin và các máy chủ *.vercel.app bất thường. Nếu VSCode được sử dụng rộng rãi, kiểm tra các tệp tasks.json toàn cục và workspace để tìm các khoảng trắng dài và hành vi “runOn”: “folderOpen” có thể giúp phát hiện bước duy trì truy cập sớm.
Phản Ứng Sau Xâm Nhập
Vì các máy chủ lệnh còn hoạt động trong quá trình phân tích, những người ứng phó nên giả định rằng việc đánh cắp dữ liệu trong thế giới thực là có thể xảy ra. Ưu tiên kiểm tra điểm cuối, quét bí mật và đặt lại thông tin xác thực trên toàn bộ hệ thống phát triển và xây dựng. Điều này là tối quan trọng để giảm thiểu thiệt hại từ một tấn công mạng.









