Lỗ hổng CVE trong Marimo Python notebook framework đang bị khai thác chủ động để thực hiện remote code execution trước xác thực, cho phép kẻ tấn công chiếm toàn quyền điều khiển hệ thống bị lộ ra Internet. Sự cố này được theo dõi với mã CVE-2026-39987 và ảnh hưởng trực tiếp đến cơ chế WebSocket terminal của Marimo.
CVE-2026-39987 Và Bề Mặt Tấn Công /terminal/ws
Lỗ hổng CVE này bắt nguồn từ việc thiếu kiểm tra xác thực tại endpoint WebSocket /terminal/ws. Khi kết nối được thiết lập, hệ thống sẽ khởi tạo một phiên pseudo-terminal (PTY) bằng pty.fork() mà không xác minh quyền truy cập của người dùng.
Theo ghi nhận kỹ thuật, CVE-2026-39987 ảnh hưởng đến các phiên bản Marimo ≤ 0.22.x. Khác với các endpoint được bảo vệ, /terminal/ws không thực thi kiểm soát truy cập ở cấp endpoint, tạo ra một khoảng trống bảo mật nghiêm trọng.
Cơ Chế Khai Thác
Kẻ tấn công chỉ cần kết nối tới WebSocket terminal là có thể mở shell tương tác trên máy chủ. Từ đó, họ có thể thực thi lệnh tùy ý với quyền hệ thống và biến một instance Marimo bị lộ thành một terminal truy cập từ xa.
Điểm nguy hiểm của lỗ hổng CVE này là việc bypass xác thực diễn ra ở lớp xử lý WebSocket, trong khi middleware xác thực tổng thể của ứng dụng vẫn tồn tại. Sự không nhất quán này tạo ra một cơ chế authentication bypass trực tiếp đến chức năng nhạy cảm.
Tham khảo thông tin bổ sung tại NVD – CVE-2026-39987.
Lệnh Khai Thác Và Hành Vi Sau Xâm Nhập
Đoạn mô tả khai thác cho thấy đây là một lỗ hổng CVE có thể bị tận dụng với mức độ đơn giản, không yêu cầu thông tin đăng nhập. Một ví dụ Python exploit cơ bản thường được dùng để kết nối tới endpoint WebSocket và mở phiên shell từ xa.
# Python exploit minh họa cho kết nối WebSocket terminal
import websocket
ws = websocket.create_connection("ws://TARGET:PORT/terminal/ws")
ws.send("id\n")
print(ws.recv())
ws.close()Sau khi khai thác thành công, kẻ tấn công có thể thực thi lệnh tùy ý, kiểm tra cấu hình hệ thống, đọc biến môi trường và truy cập vào dữ liệu nhạy cảm được lưu trong container hoặc hạ tầng đám mây.
Tác Động Hệ Thống
- Chiếm quyền điều khiển phiên shell trên host.
- Thực thi lệnh tùy ý với ngữ cảnh hệ thống.
- Truy cập API keys, cơ sở dữ liệu và dịch vụ nội bộ nếu bị gắn trong môi trường chạy.
- Mở rộng phạm vi sang hệ thống bị xâm nhập khác trong cùng hạ tầng.
Do Marimo thực thi mã Python thật và tương tác trực tiếp với hệ thống, việc khai thác lỗ hổng CVE này có thể dẫn đến compromise hoàn toàn ngay lập tức. Trong môi trường container hoặc cloud, một instance bị chiếm quyền có thể trở thành điểm xuất phát cho tấn công mạng rộng hơn.
Khai Thác Zero-Day Và Phân Phối NKAbuse Malware
Hoạt động khai thác hiện tại cho thấy lỗ hổng zero-day này đang bị vũ khí hóa để triển khai NKAbuse malware. Payload được lưu trữ trên các kho công khai trong môi trường chia sẻ công cụ AI và ứng dụng machine learning, khiến hành vi độc hại hòa lẫn với lưu lượng phát triển bình thường.
Đây là một ví dụ điển hình của khai thác zero-day trong môi trường AI/data science, nơi WebSocket endpoint có thể trở thành điểm vào để tải và chạy mã độc. Việc dùng hạ tầng hợp pháp để phân phối payload làm tăng độ khó cho quá trình phát hiện tấn công.
Chuỗi Tấn Công Quan Sát Được
- Truy cập endpoint /terminal/ws mà không cần xác thực.
- Mở shell tương tác trên host.
- Tải payload từ repository công khai.
- Triển khai NKAbuse malware trên hệ thống bị xâm nhập.
Trong bối cảnh này, lỗ hổng CVE không chỉ dừng ở mức RCE mà còn có thể dẫn đến cài cắm mã độc và duy trì hiện diện lâu dài trên hệ thống.
Nguyên Nhân Kỹ Thuật Và Điều Kiện Ảnh Hưởng
Nguyên nhân cốt lõi của lỗ hổng CVE nằm ở mô hình bảo mật WebSocket bị thiếu kiểm tra quyền ở cấp endpoint. Middleware xác thực chung không đủ để bảo vệ các luồng xử lý đặc thù nếu không có kiểm soát truy cập riêng.
Điều này khiến /terminal/ws trở thành một bề mặt tấn công nguy hiểm, đặc biệt trong các hệ thống triển khai Marimo như một giải pháp thay thế hiện đại cho notebook môi trường phát triển dữ liệu.
Những Điểm Cần Lưu Ý Khi Đánh Giá Rủi Ro
- Lỗ hổng CVE xuất hiện ở endpoint WebSocket có khả năng mở shell.
- Hệ thống thường chạy trong container hoặc cloud với quyền truy cập tài nguyên nội bộ.
- Một instance bị chiếm quyền có thể trở thành bàn đạp cho xâm nhập sâu hơn.
- Việc thiếu endpoint-level access control làm tăng nguy cơ bảo mật.
Biện Pháp Ứng Phó Và Điều Tra
Đội ngũ an ninh nên giả định khả năng bị xâm nhập nếu hệ thống Marimo đang chạy phiên bản bị ảnh hưởng bởi CVE-2026-39987. Việc kiểm tra cần tập trung vào dấu hiệu truy cập bất thường tới endpoint WebSocket, tiến trình shell lạ và các thay đổi không mong muốn trên host.
Với lỗ hổng CVE này, cần rà soát persistence mechanism, hoạt động lateral movement và các tiến trình liên quan tới việc tải payload từ nguồn ngoài. Nếu hạ tầng có nhiều instance Marimo, cần ưu tiên kiểm tra những máy chủ đang mở endpoint terminal ra ngoài mạng.
Hành Động Kỹ Thuật Khuyến Nghị
- Xác định phiên bản Marimo ≤ 0.22.x trong toàn bộ môi trường.
- Hạn chế hoặc vô hiệu hóa truy cập tới /terminal/ws nếu không cần thiết.
- Kiểm tra log WebSocket, tiến trình shell và kết nối outbound bất thường.
- So sánh IOC nội bộ với hành vi tải payload từ repository công khai.
- Ưu tiên cập nhật bản vá khi có phiên bản khắc phục từ nhà phát triển.
Trong môi trường AI và data science, chỉ một thiếu sót nhỏ trong xác thực WebSocket cũng có thể biến thành remote code execution trước xác thực. Với lỗ hổng CVE này, việc kiểm soát endpoint và xác thực ở cấp chức năng là yêu cầu bắt buộc để giảm rủi ro.










