CVE-2026-120338 trong Prefab UI: sandbox AI có thể chạm tới máy chủ
CVE-2026-120338 cho thấy sandbox Generative UI của Prefab UI 0.14.0–0.20.2 có thể để mã Python chạm tới Deno và hệ điều hành máy chủ. Bản sửa là 0.21.0.

Một ứng dụng cho phép mô hình AI sinh giao diện thường phải chạy mã kết quả trong vùng cô lập. Với Prefab UI, ranh giới này có thể không giữ được nếu hệ thống còn ở bản 0.14.0 đến 0.20.2. CVE-2026-120338 được công bố ngày 01/11/2026, mô tả đường từ Python trong Pyodide sang API Deno có quyền đọc, ghi tệp và truy cập mạng của máy chủ.
Điểm yếu nằm ở cầu nối Pyodide và Deno
Pyodide là Python được biên dịch sang WebAssembly để chạy trong môi trường JavaScript. Prefab UI dùng Pyodide trong một tiến trình Deno để xử lý mã giao diện do người gọi cung cấp. Tuy nhiên, các bản chịu ảnh hưởng khởi động Deno với quyền --allow-read, --allow-write và --allow-net, đồng thời để API Deno xuất hiện trên đối tượng JavaScript toàn cục.
Mô-đun js của Pyodide có thể đi qua cầu nối này. Khi đó mã Python không còn bị giới hạn trong bài toán dựng giao diện: nó có thể đọc hoặc ghi tệp bằng quyền của tài khoản đang chạy dịch vụ. Nguồn cảnh báo còn nêu khả năng ghi tệp .pth vào môi trường Python để duy trì thực thi mã khi tiến trình khác khởi động.
| Hạng mục | Thông tin cần kiểm tra |
|---|---|
| Mã | CVE-2026-120338 |
| Mức độ | Critical 10.0 theo bản ghi CVE/GitHub chưa được GitHub rà soát |
| Bản ảnh hưởng | prefab-ui 0.14.0 đến trước 0.21.0 |
| Bản sửa | 0.21.0 |
| Điều kiện | Người gọi có thể gửi mã cho tính năng Generative UI |
| Khai thác thực tế | Chưa được nguồn xác nhận |
FastMCP làm tăng bề mặt như thế nào?
Đường gọi từ xa thường gặp là nhà cung cấp Generative UI của FastMCP đăng ký công cụ generate_prefab_ui, rồi chuyển tham số mã vào sandbox. MCP là giao thức để mô hình gọi công cụ. Nếu công cụ này được mở cho agent, người dùng hoặc dữ liệu không tin cậy, mã đầu vào có thể đi tới đúng điểm yếu.
Không phải mọi ứng dụng cài Prefab UI đều tự động bị khai thác. Rủi ro phụ thuộc việc tính năng Generative UI có bật hay không, ai gọi được công cụ, tiến trình chạy bằng tài khoản nào và máy chủ gắn những thư mục hay khóa truy cập gì. Dịch vụ chỉ chạy nội bộ vẫn cần kiểm tra vì prompt, dữ liệu RAG hoặc agent bị chi phối có thể tạo đầu vào nguy hiểm.
Bản 0.21.0 thay đổi điều gì?
Theo bản phát hành Prefab 0.21.0, runtime thu hồi quyền đọc, ghi và mạng của Deno trước khi nhận mã người dùng; tiến trình dùng --no-prompt để mã không thể xin cấp lại quyền. Truy cập mạng lúc khởi tạo cũng được giới hạn. Đây là thay đổi ranh giới quyền, không chỉ là bộ lọc chuỗi.
Checklist cho đội phát triển AI
- Kiểm kê
prefab-ui, Prefab và thành phần FastMCP trong image hoặc tệp khóa; xác định mọi bản từ 0.14.0 đến 0.20.2. - Nâng lên 0.21.0 hoặc mới hơn, dựng lại container từ đầu và xác nhận digest đã triển khai thay vì chỉ đổi tag.
- Tắt hoặc giới hạn
generate_prefab_uitrong thời gian chờ vá; chỉ cho dịch vụ tin cậy gọi qua lớp xác thực và phân quyền rõ ràng. - Chạy tiến trình bằng người dùng không đặc quyền, hệ thống tệp chỉ đọc và thư mục tạm riêng; không gắn socket Docker hoặc thư mục chứa khóa của máy chủ.
- Chặn mạng ra ngoài theo danh sách cần thiết và tách mạng của sandbox khỏi cơ sở dữ liệu, metadata cloud cùng cổng quản trị.
- Rà log gọi công cụ, tệp mới trong môi trường Python, kết nối mạng bất thường và thay đổi cấu hình từ khi tính năng được bật.
- Luân chuyển khóa truy cập nếu có bằng chứng sandbox từng đọc được thư mục bí mật; nâng phiên bản không thu hồi khóa đã lộ.
Cách kiểm thử sau khi nâng cấp
Đội phát triển nên có bài thử âm tính: mã trong sandbox không được đọc một tệp mồi ngoài thư mục cho phép, không ghi được vào môi trường Python và không gọi được địa chỉ mạng tùy ý. Chạy thử trong môi trường tách biệt, theo dõi syscall và kết nối mạng. Không kiểm thử bằng dữ liệu thật hoặc trên máy đang phục vụ khách hàng.
Nguồn tra cứu
Cài Prefab UI có nghĩa máy chủ chắc chắn bị xâm nhập không?
Không. Cần xác định phiên bản, tính năng Generative UI, người có thể gọi công cụ và quyền tiến trình. Nguồn chưa xác nhận khai thác thực tế trên mọi hệ thống.
Chỉ chạy Pyodide trong WebAssembly có đủ cô lập không?
Không nếu cầu nối JavaScript còn cho mã tiếp cận API Deno có quyền hệ điều hành. Cần nâng bản vá và hạn chế quyền tiến trình ở lớp máy chủ.
Sau khi nâng 0.21.0 có cần đổi khóa không?
Chỉ nâng cấp chưa đủ nếu có bằng chứng mã từng đọc được thư mục bí mật. Khi đó phải luân chuyển khóa, kiểm tra tệp bị thay đổi và rà kết nối mạng.
Hành động tiếp theo
Đội AI nên chuẩn bị phiên bản Prefab UI, cấu hình FastMCP, danh sách thư mục gắn vào container, quyền người dùng và chính sách mạng ra ngoài. Có thể gửi các thông tin này qua trang Cloud VPS để trao đổi phương án tách môi trường thử nghiệm; mục tiêu là thu hẹp quyền và kiểm chứng sandbox, không phải tăng cấu hình máy chủ.
Cần máy chủ cho workload này?
NOC thuemaychu.vn hỗ trợ chọn CPU, GPU và băng thông. PoC trong 24 giờ.
Bài viết liên quan
Bảo mậtCVE-2026-115889 trong Wasmtime: kiểm tra nguy cơ thoát sandbox
CVE-2026-115889 ảnh hưởng Wasmtime dùng Cranelift mặc định. Mô-đun WebAssembly được tạo đặc biệt có thể gây biên dịch sai và thoát khỏi vùng cô lập.
GPU / AINVIDIA NemoClaw: bộ khung mở để tự chủ AI agent
NVIDIA giới thiệu NemoClaw ngày 30/10/2026 như một bộ khung mở kết nối agent harness, Nemotron, NeMo và OpenShell. Bài viết phân tích giá trị, giới hạn và checklist thử nghiệm cho đội phát triển AI.
Bảo mậtBảo mật môi trường huấn luyện AI: 7 lớp kiểm soát đáng học
OpenAI công bố ngày 23/10/2026 cách hãng cô lập môi trường huấn luyện frontier: microVM, mạng hạn chế, giám sát liên tục và red-team bằng nhiều AI agent.