Rủi ro bảo mật nghiêm trọng từ gói npm giả mạo

Rủi ro bảo mật nghiêm trọng từ gói npm giả mạo

Rủi ro bảo mật trong hệ sinh thái npm tiếp tục bị khai thác qua một gói giả mạo nhắm vào nhà phát triển TanStack. Gói unscoped “tanstack” đã đánh lừa người dùng thay vì cài đặt các gói hợp lệ “@tanstack/*”, sau đó âm thầm thu thập file môi trường và gửi ra máy chủ do kẻ tấn công kiểm soát.

Gói npm giả mạo và cơ chế xâm nhập

Gói độc hại được phát hành trên npm với tên “tanstack”, một kiểu brand squat nhắm vào danh tiếng của thư viện chính thức. Khi lập trình viên cài đặt nhầm, package thực thi các script ẩn ở giai đoạn postinstall.

Điểm nguy hiểm của tin bảo mật mới nhất này là hành vi đánh cắp diễn ra ngay trong quá trình cài đặt, không cần thêm tương tác từ người dùng. Điều đó khiến hệ thống bị xâm nhập ở mức chuỗi cung ứng phần mềm, trước cả khi ứng dụng được chạy.

Các phiên bản bị ảnh hưởng

  • 2.0.4
  • 2.0.5
  • 2.0.6
  • 2.0.7

Bốn phiên bản này được phát hành trong vòng 27 phút và cùng sử dụng một hạ tầng rò rỉ dữ liệu, cho thấy đây là một chuỗi hành vi có chủ đích.

Chuỗi tấn công và đánh cắp dữ liệu

Ngay sau khi chạy npm install, script postinstall quét thư mục gốc của dự án để tìm các file biến môi trường như .env, .env.local.env.production. Nội dung được gom lại thành JSON rồi gửi qua HTTPS POST đến một endpoint trên dịch vụ webhook Svix.

Các file này thường chứa API keys, database passwordsauthentication tokens. Nếu file tồn tại tại thời điểm cài đặt, cần xem như đã bị rò rỉ dữ liệu nhạy cảm.

Trong phân tích kỹ thuật, hàm thu thập được đặt tên collectEnvFiles(), còn hành vi gửi dữ liệu bị ngụy trang dưới tên sendReadme() để trông giống telemetry hợp lệ. Đây là một kỹ thuật che giấu phổ biến nhằm làm giảm khả năng phát hiện xâm nhập.

Hành vi theo từng phiên bản

  • 2.0.4 – 2.0.7: Tự động thu thập file .env khi cài đặt.
  • 2.0.6: Quét rộng hơn trên toàn bộ thư mục cài đặt để tìm mọi biến thể .env.*.
  • 2.0.7: Loại bỏ các lệnh log console, làm việc phát hiện tấn công khó hơn.

Toàn bộ dữ liệu bị chuyển đến một nguồn ingest công khai, trong đó chỉ tài khoản đã xác thực mới đọc được nội dung đầu vào. Cơ chế này khiến việc kiểm tra phần bị lấy cắp trở nên khó khăn hơn cho đội ngũ an ninh mạng.

Phân tích kỹ thuật của cảnh báo CVE theo chuỗi cung ứng

Hiện vụ việc không gắn với một CVE cụ thể, nhưng mức độ tác động tương đương một lỗ hổng CVE trong quy trình quản lý dependency. Trên thực tế, đây là nguy cơ bảo mật thuộc nhóm supply chain compromise, có thể dẫn đến đánh cắp dữ liệu từ môi trường phát triển, CI/CD và container build.

Nếu tổ chức đang theo dõi theo hướng cảnh báo CVE hoặc lỗ hổng CVE, cần đưa package này vào danh sách kiểm tra cùng với các package lock, registry policy và outbound monitoring. Tham chiếu thêm tại NVD – National Vulnerability Database.

Ảnh hưởng hệ thống

  • Rò rỉ thông tin xác thực trong file .env.
  • Đánh cắp dữ liệu từ máy nhà phát triển và môi trường CI/CD.
  • Hệ thống bị tấn công ngay trong bước cài đặt dependency.
  • Tăng nguy cơ xâm nhập trái phép vào các dịch vụ phía sau nếu token bị lộ.

Vì package chạy tự động khi cài đặt, mọi thư mục dự án có chứa file cấu hình nhạy cảm đều cần được xem là đã bị ảnh hưởng.

IOC và dấu hiệu nhận diện

IOC dưới đây được trích xuất trực tiếp từ phân tích:

  • Package độc hại: tanstack
  • Package hợp lệ để đối chiếu: @tanstack/*
  • Phiên bản độc hại: 2.0.4, 2.0.5, 2.0.6, 2.0.7
  • Hành vi: postinstall script
  • Tên hàm: collectEnvFiles(), sendReadme()
  • Đích rò rỉ: api.svix.com
  • Svix source ID: src_3387PLMB2uhXOBe3Q8sHu
  • Loại file nhắm tới: .env, .env.local, .env.production, .env.*

CLI và kiểm tra dấu vết cài đặt

Đội ngũ vận hành có thể rà soát dependency lock để tìm tham chiếu tới package unscoped tanstack. Các file cần kiểm tra gồm package.json, package-lock.jsonyarn.lock.

grep -RIn "\btanstack\b" package.json package-lock.json yarn.lock

Nếu cần kiểm tra nhanh các file môi trường trong workspace trước khi build, có thể dùng:

find . -type f \( -name ".env" -o -name ".env.*" \)

Để xác định các kết nối bất thường tới hạ tầng rò rỉ trong pipeline, giám sát outbound traffic đến api.svix.com từ máy nhà phát triển, CI/CD và môi trường build container.

Biện pháp xử lý và update vá lỗi

Các hệ thống đã cài 2.0.4 đến 2.0.7 cần gỡ package ngay lập tức và xoay vòng toàn bộ secrets liên quan. Nếu file .env đã từng tồn tại trong thư mục dự án tại thời điểm cài đặt, phải coi là đã bị rò rỉ dữ liệu.

Ngoài việc cập nhật bản vá cho dependency, cần thêm unscoped tanstack vào deny list của registry nội bộ. Tất cả dự án nên chỉ cài đặt theo định dạng chính thức @tanstack/* để tránh rủi ro từ package giả mạo.

Trong bối cảnh mối đe dọa mạng dạng supply chain, việc kiểm tra lockfile, policy registry và luồng mạng ra ngoài là bắt buộc để giảm nguy cơ bảo mật cho môi trường phát triển.