Tin tức bảo mật mới nhất từ hệ sinh thái npm cho thấy một đợt phản ứng khẩn cấp trên toàn nền tảng sau khi tấn công chuỗi cung ứng đe dọa hàng nghìn nhà phát triển. Ngày 19/5, npm vô hiệu hóa toàn bộ granular access token có quyền ghi và bỏ qua xác thực hai yếu tố, buộc các maintainer phải tạo lại thông tin xác thực và cập nhật toàn bộ quy trình tự động.
Mini Shai-Hulud Và Tác Động Lên Hệ Sinh Thái JavaScript
Động thái này được thực hiện trực tiếp để đối phó với chiến dịch có tên Mini Shai-Hulud, một mối đe dọa mạng đã âm thầm tác động lên hệ sinh thái JavaScript trong gần một tháng. Chiến dịch này tập trung vào việc đánh cắp token phát hành gói, sau đó phát tán các phiên bản độc hại qua tài khoản bị chiếm quyền.
Vụ việc kích hoạt reset hàng loạt xảy ra tối 18/5, khi tác nhân đe dọa chiếm được một tài khoản maintainer hợp lệ của npm có tên atool và đẩy 639 phiên bản gói độc hại trên 323 package trong một đợt tự động hóa duy nhất.
Phạm Vi Ảnh Hưởng Và Gói Bị Tác Động
Làn sóng này quét qua hệ sinh thái dữ liệu trực quan @antv và ảnh hưởng đến các package như echarts-for-react, vốn có khoảng 1,1 triệu lượt tải mỗi tuần, cùng với timeago.js, size-sensor và canvas-nest.js. Tốc độ và quy mô khiến gần như không có thời gian để phát hiện xâm nhập và phản ứng.
Các nhà nghiên cứu của Socket.dev cho biết trong báo cáo công khai tại Socket.dev, chiến dịch Mini Shai-Hulud đã hoạt động trong 3 tuần trước đợt bùng phát này. Trước đó, một sự cố liên quan tới 42 package TanStack trên npm vào ngày 11/5, bao gồm @tanstack/react-router với 12 triệu lượt tải mỗi tuần, cũng đã bị xâm nhập.
Lỗ Hổng Chuỗi Cung Ứng Trong Quy Trình Phát Hành
Socket ghi nhận tổng cộng 1.055 phiên bản bị xâm nhập trên 502 package thuộc npm, PyPI và Composer. Nhóm đứng sau chiến dịch được gán cho một threat actor có tên TeamPCP. Dù trọng tâm là đánh cắp thông tin xác thực, đây vẫn là một rủi ro bảo mật điển hình của chuỗi cung ứng phần mềm.
Chiến dịch cũng vượt ra ngoài kỳ vọng của nhiều nhà phát triển. GitHub cho biết kẻ tấn công đã trích xuất khoảng 3.800 repository nội bộ, với điểm xâm nhập được lần theo từ Nx Console, một tiện ích mở rộng VS Code có 2,2 triệu lượt cài đặt.
Kẻ tấn công đã đánh cắp thông tin xác thực từ một maintainer của Nx trong sự cố TanStack, sau đó sử dụng chúng để phát hành một bản build bị đầu độc của extension. Phiên bản này tồn tại trên Visual Studio Marketplace trong 18 phút trước khi bị gỡ, nhưng vẫn đủ để chuyển thông tin xác thực giúp kẻ tấn công xâm nhập GitHub.
Cơ Chế Hoạt Động Của Mini Shai-Hulud
Mini Shai-Hulud được xây dựng quanh một ý tưởng duy nhất: đánh cắp token mà nhà phát triển dùng để phát hành package, rồi đẩy phiên bản bị nhiễm vào mọi package mà nạn nhân quản lý. Đây là mô hình tấn công mạng tự nhân rộng, trong đó mỗi tài khoản bị xâm phạm trở thành bàn đạp cho lần lây nhiễm tiếp theo.
Worm này quét máy của nhà phát triển và môi trường CI để tìm npm credentials. Do các granular access token bỏ qua 2FA thường có thời hạn dài và được lưu trong secret store, chúng trở thành mục tiêu dễ bị khai thác.
Sau khi thu thập được token, mã độc tự động xuất bản các phiên bản độc hại. Điều này khiến một tài khoản bị chiếm quyền có thể trở thành launchpad cho các đợt lây nhiễm tiếp theo trong hệ sinh thái npm.
Chuỗi Khai Thác Và Bypass Trusted Publishing
Một số bước nguy hiểm nhất của chiến dịch không cần token bị đánh cắp. Trong sự cố TanStack, tác nhân tấn công sử dụng chuỗi khai thác gồm Pwn Request, GitHub Actions cache poisoning và trích xuất OIDC token theo thời gian thực từ bộ nhớ tiến trình của runner. Đây là ví dụ điển hình của remote code execution gián tiếp thông qua quy trình CI/CD bị tổn thương.
Vụ xâm nhập Bitwarden CLI ngày 23/4 đến từ việc trực tiếp lây nhiễm workflow publish-ci.yml của dự án. Cả hai cuộc tấn công đều vượt qua Trusted Publishing, đúng với điểm mà npm đang khuyến nghị làm tuyến phòng thủ chính cho hệ sinh thái rộng hơn.
Nếu cần đối chiếu thêm về các cơ chế liên quan tới supply chain và chuẩn phát hành an toàn, có thể tham khảo tài liệu từ NVD của NIST.
Staged Publishing Và Cập Nhật Bản Vá Về Quy Trình
Phản ứng đáng chú ý hơn của npm trước Mini Shai-Hulud là Staged Publishing, được đưa vào bản public preview khi GitHub hợp nhất lệnh npm stage vào CLI v11.15.0. Trong mô hình này, các bản phát hành từ CI sẽ đi qua một vùng staging, nơi maintainer phải xác nhận bằng bước MFA-verified trước khi bản phát hành tới tay người dùng.
Ngay cả khi kẻ tấn công đẩy được phiên bản độc hại bằng thông tin xác thực bị đánh cắp, release vẫn bị giữ lại ở cổng staging cho tới khi con người xem xét. Đây là thay đổi quan trọng trong bảo mật thông tin của quy trình xuất bản package.
Đối với các maintainer bị ảnh hưởng bởi đợt reset, cần tạo lại granular token mới và xoay vòng toàn bộ credential mà môi trường có thể đã chạm tới, gồm:
- GitHub tokens
- AWS, GCP và Azure credentials
- SSH keys
- Kubernetes tokens
- Vault tokens
- Stripe keys
- Tệp cấu hình AI như
.claude/settings.json
Biện Pháp CLI Liên Quan
Với các pipeline đã cập nhật theo hướng phát hành an toàn hơn, maintainer cần kiểm tra lại trạng thái publish và quy trình xác thực MFA trong CI/CD. Các thao tác cụ thể phụ thuộc vào workflow nội bộ, nhưng nguyên tắc cốt lõi là loại bỏ mọi luồng publish không có MFA và ưu tiên staging trước khi phát hành chính thức.
IOC Và Dấu Hiệu Xâm Nhập
Indicators of Compromise được đề cập trong nội dung gốc chỉ nêu phần khung, không cung cấp IP hay domain cụ thể. Vì vậy, không có IOC dạng địa chỉ để liệt kê. Cần lưu ý rằng các IP và domain trong tài liệu gốc được cố ý làm mờ để tránh tự động phân giải.
- IOC khả dụng: Không được liệt kê trong dữ liệu đầu vào.
- Dấu hiệu liên quan: Token bị vô hiệu hóa hàng loạt, package bị phát hành trái phép, workflow CI/CD bị chèn mã độc, extension bị phát hành độc hại.
Ý Nghĩa Với An Ninh Mạng Trong Hệ Sinh Thái npm
Đợt việc vô hiệu hóa token cho thấy một cảnh báo CVE theo nghĩa vận hành chuỗi cung ứng, dù nội dung không gắn với một CVE cụ thể hay CVSS chính thức. Điểm đáng chú ý là kẻ tấn công không chỉ nhắm vào package phổ biến mà còn khai thác trực tiếp credential và pipeline, biến các công cụ phát hành thành bề mặt tấn công.
Trong bối cảnh lỗ hổng CVE và các biến thể zero-day vulnerability ngày càng thường xuyên xuất hiện trong chuỗi cung ứng, việc ưu tiên cập nhật bản vá, xoay vòng secret và áp dụng Staged Publishing trở thành yêu cầu bắt buộc để giảm nguy cơ bảo mật cho toàn bộ quy trình phát hành.










