TeamPCP, nhóm tấn công đứng sau chuỗi supply chain attack gần đây, đã bị phát hiện có liên quan đến việc xâm nhập các gói npm và PyPI từ TanStack, UiPath, Mistral AI, OpenSearch và Guardrails AI như một phần của chiến dịch Mini Shai-Hulud mới.
Các gói npm bị ảnh hưởng đã được sửa đổi để bao gồm một tệp JavaScript bị obfuscated (tên là "router_init.js"), được thiết kế để phân tích môi trường thực thi và khởi chạy một credential stealer toàn diện. Công cụ này có khả năng nhắm mục tiêu vào các nhà cung cấp dịch vụ đám mây, ví tiền điện tử, công cụ AI, ứng dụng nhắn tin và các hệ thống CI, bao gồm GitHub Actions. Theo các báo cáo từ Aikido Security, Endor Labs, SafeDep, Socket và StepSecurity, dữ liệu bị đánh cắp sẽ được gửi đến tên miền "filev2.getsession[.]org".
Việc sử dụng cơ sở hạ tầng Session Protocol là một nỗ lực cố ý của những kẻ tấn công nhằm trốn tránh sự phát hiện, vì tên miền này ít có khả năng bị chặn trong môi trường doanh nghiệp do nó thuộc về một dịch vụ nhắn tin phi tập trung, tập trung vào quyền riêng tư. Như một phương án dự phòng, dữ liệu được mã hóa sẽ được đẩy lên các kho lưu trữ do kẻ tấn công kiểm soát dưới tên tác giả "[email protected]" thông qua GitHub GraphQL API bằng cách sử dụng các GitHub tokens bị đánh cắp.
Khả năng duy trì sự hiện diện và mở rộng tấn công
Phần mềm độc hại này còn có khả năng thiết lập các persistence hooks trong Claude Code và Microsoft Visual Studio Code (VS Code) để tồn tại sau khi khởi động lại và thực thi lại mã độc mỗi khi các IDE này được mở.
Hơn nữa, nó cài đặt một dịch vụ gh-token-monitor để giám sát và đánh cắp lại các GitHub tokens, đồng thời chèn hai GitHub Actions workflows độc hại để chuyển đổi các repository secrets thành đối tượng JSON và tải dữ liệu lên máy chủ bên ngoài ("api.masscan[.]cloud").
TanStack sau đó đã truy vết được vụ xâm nhập bắt nguồn từ một chuỗi tấn công GitHub Actions liên quan đến trình kích hoạt "pull_request_target", GitHub Actions cache poisoning, và trích xuất bộ nhớ thực thi của một OIDC token từ tiến trình chạy GitHub Actions. TanStack cho biết: "Không có npm tokens nào bị đánh cắp và bản thân quy trình npm publish workflow không bị xâm nhập."
Cụ thể, những kẻ tấn công được đánh giá là đã dàn dựng mã độc trong một GitHub fork, chèn nó vào các tệp nén npm được xuất bản, sau đó chiếm quyền điều khiển workflow "TanStack/router" hợp lệ của dự án để xuất bản các phiên bản bị xâm nhập với chứng thực SLSA hợp lệ.
Cơ chế lây lan như sâu máy tính (Worm)
Điều làm cho loại sâu này trở nên nổi bật là khả năng tự lây lan sang các gói phần mềm khác bằng cách định vị một npm token có thể xuất bản với cài đặt bypass_2fa là true, liệt kê mọi gói được xuất bản bởi cùng một người duy trì (maintainer), và trao đổi một GitHub OIDC token lấy một publish token cho từng gói để lách qua các phương thức xác thực truyền thống.
Vụ xâm nhập chuỗi cung ứng TanStack đã được chỉ định mã nhận diện CVE-2026-45321. Nó có điểm CVSS là 9.6/10.0, mức độ cực kỳ nghiêm trọng. Sự cố này đã ảnh hưởng đến 42 gói và 84 phiên bản trong hệ sinh thái TanStack.
"Cuộc tấn công đã xuất bản các phiên bản độc hại thông qua chính đường ống phát hành GitHub Actions của dự án bằng cách sử dụng các OIDC tokens bị chiếm quyền," nhà nghiên cứu Ashish Kurmi của StepSecurity cho biết.
"Trong một bước leo thang cực kỳ hiếm thấy, các gói bị xâm nhập mang các chứng thực SLSA Build Level 3 provenance hợp lệ, khiến đây trở thành sâu npm đầu tiên được ghi nhận tạo ra các gói độc hại có chứng thực hợp lệ. Con sâu này sau đó đã lây lan rộng hơn TanStack sang các gói từ UiPath, DraftLab và các nhà phát triển khác."
Các gói phần mềm bị ảnh hưởng
Bên cạnh TanStack, chiến dịch Mini Shai-Hulud cũng đã lan sang một số gói khác, bao gồm cả trên PyPI:
- [email protected] (PyPI)
- [email protected] (PyPI)
- @opensearch-project/[email protected], 3.6.2, 3.7.0, và 3.8.0
- @squawk/[email protected]
- @squawk/[email protected]
- @squawk/[email protected]
- @tallyui/[email protected], 1.0.2, và 1.0.3
- @tallyui/[email protected], 1.0.2, và 1.0.3
Microsoft, trong phân tích về gói PyPI mistralai độc hại, cho biết nó được thiết kế để tải xuống một credential stealer từ máy chủ từ xa ("83.142.209[.]194"). Mã độc này bao gồm logic nhận diện quốc gia để tránh các môi trường ngôn ngữ Nga và một "nhánh phá hoại giới hạn địa lý" có xác suất 1/6 thực thi lệnh rm -rf / khi hệ thống xuất hiện ở Israel hoặc Iran.
"Vụ xâm nhập [email protected] đặc biệt đáng chú ý vì mã độc thực thi ngay khi import," Socket cho biết. "Gói này kiểm tra các hệ thống Linux, tải xuống một tệp Python từ xa, ghi vào /tmp/transformers.pyz và thực thi nó bằng python3 mà không có sự kiểm tra tính toàn vẹn."
Hoạt động mới nhất này cho thấy chiến dịch tiếp tục lan rộng trên cả npm và PyPI, với các gói bị ảnh hưởng trải dài từ cơ sở hạ tầng tìm kiếm, công cụ AI, gói phát triển liên quan đến hàng không, tự động hóa doanh nghiệp cho đến các hệ sinh thái CI/CD.