Chuyện gì đã xảy ra
Ngày 8/10/2026, lúc 01:12 UTC, phiên bản 0.5.144 của gói npm tensorlake, SDK của một nền tảng sandbox serverless cho tác tử AI, được phát hành kèm sâu thuộc họ Shai-Hulud chuyên đánh cắp thông tin xác thực. Gói này có khoảng 12.000 đến 18.000 lượt tải mỗi tuần. Phiên bản tồn tại khoảng 1 giờ 40 phút, theo khuyến cáo của nhóm bảo trì, và dữ liệu đo lường cho thấy không ai dùng nó. Socket đã gắn cờ phiên bản độc hại 11 phút sau khi phát hành.
Theo các phân tích đã công bố, gói Tensorlake trên PyPI và Cargo không bị ảnh hưởng.
Cách xâm nhập
Cuộc tấn công không bắt đầu từ npm mà từ GitHub:
- Ngày 7/10, kẻ tấn công đẩy commit thẳng vào nhánh main của tensorlakeai/tensorlake qua giao diện web, dùng tài khoản quản trị của một người bảo trì, không qua pull request.
- Tám commit tinh chỉnh payload và thêm hook preinstall vào package.json.
- Khoảng 20 giờ sau, cùng tài khoản đó kích hoạt thủ công workflow phát hành chính thức.
Kết quả: gói được phát hành với chứng thực nguồn gốc (provenance) hợp lệ. Như StepSecurity lưu ý, chứng thực chỉ cho biết gói được build ở đâu, không có nghĩa mã an toàn.
Mã độc làm gì
- Hook preinstall chạy một trình tải bị làm rối, tải runtime Bun và thực thi payload 856 KB.
- Đánh cắp token npm và GitHub, thông tin xác thực đám mây, Kubernetes và Vault, cùng tệp cấu hình của công cụ lập trình AI.
- Tìm cách lây lan: phát hành lại các gói khác của người dùng và commit tệp .claude và .vscode vào kho mã của họ, với tác giả giả "claude@users.noreply.github.com" và thông điệp "chore: update dependencies".
- Token con tin: cài một tiến trình giám sát kiểm tra token GitHub bị đánh cắp mỗi 60 giây trong tối đa 24 giờ. Nếu token bị thu hồi, nó xóa thư mục home (rm -rf ~/ trên Linux và macOS). Các nhà nghiên cứu chưa thống nhất bẫy được kích hoạt khi nào.
Mẫu hai tệp (setup.mjs và Math_Symbol.js) giống các vụ tấn công tháng 8 vào gói keyv và cacheable, dựa trên mã "mini Shai-Hulud" mà nhóm TeamPCP công bố. Chưa có bằng chứng đây là cùng một nhóm.
Nếu bạn đã cài đặt
- Trước khi thu hồi token, hãy cô lập máy và dừng tiến trình giám sát để không mất thư mục home.
- Coi mọi thông tin xác thực trên máy là đã bị lộ: npm, GitHub, đám mây và cấu hình tác tử AI. Sau đó xoay vòng tất cả.
- Tìm các commit "chore: update dependencies" từ tác giả lạ và workflow mới trong kho mã.
- Kiểm tra các phiên bản mới phát hành của chính các gói của bạn.
Bài học
- Bắt buộc review cho mọi lần push vào main, kể cả từ quản trị viên.
- Dùng khóa phần cứng (FIDO2) cho tài khoản người bảo trì.
- Áp dụng thời gian chờ (cooldown) trước khi cài phiên bản vừa phát hành, và tắt script cài đặt khi có thể.
- Công cụ lập trình AI giờ là mục tiêu: cấu hình của chúng chứa các khóa giá trị.
Nguồn
- Khuyến cáo bảo mật của Tensorlake (GHSA-8g63-53c9-65j2): https://github.com/tensorlakeai/tensorlake/security/advisories/GHSA-8g63-53c9-65j2
- Socket: https://www.socket.dev/blog/tensorlake-compromise
- StepSecurity: https://www.stepsecurity.io/blog/tensorlake-npm-compromised-hostage-token-worm
- Aikido: https://www.aikido.dev/blog/tensorlake-npm-package-compromised
Bạn muốn bảo vệ chuỗi cung ứng phần mềm và pipeline? KGA IT cung cấp tư vấn miễn phí: kga-it.com.