OtterCookie malware: Tấn công chuỗi cung ứng cực nguy hiểm

Một mối đe dọa mạng nghiêm trọng mới đã xuất hiện, nhắm mục tiêu vào các nhà phát triển phần mềm trên toàn thế giới. Chiến dịch được đặt tên là “Contagious Interview” đang triển khai các gói độc hại trên hạ tầng npm, GitHub và Vercel nhằm phát tán OtterCookie malware.
Hoạt động nhiều giai đoạn tinh vi này cho thấy các tác nhân đe dọa đã điều chỉnh công cụ của mình để nhắm vào quy trình phát triển JavaScript và Web3 hiện đại.
Kể từ ngày 10 tháng 10 năm 2025, các nhà nghiên cứu đã phát hiện ít nhất 197 gói npm độc hại mới. Những gói này được thiết kế để lừa các nhà phát triển cài đặt mã bị xâm nhập. Hơn 31.000 lượt tải xuống bổ sung đã được ghi nhận chỉ riêng trong làn sóng tấn công này.
Cơ Chế Tấn Công Chuỗi Cung Ứng Qua npm, GitHub và Vercel
Chuỗi tấn công hoạt động thông qua một phương pháp tấn công chuỗi cung ứng được phối hợp chặt chẽ. Các tác nhân đe dọa tạo ra các hồ sơ nhà phát triển giả mạo trên GitHub.
Họ xuất bản các gói npm typosquatting giả mạo các thư viện hợp pháp. Đồng thời, họ sử dụng dịch vụ lưu trữ Vercel để dàn dựng các payload mã độc.
Tạo Dựng Lưới Bẫy Ban Đầu
Các tài khoản GitHub giả mạo đóng vai trò là mồi nhử hấp dẫn. Chúng thường được xây dựng với các dự án liên quan đến tiền điện tử, bao gồm các giao diện DEX giả và các trang web token.
Mục đích là để thu hút các nhà phát triển tải xuống các gói npm độc hại.
Kích Hoạt Mã Độc và Tác Động Ban Đầu
Khi các nhà phát triển vô tình cài đặt các gói độc hại này, một script postinstall sẽ tự động thực thi.
Script này kết nối với các endpoint do kẻ tấn công kiểm soát để tìm nạp và chạy biến thể OtterCookie mới nhất. Việc tích hợp liền mạch vào các quy trình phát triển tiêu chuẩn khiến cuộc tấn công trở nên đặc biệt nguy hiểm.
Điều này bởi vì nó bỏ qua nhận thức bảo mật truyền thống. Các nhà phát triển thường mong đợi các gói npm thực thi mã trong quá trình cài đặt.
Phát Hiện và Phân Tích Hạ Tầng Tấn Công
Các nhà phân tích bảo mật tại Socket.dev đã ghi nhận và xác định hạ tầng đằng sau chiến dịch này. Họ nhận định đây là một hoạt động được tổ chức chặt chẽ.
Các nhà nghiên cứu đã truy dấu các gói độc hại như “tailwind-magic”. Gói này giả mạo thư viện “tailwind-merge” hợp pháp. Nó dẫn đến một tài khoản GitHub do tác nhân đe dọa kiểm soát có tên “stardev0914”.
Endpoint dàn dựng trên Vercel được xác định là “tetrismic.vercel.app”. Tài khoản GitHub này chứa ít nhất 18 repository được thiết kế để vừa làm phương tiện phát tán vừa là mồi nhử thuyết phục.
Ít nhất 5 gói độc hại cốt lõi, bao gồm “node-tailwind”, “tailwind-node” và “react-modal-select”, đã được định tuyến qua hạ tầng này. Đây là một ví dụ điển hình về một cuộc tấn công chuỗi cung ứng tinh vi.
Để hiểu rõ hơn về các phân tích này, bạn có thể tham khảo bài viết chi tiết từ Socket.dev tại đây.
Phân Tích Chi Tiết OtterCookie Malware
Kiến trúc mã độc OtterCookie phản ánh sự phát triển tinh vi. OtterCookie hoạt động như một công cụ đánh cắp thông tin (infostealer) kết hợp với trojan truy cập từ xa (Remote Access Trojan – RAT).
Nó có khả năng đa nền tảng, hoạt động trên các hệ điều hành Windows, macOS và Linux.
Cơ Chế Né Tránh Phát Hiện và Lây Nhiễm
Sau khi được thực thi trong một tiến trình Node.js, mã độc thực hiện kiểm tra môi trường ban đầu. Mục đích là để phát hiện các máy ảo (VM) và sandbox.
Tiếp theo, nó lấy dấu vân tay của máy chủ bị nhiễm. Sau đó, nó thiết lập giao tiếp hai chiều với các máy chủ chỉ huy và kiểm soát (C2).
Cách tiếp cận né tránh phát hiện này đảm bảo mã độc chỉ kích hoạt đầy đủ trên các máy tính hợp pháp của nhà phát triển. Điều này tránh các môi trường phân tích nơi các nhà nghiên cứu bảo mật thường hoạt động. Nó cho thấy sự tỉ mỉ trong quá trình thiết kế của cuộc tấn công chuỗi cung ứng này.
Quy Trình Lây Nhiễm và Khai Thác
Cơ chế lây nhiễm thể hiện kỹ thuật được thiết kế cẩn thận. Các gói npm độc hại sử dụng một script postinstall. Script này thực thi khi các nhà phát triển chạy lệnh npm install.
Script này gọi endpoint của tác nhân đe dọa tại https://tetrismic.vercel.app/api/ipcheck bằng cách sử dụng axios. Endpoint này trả về mã JavaScript được nhúng trong một trường JSON có tên “model”.
Gói sau đó trích xuất trường này và thực thi nó bằng eval bên trong tiến trình Node.js của nạn nhân. Điều này cấp cho kẻ tấn công toàn bộ đặc quyền Node.js và cho phép thực thi mã tùy ý (arbitrary code execution).
Máy chủ dàn dựng liên tục cập nhật payload main.js của nó. Điều này cho phép các tác nhân đe dọa luân chuyển các biến thể mã độc qua nhiều gói. Đồng thời, họ có thể tùy chỉnh phản hồi cho từng mục tiêu cụ thể. Để tăng cường bảo mật npm, cần thường xuyên kiểm tra các script postinstall.
Cơ Chế Duy Trì Quyền Truy Cập và Thu Thập Dữ Liệu
Khi được triển khai, OtterCookie thiết lập quyền truy cập bền vững thông qua nhiều cơ chế khác nhau. Đây là một đặc điểm chung của các tấn công mạng phức tạp.
Duy Trì Quyền Truy Cập (Persistence)
Trên các hệ thống Windows, mã độc tạo các tác vụ theo lịch trình có tên “NodeUpdate”. Các tác vụ này chạy khi đăng nhập với đặc quyền cao nhất. Nó cũng thêm các mục đăng ký dưới HKCU\Run\NodeHelper.
Payload thực tế tạo ra ba tiến trình worker không đồng bộ bằng cách sử dụng child_process.spawn. Mỗi tiến trình chạy như một tiến trình Node.js tách rời với stdio được chuyển hướng để bỏ qua và cờ windowsHide được đặt là true.
Các tiến trình này sau đó tự hủy tham chiếu (unref), cho phép chúng tiếp tục chạy ngầm sau khi trình tải ban đầu thoát.
// Ví dụ cấu trúc lệnh tạo Scheduled Task trên Windows (tham khảo) schtasks /create /tn "NodeUpdate" /tr "C:\path\to\node.exe C:\path\to\malware.js" /sc ONLOGON /rl HIGHEST /f// Ví dụ thêm Registry Entry (tham khảo)reg add HKCU\Run /v NodeHelper /t REG_SZ /d "C:\path\to\node.exe C:\path\to\malware.js" /fThu Thập Thông Tin Nhạy Cảm
Mã độc đồng thời thực hiện keylogging trên toàn hệ thống bằng cách sử dụng module GlobalKeyboardListener. Nó chụp ảnh màn hình từ tất cả các màn hình được kết nối sau mỗi 5 giây. Ngoài ra, nó exfiltrate nội dung clipboard.
Nó cũng quét đệ quy hệ thống tệp để tìm các tệp khớp với các mẫu như “.env”, “metamask”, “phantom” và “seed”. Mục tiêu là để thu hoạch dữ liệu ví tiền điện tử và thông tin đăng nhập. Khả năng thu thập dữ liệu toàn diện mở rộng đến các hồ sơ trình duyệt.
Mã độc đặc biệt nhắm mục tiêu vào các trình duyệt Chrome và Brave trên cả ba hệ điều hành. Nó truy cập thông tin đăng nhập được lưu trữ bằng cách truy vấn cơ sở dữ liệu SQLite “Login Data” được tìm thấy trong thư mục hồ sơ của mỗi trình duyệt.
Thêm vào đó, nó xác định và trích xuất dữ liệu từ ít nhất 42 tiện ích mở rộng ví tiền điện tử khác nhau. Các tiện ích này bao gồm MetaMask, Phantom, Keplr và hàng chục tiện ích khác thường được sử dụng bởi các nhà phát triển Web3. Để bảo vệ dữ liệu cá nhân, người dùng cần cảnh giác trước các hình thức tấn công mạng này.
Cơ Sở Hạ Tầng Chỉ Huy và Điều Khiển (C2)
Tất cả dữ liệu thu thập được truyền qua hạ tầng chỉ huy và điều khiển tại địa chỉ IP 144.172.104.117. Hạ tầng này xử lý cả việc thu thập dữ liệu và phân công tác vụ.
Điều này cho phép các tác nhân đe dọa ra lệnh từ xa và duy trì quyền truy cập shell tương tác liên tục.
Chỉ Số Đe Dọa (IOCs)
Các chỉ số đe dọa (Indicators of Compromise – IOCs) sau đây có thể giúp các tổ chức phát hiện và ứng phó với chiến dịch tấn công chuỗi cung ứng này.
Mã Độc (Malware)
- OtterCookie
Các Gói npm Độc Hại Đã Biết
tailwind-magicnode-tailwindtailwind-nodereact-modal-select
Lưu ý: Đây chỉ là một số gói đã được xác định. Có thể có nhiều gói độc hại khác thuộc chiến dịch này.
Hạ Tầng Tấn Công (Infrastructure)
- GitHub Account:
stardev0914 - Vercel Staging Endpoint:
tetrismic.vercel.app - Command and Control (C2) IP Address:
144.172.104.117







