TanStack tiết lộ chi tiết cuộc tấn công chuỗi cung ứng npm tinh vi

Phần mềm19 tháng 5, 2026·4 phút đọc

TanStack đã công bố báo cáo phân tích sau sự cố về một vụ tấn công chuỗi cung ứng phần mềm tinh vi, gây ảnh hưởng đến 42 gói npm và phát hành 84 phiên bản độc hại chỉ trong 6 phút. Vụ việc khai thác các lỗ hổng trong GitHub Actions để đánh cắp thông tin xác thực và lây lan mã độc, nhấn mạnh những rủi ro ngày càng tăng đối với hạ tầng CI/CD hiện đại.

TanStack tiết lộ chi tiết cuộc tấn công chuỗi cung ứng npm tinh vi

TanStack, nhóm phát triển nổi tiếng với các thư viện JavaScript như React Query, vừa công bố báo cáo chi tiết về một vụ tấn công chuỗi cung ứng phần mềm (supply chain attack) phức tạp. Sự kiện này đã dẫn đến việc compromised 42 gói npm và phát hành 84 phiên bản chứa mã độc chỉ trong vỏn vẹn 6 phút, gây đe dọa nghiêm trọng đến các nhà phát triển và hệ thống CI/CD.

Theo bài đăng phân tích sau sự cố (postmortem), vụ tấn công diễn ra vào ngày 11 tháng 5, tận dụng sự kết hợp giữa việc đầu độc bộ nhớ đệm (cache poisoning) của GitHub Actions, các quy trình làm việc pull_request_target không an toàn và việc trích xuất token thời gian chạy. Điều đáng báo động là kẻ tấn công không cần đánh cắp thông tin đăng nhập npm trực tiếp của người duy trì mà thay vào đó lợi dụng quyền hạn đã được cấp cho quy trình CI/CD để tạo token OpenID Connect (OIDC) nhằm phát hành trực tiếp lên npm.

Kỹ thuật tấn công tinh vi

Quy trình tấn công bắt đầu một ngày trước đó khi kẻ tấn công tạo ra một fork đã đổi tên của kho lưu trữ TanStack Router và mở một pull request có vẻ vô hại. Ẩn dụ bên trong là một payload độc hại khai thác các quy trình GitHub Actions được cấu hình với mẫu nguy hiểm pull_request_target. Mẫu này cho phép các quy trình thực thi với quyền nâng cao qua ranh giới tin cậy từ fork sang nhánh chính.

Bằng cách đầu độc bộ nhớ đệm GitHub Actions được chia sẻ, kẻ tấn công đảm bảo rằng các tác phẩm (artifacts) độc hại sẽ được khôi phục sau này trong các quy trình phát hành hợp pháp trên nhánh chính. Khi những người duy trì hợp nhất các pull request không liên quan vào production, bộ nhớ đệm đã bị compromise được tải vào quy trình phát hành, cho phép mã độc thực thi trong quá trình kiểm thử và phát hành các phiên bản gói độc hại lên npm bằng các token phát hành đáng tin cậy.

Mục tiêu và hành vi của mã độc

Mã độc được tiêm vào đặc biệt nguy hiểm vì nó tự động thực thi trong quá trình cài đặt gói thông qua các tập lệnh vòng đời (lifecycle scripts) của npm. Sau khi được cài đặt, nó thu thập thông tin xác thực đám mây từ AWS, GCP, token Kubernetes, dữ liệu xác thực GitHub, khóa SSH và các tệp cấu hình npm từ máy của nhà phát triển cũng như môi trường CI.

Hơn nữa, phần mềm độc hại còn có cơ chế tự lan truyền. Nó liệt kê các gói npm bổ sung được duy trì bởi nạn nhân và cố gắng phát hành lại chúng với cùng một payload độc hại, từ đó mở rộng phạm vi ảnh hưởng trong hệ sinh thái nguồn mở.

Phát hiện và khắc phục

Các nhà nghiên cứu bảo mật và người đóng góp bên ngoài đã phát hiện ra sự xâm nhập chỉ trong khoảng 20 phút sau khi các gói độc hại xuất hiện trên npm. Điều này cho phép TanStack nhanh chóng đánh dấu (deprecate) các phiên bản bị ảnh hưởng và phối hợp với bộ phận bảo mật npm để loại bỏ các tệp nén (tarballs) bị hại khỏi sổ đăng ký. TanStack thừa nhận rằng nếu mã độc không vô tình làm hỏng các bài kiểm tra trong quá trình phát hành, vụ tấn công này có thể đã không bị phát hiện trong thời gian dài.

Để đối phó và ngăn chặn sự việc tái diễn, TanStack đã triển khai các biện pháp bảo mật nghiêm ngặt, bao gồm loại bỏ các mẫu quy trình không an toàn, xóa sạch bộ nhớ đệm, ghim (pin) GitHub Actions vào các SHA bất biến, thêm xác thực chủ sở hữu kho lưu trữ và kiểm soát chặt chẽ hơn các quy trình phát hành.

Bài học cho cộng đồng kỹ thuật

Vụ việc của TanStack làm nổi bật sự leo thang trong các cuộc tấn công nhắm vào hệ sinh thái các gói nguồn mở và hạ tầng CI/CD. Các nhà nghiên cứu bảo mật ngày càng cảnh báo rằng quy trình xây dựng (build pipeline) đang trở thành bề mặt tấn công chính trong phát triển phần mềm hiện đại. Trong khi các sáng kiến như xác minh nguồn gốc SLSA, ký Sigstore và kiểm toán phụ thuộc đang được thúc đẩy, sự kiện này cho thấy ngay cả các dự án nguồn mở trưởng thành vẫn dễ bị tổn thương khi các hệ thống tự động hóa, sổ đăng ký gói và mối quan hệ tin cậy giao thoa một cách bất ngờ.

Đối với các nhà phát triển và doanh nghiệp, sự việc này là một lời nhắc nhở rằng bảo mật nguồn mở ngày càng phụ thuộc không chỉ vào mã nguồn được viết ra mà còn vào cách phần mềm được xây dựng, phát hành và tin cậy trong toàn bộ quy trình giao hàng.

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