{"id":"mb-20260829-bd0a21","account":"mubei","brand":"","title":"Docker 容器里的 root 权限，和整台物理服务器的生杀大权之间，其实只隔着一个内核漏洞","summary":"Docker 容器里的 root 权限，和整台物理服务器的生杀大权之间，其实只隔着一个内核漏洞","body":"Docker 容器里的 root 权限，和整台物理服务器的生杀大权之间，其实只隔着一个内核漏洞。\n很多人把容器当成独立安全的沙箱。\n只要镜像跑起来，各管各的端口，数据互不干扰。\n这完全是一场误解。\n无论你在宿主机上启动十个还是上百个容器，它们底层调用的，始终是同一个 Linux 内核。\n容器从来就没有自己的操作系统。\n所谓的容器隔离，不过是用 Linux 内核里的命名空间把进程的视线挡住，再用控制组限制一下内存和算力。\n这不是一堵水泥墙。\n这只是一副给进程戴上的墨镜。\n一个拥有三千多万行代码的现代操作系统内核，暴露着几百个系统调用接口。\n只要黑客在某一个容器里触发了哪怕一个内核提权漏洞，就能瞬间穿透这层障眼法，直接接管整台物理机。\n为什么过去十几年，整个软件工业明知道这个致命弱点，却依然对 Docker 趋之若鹜？\n因为另一条路走不通。\n想要真正的安全隔离，传统方案是跑完整的虚拟机。\n可传统的虚拟机监控器沉重得像恐龙。\n为了兼容几十年前的老系统，它必须在软件里仿真软驱控制器、IDE 硬盘接口、古老的总线和复杂的电源管理表。\n启动一台虚拟机要等几十秒，哪怕什么都不跑也要空耗几百兆内存。\n在容器的轻快与虚拟机的安全之间，工程师交了十几年的妥协税。\n直到云计算巨头被逼到了绝境。\n在多租户无服务器计算环境里，平台必须同时执行成千上万个来自陌生用户的不可信代码，毫秒级计费，绝不能发生跨租户逃逸。\n2018 年，AWS 彻底掀了桌子，开源了后来成为无服务器计算基石的微虚拟机引擎 Firecracker。\n2020 年，亚历山德鲁·阿加切与马克·布鲁克等人在学术顶会 NSDI 上公开了它的设计底牌。\n这台新机器的逻辑极度冷酷：把传统虚拟机里积累了三十年的历史包袱全部切除。\n不仿真任何古老硬件，只保留网卡、块存储、套接字与串口这 4 个最精简的现代虚拟设备。\n抛弃几十万行复杂的旧代码，用内存安全的 Rust 语言重写，直接调用 CPU 的硬件虚拟化指令集。\n攻击面被压缩了九成以上。\n换来的结果极其惊人：一台拥有独立内核与硬件级隔离的微虚拟机，启动时间被直接压到了 5 毫秒，内存底噪只占大约 5 兆。\n即使黑客在里面彻底攻陷了客户内核，也会被 CPU 的底层硬件环死死挡在门内。\n但这把手术刀在很长一段时间里，普通开发者根本用不上。\n启动一台裸微虚拟机，你需要自己编译未压缩的内核文件，手搓磁盘镜像，手动配置网络网桥与隔离沙盒。\n而全世界所有的生产力资产，都已经打包成了标准的 Docker 容器镜像。\n真正的基础设施进化，从来不是逼所有人抛弃旧习惯。\n像微虚拟机守护进程这类工具的出现，做的事情就是把这把锋利的手术刀装进现成的枪膛里。\n在后台自动把现成的容器镜像转化为微虚拟机的只读系统盘，半秒钟之内拉起硬件级隔离的微虚拟机，同时把网络与端口映射全自动化。\n开发者敲下的依然是熟悉的部署命令。\n但底下承载代码运行的世界，已经从一套脆弱的操作系统进程障眼法，跨越到了硬件级隔离的真内核。\n技术的真正分野，从来不在于写出多么花哨的新概念。\n在于谁能把最严苛的底层物理边界，无缝缝合进最平民化的开发体验里。","category":"科技","score":null,"translated_x_url":null,"translated_status_id":null,"published_at":"2026-08-29 05:39:09","created_at":"2026-08-29 05:39:09"}