Tin tức bảo mật khẩn cấp: Nx Console lộ lỗ hổng CVE

Tin tức bảo mật khẩn cấp: Nx Console lộ lỗ hổng CVE

tin tức bảo mật về tiện ích Nx Console VS Code extension bị xâm phạm cho thấy một lỗ hổng CVE theo nghĩa vận hành chuỗi cung ứng phần mềm, dù nội dung gốc không nêu mã CVE cụ thể. Phiên bản độc hại 18.95.0 của gói nrwl.angular-console đã được phát hành lên Visual Studio Code Marketplace và âm thầm nhắm vào thông tin xác thực của nhà phát triển, token hạ tầng cloud và bí mật trong pipeline CI/CD.

Chuỗi cung ứng phần mềm bị lợi dụng trong Nx Console

Sự cố này là lần thứ hai hệ sinh thái Nx bị tấn công mạng theo kiểu supply chain trong vòng chưa đầy một năm. Tiện ích bị cài cắm đã tồn tại trong marketplace chỉ 11 phút, nhưng vẫn đủ thời gian để ảnh hưởng đến nhiều máy trạm phát triển.

Tham khảo nguồn phân tích gốc từ StepSecurity tại báo cáo điều tra Nx Console bị compromise.

Với hơn 2,2 triệu lượt cài đặt, tiện ích này xuất hiện thường xuyên trong môi trường phát triển chuyên nghiệp. Khi người dùng mở bất kỳ workspace nào, mã độc bên trong extension sẽ tự động tải và thực thi một payload đã bị làm rối kích thước 498 KB, được lấy từ một orphan commit ẩn trong kho nrwl/nx chính thức.

Cách thức chèn payload và phát tán

Chuỗi xâm nhập bắt đầu từ việc một GitHub personal access token của cộng tác viên bị đánh cắp trong một sự cố supply chain khác. Từ token này, đối tượng tấn công đẩy một orphan commit có mã tham chiếu 558b09d7 vào kho nrwl/nx lúc 03:18 UTC.

Commit này không có parent commit và không thể truy vết từ bất kỳ nhánh nào, khiến nó gần như vô hình với người không biết chính xác SHA. Nội dung kho bị thay thế chỉ còn hai tệp: package.json và một payload index.js đã bị obfuscate mạnh.

Đến 12:36 UTC, kẻ tấn công dùng thông tin xác thực đã chiếm được của VS Code Marketplace để phát hành extension độc hại. Khi extension được mở trong workspace, payload được tải và thực thi mà không hiển thị dấu hiệu bất thường nào cho người dùng.

Hành vi của payload và rủi ro bảo mật

Payload hoạt động như một credential stealer đa giai đoạn, không chỉ nhắm vào file cục bộ mà còn thu thập nhiều loại bí mật khác nhau. Theo báo cáo, nó có thể lấy:

  • GitHub tokens
  • npm credentials
  • AWS secrets
  • HashiCorp Vault tokens
  • Kubernetes configurations
  • 1Password vault items có thể truy cập qua command line

Đáng chú ý, mã độc chạy 6 collector classes song song để tối đa hóa lượng bí mật bị thu thập trong thời gian ngắn trước khi bị phát hiện. Đây là dạng rủi ro bảo mật đặc biệt nghiêm trọng vì nó tác động trực tiếp vào dữ liệu xác thực dùng cho hạ tầng và chuỗi CI/CD.

Ảnh hưởng trên Linux

Trên hệ thống Linux, payload còn kiểm tra khả năng passwordless sudo. Nếu thành công, nó chèn một rule vào sudoers để duy trì quyền root bền vững trên máy bị ảnh hưởng. Điều này làm tăng nguy cơ chiếm quyền điều khiển và mở rộng phạm vi xâm nhập sang các dịch vụ nội bộ khác.

Ảnh hưởng trên macOS

Trên macOS, mã độc cài một backdoor viết bằng Python tại ~/.local/share/kitty/cat.py và đăng ký dưới dạng LaunchAgent để tự chạy mỗi giờ. Backdoor này dùng GitHub Search API như một kênh command-and-control bí mật, liên tục polling lệnh do kẻ tấn công ký, với chu kỳ 60 phút.

