Bảo mật

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.

thuemaychu.vn
Minh họa mã do AI tạo vượt qua ranh giới sandbox để tiếp cận máy chủ

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.

Phạm vi công bố ngày 01/11/2026.
Hạng mụcThô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ưởngprefab-ui 0.14.0 đến trước 0.21.0
Bản sửa0.21.0
Điều kiệnNgườ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

  1. 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.
  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.
  3. Tắt hoặc giới hạn generate_prefab_ui trong 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.
  4. 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ủ.
  5. 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ị.
  6. 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.
  7. 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

Xem tất cả bài viết
GọiFBZaloSalesZaloOA