Tấn công Chuỗi Cung Ứng npm Nghiêm trọng: Đánh cắp Dữ liệu

Tấn công Chuỗi Cung Ứng npm Nghiêm trọng: Đánh cắp Dữ liệu
CLOUD SERVER
Vững hạ tầng • Chắc thành công
☁️
⚡ Hiệu năng cao
🛡️ Bảo mật
📈 Mở rộng dễ dàng
🕒 Hỗ trợ 24/7
TÌM HIỂU NGAY

Một tấn công chuỗi cung ứng nguy hiểm đã nhắm vào dự án AsyncAPI trên kho lưu trữ npm, đặt các nhà phát triển và hệ thống xây dựng tự động vào tình trạng rủi ro nghiêm trọng. Sự cố này nhấn mạnh tầm quan trọng của việc kiểm tra kỹ lưỡng các gói phần mềm và quy trình tự động hóa nhằm ngăn chặn các loại tấn công chuỗi cung ứng tương tự trong tương lai.

Phân tích Tấn công Chuỗi Cung Ứng AsyncAPI npm

Các kẻ tấn công đã tái xuất bản năm phiên bản gói trong khoảng chín mươi phút vào ngày 14 tháng 7 năm 2026. Mỗi phiên bản chứa một trình tải ẩn hoạt động ngay khi mã được nhập.

Cơ chế này khác biệt so với các phương pháp dựa vào script cài đặt thông thường mà nhiều đội đã chủ động chặn. Thiết kế này khiến một cài đặt an toàn phổ biến gọi là ignore-scripts không mang lại sự bảo vệ thực sự chống lại mối đe dọa.

Mã độc bắt đầu hoạt động khi bất kỳ ứng dụng hoặc công cụ xây dựng nào tải mô-đun bị nhiễm, bỏ qua các biện pháp bảo vệ thông thường. Điều này làm tăng rủi ro bảo mật do các cơ chế phòng thủ truyền thống không hiệu quả.

Mã độc Miasma Runtime và khả năng đánh cắp dữ liệu

Các nhà phân tích từ Microsoft đã xác định chiến dịch và truy vết cách một quy trình làm việc (workflow) GitHub Actions cấu hình yếu đã mở cửa cho kẻ tấn công. Theo báo cáo của Microsoft, giai đoạn thứ hai của cuộc tấn công triển khai một môi trường runtime mô-đun có tên Miasma.

Framework Miasma có khả năng giao tiếp với các máy chủ từ xa, duy trì sự hiện diện trên máy và giữ các mô-đun sẵn sàng để đánh cắp dữ liệu nhạy cảm. Do gói @asyncapi/specs được sử dụng rộng rãi bởi nhiều công cụ AsyncAPI khác, phạm vi ảnh hưởng của cuộc tấn công rất rộng.

Các mục tiêu bị ảnh hưởng bao gồm:

  • Máy tính xách tay của nhà phát triển (developer laptops).
  • Các đường ống CI/CD (CI pipelines).
  • Container và thậm chí một số dịch vụ sản xuất.

Bất kỳ ai đã giải quyết các phiên bản độc hại trong cửa sổ phơi nhiễm ngắn ngủi đều có thể đã chạy payload mà không nhận thấy điều gì bất thường. Hậu quả tổng thể là nghiêm trọng đối với các đội ngũ xử lý khóa đám mây, mã thông báo kiểm soát nguồn và bí mật nền tảng AI.

Mặc dù một số mô-đun đánh cắp dữ liệu đã bị tắt trong bản dựng này, nhưng mã đã có mặt và có thể được kích hoạt sau này thông qua các kênh duy trì quyền truy cập (persistence channels). Miasma runtime bao gồm mã truy cập thông tin xác thực rộng lớn, nhắm vào các bí mật mà nhà phát triển và hệ thống CI thường lưu giữ.

Các loại thông tin xác thực bị nhắm mục tiêu

Mã độc tìm kiếm hơn một trăm tên biến môi trường khác nhau, bao gồm các hệ thống kiểm soát nguồn, kho lưu trữ gói, các nhà cung cấp đám mây lớn, nền tảng container, trình quản lý bí mật và các dịch vụ AI phổ biến. Đây là một rủi ro bảo mật đáng báo động cho nhiều tổ chức.

Các mục tiêu chính bao gồm:

  • GITHUB_TOKENGITLAB_TOKEN cho lưu trữ mã.
  • NPM_TOKENNODE_AUTH_TOKEN cho việc xuất bản gói.
  • Các khóa AWS, Azure và Google Cloud.
  • Khóa API Anthropic và OpenAI.
  • Mã thông báo Docker và Kubernetes, mà nhiều pipeline lưu trữ trong các cài đặt môi trường thông thường.

Ngoài ra, trên ổ đĩa, framework này tìm kiếm các tệp quen thuộc như .npmrc, thông tin xác thực AWS, kubeconfig, khóa riêng SSH, mã thông báo Vault, .netrc, cấu hình Docker và JSON tài khoản dịch vụ Google.

Khi một mã thông báo GitHub được tìm thấy, nó có thể liệt kê các kho lưu trữ có thể truy cập và ngữ cảnh CI thông qua các API công khai. Cơ chế này tương tự như các đợt đánh cắp dữ liệu thông tin xác thực gói npm trước đây đã tấn công hệ sinh thái.