Cách hoạt động này hòa lẫn vào lưu lượng phát triển bình thường, nên có thể tránh được một số cảnh báo từ firewall hoặc công cụ phát hiện xâm nhập.

Sigstore attestation và nguy cơ lan rộng

Điểm đáng lo ngại khác trong cảnh báo CVE dạng supply chain này là việc payload tận dụng logic Sigstore attestation. Nếu attacker có thể phát hành các gói npm downstream với provenance hợp lệ, các gói đó có thể vượt qua kiểm tra chữ ký tiêu chuẩn.

Điều này làm tăng nguy cơ lan rộng sang các gói khác đã bị chạm tới trong quá trình phát hành, kể cả ngoài máy phát triển bị ảnh hưởng trực tiếp trong cửa sổ 11 phút. Với các môi trường phụ thuộc vào xác minh provenance, đây là một dạng lỗ hổng zero-day về niềm tin chuỗi cung ứng, dù không có mã CVE cụ thể được công bố trong nội dung gốc.

Dấu hiệu xâm nhập và phạm vi tác động

Người dùng có Nx Console bật auto-update và mở workspace trong khoảng từ 12:36 đến 12:47 UTC ngày 18/05/2026 cần coi máy của mình là đã bị hệ thống bị xâm nhập. Trong kịch bản này, các bí mật có thể đã bị trích xuất ngay trong bộ nhớ tiến trình hoặc từ môi trường phát triển đang hoạt động.

Việc mở rộng ảnh hưởng không chỉ dừng ở máy trạm. Nếu token GitHub, npm hoặc khóa AWS bị lộ, kẻ tấn công có thể tiếp tục xâm nhập vào repository, pipeline CI/CD hoặc tài nguyên cloud liên quan.

Khuyến nghị xử lý và cập nhật bản vá

StepSecurity khuyến nghị cập nhật ngay lên 18.100.0 hoặc mới hơn. Đồng thời cần xóa toàn bộ artifact duy trì tồn tại, chấm dứt các tiến trình nền mồ côi và xoay vòng toàn bộ credential có thể truy cập từ máy bị ảnh hưởng.

  • GitHub tokens
  • npm tokens
  • SSH keys
  • AWS credentials
  • Secrets trong process memory

Việc cập nhật bản vá phải đi kèm rà soát lịch sử phát hành extension, kiểm tra tính toàn vẹn của package và xác minh mọi artifact phụ thuộc vào provenance trước khi đưa vào pipeline nội bộ. Đây là bước cần thiết để giảm nguy cơ bảo mật từ các tiện ích phát triển bị cài cắm.

IOC liên quan đến sự cố

  • Extension: nrwl.angular-console
  • Phiên bản độc hại: 18.95.0
  • Phiên bản khuyến nghị: 18.100.0 hoặc mới hơn
  • Orphan commit: 558b09d7
  • File backdoor trên macOS: ~/.local/share/kitty/cat.py
  • Thời điểm phát hành độc hại: 12:36 UTC
  • Thời điểm gỡ bỏ: 12:47 UTC
  • Cửa sổ phơi nhiễm: 11 phút

CLI và hành động kiểm tra nhanh

Nội dung gốc không cung cấp lệnh khai thác hay mã minh họa, nhưng có thể dùng các bước kiểm tra cơ bản sau để đối chiếu trạng thái extension và process nền trên máy phát triển.

code --list-extensions | grep -i nx
ps aux | grep -E 'cat.py|nx|index.js'
find ~/.local/share -path '*kitty/cat.py'

Trong môi trường quản trị, cần đối chiếu thêm log của IDE, lịch sử cập nhật marketplace và dấu hiệu kết nối bất thường tới các API hợp lệ nhưng bị lạm dụng làm kênh C2. Việc phát hiện sớm là yếu tố quyết định để hạn chế rò rỉ dữ liệu và ngăn extension độc hại tiếp tục lan truyền trong hệ sinh thái phát triển.