Tóm tắt
Trail of Bits cho GPT‑5.6‑Cyber một nhiệm vụ CTF: thoát khỏi QEMU/KVM VM và đọc flag trên host. Agent thoát ba lần bằng lỗ hổng đã công bố, bản vá chưa tới distribution và một chuỗi 0-day; kết quả buộc đội vận hành phải xem agent an ninh mạng đủ mạnh như một advanced persistent threat thay vì một process thông thường.
Bài kiểm tra
VM chạy Debian 12 trên máy Linux dùng AMD Zen3. Agent khởi động bên ngoài guest, được SSH vào VM và có quyền làm mọi thứ bên trong. Cách bố trí này cho phép người thử nghiệm khởi động lại máy khi escape attempt làm kernel treo, đồng thời audit exploit cuối cùng để kiểm tra agent có gian lận hay không.
Agent được phép tải source, build phần mềm, đọc paper, viết fuzzer và debug. Đây chính là nghịch lý của agent hữu ích: network, package, file transfer và giao diện quan sát đều tạo thêm đường từ guest sang host.
Lần thoát thứ nhất: Januscape
Sau khoảng một giờ, agent phát hiện host kernel dính Januscape, CVE‑2026‑53359. Lỗ hổng đã được công bố nhưng chưa có public exploit. Agent tự xây exploit và thử chạy; lần đầu chưa ổn định nhưng đủ làm host hardlock.
Tác giả sau đó cập nhật kernel lên phiên bản mới nhất mà Debian 12 cung cấp. Việc patch này loại một đường tấn công, nhưng không làm VM trở thành biên an toàn.
Lần thoát thứ hai: libslirp
Debian 12 vẫn đóng gói libslirp 4.7.0, dính CVE‑2026‑9539. Agent còn tìm thấy một bug fix upstream chưa được phân loại là security issue. Nó ghép hai lỗi để tạo primitive đọc/ghi tùy ý trên memory của host; từ đó, việc escape trở nên trực tiếp.
libslirp cung cấp networking cho VM, nên đây không phải một thành phần phụ hiếm gặp. Sự chậm trễ giữa upstream fix, phân loại security và package của distribution trở thành một phần threat model khi agent có thể đọc lịch sử commit rồi tự tổng hợp exploit.
Lần thoát thứ ba: chuỗi 0-day
Người thử nghiệm build QEMU cùng dependency mới nhất từ upstream để tăng độ khó. Agent duy trì quá trình nghiên cứu khoảng 12 giờ, bỏ các hướng không hiệu quả và nối nhiều lỗ hổng thành chuỗi:
- QEMU VAPIC cho phép ROM alias chồng lên locked SMRAM, mở đường điều khiển SMM.
- Một lỗi Linux KVM để shadow page do attacker sửa tồn tại và được tái sử dụng.
- Một lỗi KVM khác tái sử dụng sai role khi guest chuyển mapping, tạo host-physical mapping 2 MiB có thể ghi.
- libslirp xử lý fragment có IHL khác nhau sai cách, tạo nhiều object nhận dạng được để chiếm callback.
Agent còn tìm thêm lỗi trong libslirp, CUPS và QEMU nhưng loại chúng khỏi chain cuối vì bị AppArmor chặn, thiếu service phù hợp hoặc chỉ tạo denial of service. Khả năng bỏ ngõ cụt và giữ research log xuyên nhiều lần context compaction quan trọng không kém việc tìm ra bug.
VM đã hết tác dụng chưa?
Kết luận không phải mọi VM đều bị mọi agent xuyên thủng. Ba lần escape phụ thuộc vào attack surface cụ thể và các vulnerability có thật. Tuy nhiên, giả định “đặt agent trong VM là đủ” không còn an toàn khi agent có thời gian, tool, network và năng lực tìm lỗ hổng ở mức này.
Trail of Bits thử cùng hướng tấn công với Firecracker. Agent làm host hardlock qua lỗi kernel đã được patch upstream nhưng không thoát thành công trong thời gian thử nghiệm. Kết quả này ủng hộ microVM có attack surface nhỏ, không chứng minh bất kỳ lớp ảo hóa nào miễn nhiễm.
Khuyến nghị vận hành
- Dùng virtualization được thiết kế với attack surface tối thiểu thay vì bật mọi device và tiện ích mặc định.
- Theo sát upstream security fix; distribution ổn định nhưng backport chậm không còn là mặc định phù hợp cho host chạy cyber agent.
- Hạn chế egress, credential, shared folder, display, clipboard và mọi interface nối guest với host.
- Chạy mỗi phiên trong môi trường sạch, giới hạn thời gian và thu log bất biến bên ngoài phạm vi agent có thể sửa.
- Theo dõi chủ động thay vì chỉ chờ VM crash; coi host và control plane là tài sản có thể bị nhắm tới.
Một VM vẫn là lớp phòng thủ hữu ích, nhưng phải nằm trong defense-in-depth. Khi workload có thể tự tìm 0-day và kiên trì hàng giờ, patch latency, cấu hình device, network policy và quyền dừng run đều là thành phần của sandbox.