Trong mẫu được phân tích, các mô-đun thu thập thông tin vẫn ở trạng thái ngủ đông, nhưng logic đầy đủ đã được chuyển đi bên trong gói mã hóa. Các kênh duy trì và lệnh đã hoạt động, vì vậy một bản cập nhật từ xa sau này có thể kích hoạt các công tắc đó mà không cần phát hành gói mới.

Các mẫu tương tự đã xuất hiện trong một chiến dịch mã độc đánh cắp dữ liệu thông tin xác thực trước đó chống lại các công cụ phát triển phổ biến.

Quy trình xâm nhập và cơ chế lây nhiễm của tấn công chuỗi cung ứng

Sự xâm nhập bắt đầu bằng một yêu cầu kéo (pull request) độc hại chống lại kho lưu trữ asyncapi/generator. Một quy trình làm việc (workflow) bị cấu hình sai đã sử dụng pull_request_target và chạy mã không đáng tin cậy, làm lộ ra một mã thông báo bot đặc quyền. Đây là điểm yếu khai thác quan trọng trong tấn công chuỗi cung ứng này.

Sau đó, kẻ tấn công đã đẩy các commit độc hại và để đường dẫn xuất bản đáng tin cậy của dự án phát hành mã độc dưới một danh tính npm hợp lệ. Con đường này giống với các trường hợp lạm dụng workflow GitHub Actions khác, nơi các pipeline tự động trở thành phương tiện phân phối mã độc.

Các quy trình phát hành hợp pháp đã xuất bản các gói @asyncapi/generator 3.3.1, generator-components 0.7.1, generator-helpers 1.1.1 và hai phiên bản của @asyncapi/specs. Tất cả đều mang bằng chứng xuất xứ hợp lệ từ các commit nguồn không được ủy quyền, khiến việc phát hiện trở nên khó khăn và làm trầm trọng thêm rủi ro bảo mật.

Kích hoạt payload và kênh điều khiển

Khi một người dùng nhập bất kỳ gói nào trong số đó, trình tải sẽ tạo ra một tiến trình Node ẩn. Tiến trình con này đã tải về giai đoạn thứ hai được mã hóa từ IPFS, ghi tệp sync.js vào một thư mục NodeJS cụ thể của hệ điều hành và mở khóa Miasma runtime.

Các máy chủ điều khiển chính nằm tại một địa chỉ IP duy nhất trên các cổng 8080, 80818091, với khả năng khám phá dự phòng thông qua một số mạng phi tập trung. Thông tin chi tiết về báo cáo của Microsoft có thể được tìm thấy tại: Microsoft Security Blog.

Biện pháp giảm thiểu và khuyến nghị an ninh mạng

Microsoft đã kêu gọi các đội ngũ loại bỏ năm phiên bản độc hại, làm sạch bộ nhớ cache của npm và Yarn, đồng thời xoay vòng mọi bí mật có thể truy cập từ bất kỳ máy chủ nào đã nhập các gói này. Đây là những bước khẩn cấp để giảm thiểu rủi ro bảo mật.

Các chuyên gia an ninh mạng nên săn lùng tệp có tên sync.js dưới các thư mục giả dạng thư mục hỗ trợ NodeJS trên Windows, macOS và Linux. Điều này giúp phát hiện các dấu vết của mã độc Miasma trên hệ thống.

Các đội bảo mật cần ghim các phiên bản đã biết là an toàn, xây dựng lại từ các tệp khóa sạch (clean lockfiles) và chặn các định danh nội dung IPFS đã liệt kê tại chu vi mạng nếu IPFS không cần thiết cho hoạt động kinh doanh. Điều này giúp ngăn chặn việc tải xuống các thành phần độc hại, một yếu tố then chốt trong việc phòng ngừa các tấn công chuỗi cung ứng.

Cập nhật CLI của npm và xem xét phạm vi mã thông báo workflow có thể giảm thiểu khả năng lặp lại kiểu sự cố tấn công chuỗi cung ứng npm này. Sau khi làm sạch, hãy xây dựng lại các ảnh chia sẻ (shared images) và golden runner để bộ nhớ cache bị nhiễm không lặng lẽ quay trở lại.

Xác nhận rằng các hash bị xâm nhập đã bị loại bỏ khỏi kho lưu trữ artifact và theo dõi telemetry endpoint để tìm các tệp sync.js còn sót lại hoặc các tiến trình Node tách rời bất thường. Việc này là rất quan trọng để đảm bảo môi trường phát triển đã hoàn toàn sạch sẽ và an toàn.

Indicators of Compromise (IoCs)

Mặc dù các địa chỉ IP và tên miền cụ thể không được cung cấp công khai trong báo cáo gốc để tránh kích hoạt vô ý, nhưng các dấu hiệu nhận biết sự xâm nhập bao gồm:

  • Sự hiện diện của tệp sync.js trong các thư mục giả dạng thư mục hỗ trợ NodeJS trên Windows, macOS và Linux.
  • Các tiến trình Node ẩn hoặc tách rời bất thường chạy trên hệ thống.
  • Giao tiếp mạng ra bên ngoài với một địa chỉ IP duy nhất trên các cổng 8080, 8081, 8091, hoặc qua các mạng phi tập trung (IPFS).
  • Các phiên bản AsyncAPI bị nhiễm: @asyncapi/generator 3.3.1, generator-components 0.7.1, generator-helpers 1.1.1, và hai phiên bản của @asyncapi/specs.

Các thông tin IoC chi tiết hơn nên được sử dụng trong các nền tảng threat intelligence được kiểm soát như MISP, VirusTotal hoặc SIEM của bạn để phân tích và ứng phó hiệu quả hơn với tấn công chuỗi cung ứng này.