pwn.ai 系列的第二篇,接上一集的「宿主内存读写原语」,这次完成从 microVM 内 guest 到宿主 root 的完整链条(CVE-2026-99999)。路径分五段:先在 guest 页里放一个可识别的 nonce,枚举候选 EPT 根并走页表,找出能把 guest 物理地址翻译到含 nonce 那一页的根,得到 guest_page_hpa;再反向搜宿主页表,找映射了这块物理页的进程,反推出它的宿主 PGD;接着在那套地址空间里定位 Firecracker 的 ELF 镜像、用 write(2) 包装函数的字节签名确认,并恢复 ASLR 的加载基址;然后在宿主内存里找 pt_regs 帧,要求系统调用是进行中的 ioctl、请求参数是 KVM_RUN、指令指针落在 Firecracker 的 ioctl 返回点、栈指针能通过宿主 PGD 翻译、段选择子与标志位合法、调用者返回地址在代码段内,一次筛到唯一候选;最后改写这个帧:RIP 指向 write 包装、RDI=2、RSI 指向栈上的标记串、RDX=8,RSP 指向临时返回序列。返回序列先放 xor eax,eax; ret 把 KVM_RUN 期望的 0 返回值补上,再回到原 ioctl 继续点。guest 往串口写一个字节触发出 KVM,Firecracker 就如实在自己的 stderr 打印出 N8V23M2,随后三个栈字被复原、进程存活、SSH 仍通。目标环境是 Firecracker v1.16.1 加宿主内核 7.0.0-1011-aws,且没有启用 jailer,因此这次受控调用以 root 执行。