TanStack, Mistral AI, UiPath là nạn nhân của cuộc tấn công chuỗi cung ứng Mini Shai-Hulud

AI & ML12 tháng 5, 2026·7 phút đọc

Nhóm hacker TeamPCP đã thực hiện một cuộc tấn công chuỗi cung ứng phần mềm quy mô lớn, ảnh hưởng đến hơn 170 gói thư viện của các dự án nổi tiếng như TanStack, Mistral AI và UiPath. Mã độc được thiết kế để đánh cắp thông tin xác thực quan trọng và tự động lan rộng thông qua việc khai thác lỗ hổng trong GitHub Actions.

TanStack, Mistral AI, UiPath là nạn nhân của cuộc tấn công chuỗi cung ứng Mini Shai-Hulud

TanStack, Mistral AI, UiPath là nạn nhân của cuộc tấn công chuỗi cung ứng Mini Shai-Hulud

Hơn 170 gói thư viện trên các hệ sinh thái NPM và PyPI đã bị xâm phạm trong một cuộc tấn công chuỗi cung ứng phần mềm mới được phối hợp dưới tên gọi Mini Shai-Hulud.

Chiến dịch này đã nhắm vào 42 gói TanStack, 65 gói UiPath, các gói PyPI của Mistral AI, máy khách JavaScript OpenSearch, hơn một chục gói Squawk, gói PyPI Guardrails AI và nhiều mô-đun phổ biến khác.

Hình ảnh minh họa tấn công mạngHình ảnh minh họa tấn công mạng

Nhóm hacker TeamPCP, nổi tiếng với việc chỉ huy nhiều cuộc tấn công chuỗi cung ứng trong vài tháng qua, đã bị xác định là chủ thể đứng sau chiến dịch này. Tên các nhánh commit "dead-drop" được sử dụng trong cuộc tấn công lấy cảm hứng từ bộ truyện Dune của Frank Herbert, và các kho lưu trữ mã độc có mô tả "Shai-Hulud: Here We Go Again".

Giống như các chiến dịch trước đây, sâu Mini Shai-Hulud nhắm đến các thông tin nhạy cảm bao gồm thông tin xác thực của nhà phát triển, khóa API, token, thông tin đăng nhập đám mây, ví tiền điện tử và các bí mật liên quan đến công cụ AI cũng như ứng dụng nhắn tin.

Kỹ thuật tấn công vào TanStack

Cuộc tấn công chuỗi cung ứng mới này được phát hiện ngay sau khi các gói độc hại được xuất bản thông qua quy trình phát hành chính thức của TanStack. Không giống như các cuộc xâm nhập trước đây của TeamPCP thường dựa vào các bí mật bị đánh cắp, cuộc tấn công vào TanStack đã xâu chuỗi ba lỗ hổng bảo mật đã biết để phát hành 84 bản dựng độc hại trên 42 gói.

Kẻ tấn công đã đặt payload của mình trong một fork của GitHub, tiêm payload vào các tệp tarball NPM được xuất bản, sau đó chiếm quyền kiểm soát đường ống CI/CD của dự án để xuất bản các gói trực tiếp lên NPM. Bằng cách khai thác token OIDC môi trường trong quy trình làm việc, chúng đã bỏ qua bước xuất bản của quy trình.

Theo TanStack, kẻ tấn công đã khai thác ba lớp lỗ hổng: cấu hình sai pull_request_target (còn gọi là "Pwn Request"), ngộ độc bộ nhớ đệm GitHub Actions qua ranh giới tin cậy giữa fork và base, và trích xuất token OIDC từ bộ nhớ quy trình của Actions runner tại thời điểm chạy.

Quy trình diễn ra như sau: Kẻ tấn công đã đổi tên fork của kho lưu trữ TanStack/router thành zblgg/configuration, sau đó mở một pull request để kích hoạt quy trình làm việc pull_request_target. Điều này cho phép thực thi mã của kẻ tấn công và làm ngộ độc bộ nhớ đệm GitHub Actions.

Khi các pull request hợp lệ của người bảo trì sau đó được hợp nhất vào nhánh chính, quy trình phát hành đã khôi phục bộ nhớ đệm bị ngộ độc này. Các tệp nhị phân do kẻ tấn công kiểm soát sau đó trích xuất trực tiếp token OIDC từ bộ nhớ của trình chạy GitHub Actions.

Token GitHub OIDC bị đánh cắp cho phép kẻ tấn công lấy chứng chỉ ký và làm cho các gói độc hại xuất hiện như có nguồn gốc SLSA (những gói được xây dựng từ một nguồn tin cậy) hợp lệ. Do đó, các gói này được xuất bản dưới một danh tính đáng tin cậy.

