
Preview pane trong editor AI không phải browser thật
Nghiên cứu EMBRACE công bố 29/10: năm lỗi, một ranh giới. Cách đối chiếu version đang cài và ba quy tắc dùng preview pane cho đến khi có bản vá.
Bạn mở một file HTML trong preview pane của Cursor hay VS Code để xem thử giao diện. Pane đó trông như browser, nên bạn mặc định nó cũng chặn như browser. Bài này chỉ ra chỗ giả định đó sai, và cách đối chiếu máy bạn với các phát hiện mới công bố.
EMBRACE tìm ra gì
Ngày 29/10/2026, Forever Security công bố nghiên cứu EMBRACE (researcher Gal Weizman): preview pane bên trong Cursor, Copilot, Codex, VS Code và Claude Desktop trông như browser và được tin như browser — niềm tin đó đặt sai chỗ. Tại thời điểm công bố, hai tool chưa có bản vá.
Tổng cộng năm vấn đề, nhưng chỉ một ranh giới: embedded preview bên trong một AI coding tool được tin tưởng như một browser độc lập. Không có CVE nào được cấp cho cả năm vấn đề.
Ba nhóm phát hiện, theo tool
Cursor — thực thi code qua composer bridge. Một trang web có thể kích hoạt thực thi code qua composer bridge: agent đọc hidden instructions trên trang, và demo của nhóm nghiên cứu mở Calculator thông qua một lần cài package độc hại. Hành vi này phụ thuộc model, không lặp lại chắc chắn mọi lần. Báo cáo ngày 10/9/2026, vá ngày 1/10/2026 — theo nhóm nghiên cứu thì không có advisory và không có hồi đáp.
GitHub Copilot — giả mạo address bar. Ở version 1.1.27, một trang có thể tự xưng là github.com/login trên một form giả. Phát hiện ngày 26/9/2026, sửa trong bản 1.1.29 ngày 13/10/2026 — sửa độc lập, trước khi Forever Security gửi báo cáo.
Codex, VS Code và Claude Desktop — đọc vượt ra ngoài thư mục project. Một file HTML cục bộ có thể đọc vượt ra ngoài thư mục project. VS Code và Claude Desktop có giới hạn trang, nhưng không giới hạn web worker mà trang đó khởi tạo; Codex thì không kiểm tra thư mục gì cả. Nhóm nghiên cứu demo việc đọc được SSH keys, file .env và npm tokens.
Vì sao ranh giới này vỡ
Một browser độc lập áp các quy tắc về origin và file access: một trang từ origin này không tự do đọc file trên ổ đĩa của bạn, và một file cục bộ bị giới hạn trong thư mục của chính nó. Embedded preview thì thừa hưởng niềm tin mà editor dành cho workspace — một loại niềm tin hoàn toàn khác.
Hình dạng của lỗi worker-escape, nói bằng lời: bản thân trang bị giới hạn trong thư mục, nhưng web worker mà trang đó khởi tạo thì không bị giới hạn theo cách tương tự (VS Code và Claude Desktop). Giới hạn dừng ở trang mà không dừng ở thứ trang đó khởi tạo được thì không phải là giới hạn của ranh giới.
Đây cũng chính là lý do vấn đề này đáng để bạn dừng lại kiểm tra. Máy một developer chứa production credentials, cloud tokens, SSH keys, source code và VPN access — một công cụ bị compromise là đủ để lộ tất cả.
Bước 1: ghi lại version đang cài
Mở màn hình About của từng tool và ghi ra version đang cài. Đối chiếu với các mốc sau: Cursor vá ngày 1/10/2026; GitHub Copilot sửa trong 1.1.29 ngày 13/10/2026; Codex và VS Code chưa vá tính đến 29/10/2026.
Claude Desktop là trường hợp cần nói cho đúng: Forever Security không còn liệt nó trong nhóm lỗi đang mở, nhưng không công bố version vá hay ngày vá nào. Vậy nên không gọi nó là đã vá, cũng không gọi là chưa vá — bạn tự đối chiếu release notes của hãng.
Nếu version của bạn cũ hơn mốc vá, cập nhật trước khi làm bất cứ việc gì khác.
Bước 2: kiểm tra workspace trust
Với từng tool, mở phần workspace-trust: giữ các thư mục không tin cậy ở Restricted Mode, và rà lại danh sách thư mục đã trusted, bỏ đi những gì bạn không nhận ra hoặc không còn tin.
Đáng chú ý là đây chính là setting mà Microsoft và Anthropic viện dẫn khi từ chối các báo cáo — Anthropic trước đó đã chấp nhận một báo cáo cùng loại của Noma Security ngày 24/7/2026. OpenAI không hồi đáp báo cáo ngày 27/7 theo nhóm nghiên cứu, nhưng nói với The Register rằng họ đã biết và đang làm bản vá. Setting này chỉ giúp được nếu thư mục không tin cậy thực sự ở trạng thái restricted.
Bước 3: tự test bằng canary
Phương pháp kiểm chứng mà bộ kit đi kèm nghiên cứu dùng rất đơn giản và bạn có thể tự dựng: tạo một file canary trong thư mục temp, viết một trang probe vô hại, rồi mở trang probe đó trong preview pane của tool cần audit — không phải trong browser thường — và xem trang có đọc được file canary ngoài thư mục project hay không. Đọc được là FAIL, không đọc được là PASS.
Hai giới hạn phải nhớ. Thứ nhất, bước mở trong preview pane là thủ công, không script nào thay được. Thứ hai, một kết quả PASS chỉ chứng minh một ranh giới trên một version, không phải an toàn nói chung — và PASS trên tool này không phải PASS cho tool khác, nên audit từng tool riêng.
Ba quy tắc dùng cho đến khi có bản vá
- Không mở HTML lạ trong embedded preview. Phát hiện ở Codex, VS Code và Claude Desktop là một file HTML cục bộ đọc vượt thư mục project. HTML không tin được thì mở trong browser độc lập, hoặc không mở.
- Không bao giờ nhập credentials vào form trong preview. Phát hiện ở Copilot là giả mạo address bar. Thấy preview hiện form login thì dừng — credentials chỉ nhập trong browser thật, trên origin thật.
- Coi instructions tìm thấy trên trang web là dữ liệu, không phải mệnh lệnh. Phát hiện ở Cursor là agent đọc hidden instructions trên trang rồi hành động theo. Agent không nên làm theo khi chưa có người quyết định là bạn muốn thế.
Việc tiếp theo
Mọi trạng thái vá ở trên là tính đến 29/10/2026 và cần đối chiếu lại với release notes của hãng trước khi bạn dựa vào chúng — đây là loại thông tin thay đổi theo tuần.
Việc đáng làm ngay là Bước 1: ghi version của năm tool bạn đang dùng vào một file, kèm ngày. Lần sau có nghiên cứu mới, bạn có sẵn mốc để so, thay vì phải dựng lại từ đầu.
Không spam, hủy đăng ký bất kỳ lúc nào.
Bài viết liên quan

Extension Claude Code độc hại: kiểm tra máy bạn ngay
31 thg 10, 2026
AGENTS.md hay CLAUDE.md: agent của bạn đọc file nào?
30 thg 10, 2026