Bằng cách khai thác cơ chế này, kẻ tấn công đã xuất bản hai phiên bản độc hại của mỗi một trong 42 gói TanStack.

Mã độc và hành vi phá hoại

Minh họa bảo mật phần mềmMinh họa bảo mật phần mềm

Trong tất cả các gói TanStack bị xâm phạm, cùng một payload (tệp router_init.js) kích thước 2,3 MB đã được tiêm trực tiếp vào tệp tarball của gói. Tệp JavaScript này đã bị làm rối mã và chứa một trình đánh cắp thông tin xác thực đa giai đoạn thực hiện thu thập dữ liệu, tải ra ngoài, duy trì sự tồn tại và có thể tự hủy.

Theo Socket, phần mềm độc hại này trước tiên nhận diện môi trường (hệ điều hành, nền tảng CI và thời gian chạy JavaScript), xác định các đường dẫn thu thập thông tin xác thực khác nhau cho Linux và macOS, và thực hiện một tra cứu trực tuyến, có khả năng để kiểm tra khả năng kết nối mạng.

Nó quét có hệ thống mọi mặt phẳng bí mật chính có sẵn trong môi trường CI đám mây hiện đại, sử dụng cả việc đọc biến môi trường trực tiếp và các lệnh gọi API chủ động.

Thông tin xác thực bị đánh cắp được exfiltrate (tải ra ngoài) qua ba kênh: tên miền git-tanstack.com, mạng Session (exfiltrate được mã hóa qua *.getsession.org), và các kho lưu trữ GitHub theo chủ đề Dune được tạo bằng token bị đánh cắp.

Kênh mạng Session là điểm mới. Là một mạng phi tập trung và khó bị gỡ bỏ, nó khó bị phá vỡ hơn nhiều so với các tên miền chuyên dụng hoặc việc exfiltrate dựa trên GitHub.

Để lan truyền trên NPM, sâu này khai thác cơ chế liên kết OIDC GitHub Actions "để tạo một token xuất bản NPM hợp lệ thay cho danh tính CI bị xâm phạm".

Ngoài ra, sâu này sử dụng GitHub GraphQL API để commit các bản sao của chính nó vào các nhánh của kho lưu trữ mã nguồn của những người bảo trì bị xâm phạm. Tác giả commit bị giả mạo để mạo danh ứng dụng GitHub Anthropic Claude Code.

Biến thể Python và mức độ ảnh hưởng

Các phiên bản độc hại của các gói PyPI Guardrails AI và Mistral AI chứa một payload khác so với phiên bản NPM. Gói Guardrails AI chứa 13 dòng mã mới được thiết kế để tìm nạp và thực thi một payload không bị làm rối mã từ git-tanstack.com.

Payload này là một trình đánh cắp thông tin xác thực mô-đun chỉ thực thi trên hệ thống Linux. Phần mềm độc hại thu thập thông tin xác thực rộng rãi và, lần đầu tiên, cũng nhắm đến các trình quản lý mật khẩu như 1Password và Bitwarden.

Khi được thực thi trên hệ thống có địa phương Israel hoặc Iran, phần mềm độc hại sẽ cố gắng phát một tệp MP3 ở âm lượng tối đa và xóa các tệp trong hệ thống.

Điều khiến cuộc tấn công chuỗi cung ứng mới nhất của TeamPCP đáng chú ý là việc lạm dụng chứng nhận nguồn gốc để xuất bản các gói độc hại không thể phân biệt được với các gói hợp lệ.

Tổng cộng, vào ngày 11 tháng 5, chiến dịch đã ảnh hưởng đến hơn 170 gói trên nhiều dự án cấp cao. Ít nhất 401 bản dựng gói độc hại đã được xuất bản trong vòng năm giờ. Một số gói bị ảnh hưởng, chẳng hạn như trong không gian tên TanStack, có hàng triệu lượt tải xuống mỗi tuần.

Người dùng được khuyên kiểm tra xem bất kỳ phiên bản bị xâm phạm nào của các gói bị ảnh hưởng đã lọt vào môi trường của họ hay chưa, làm sạch hệ thống và xoay vòng tất cả thông tin xác thực và bí mật có thể đã bị xâm phạm.

Họ cũng nên kiểm tra cấu hình OIDC GitHub Actions và quy trình làm việc pull_request_target để phát hiện ngộ độc bộ nhớ đệm, cũng như triển khai phân tích hành vi tại thời điểm cài đặt như một cơ chế bảo vệ bổ sung bên cạnh việc xác minh nguồn gốc.

Logo SecurityWeekLogo SecurityWeek

Chia sẻ:FacebookX
Nội dung tổng hợp bằng AI, mang tính tham khảo. Xem bài gốc ↗