Codex 从浏览器 shell 一路杀到 Samsung TV 的 root
今天 HN 上最让人心里发紧的一条,是 Calif.io 这篇长文:他们把 Codex 接到一台 Samsung Smart TV 上,给它一个浏览器 shell 和对应的固件源码,然后问它:能不能从浏览器权限一路杀到 root。结果 Codex 真的做到了。
这篇文章最震撼的地方,不是"AI 找到了一个漏洞",而是整个攻击链的完整闭环。Codex 没有现成的 exploit,没有现成的 bug 描述,它只有两个东西:一个能执行命令的 shell,和一个能审计的源码。然后它自己做了枚举、自己做了审计、自己做了验证、自己写了工具、自己调试、最后自己拿到了 root。
整个过程大概是这样:
首先,他们给 Codex 的初始条件很现实:浏览器应用里的 shell,权限很低,不能直接运行任意二进制文件(因为 Samsung Tizen 的 UEP 保护),不能访问 /proc/iomem(因为权限限制),但能访问一些设备节点,比如 /dev/ntksys 和 /dev/ntkhdma。
Codex 第一步是枚举。它列出所有能访问的设备节点,然后对照源码,发现 ntksys 和 ntkhdma 都来自 Novatek 的驱动栈。这两个设备节点在源码里有对应的驱动实现,而且最关键的是:它们的世界可写权限是由 udev 规则直接授予的。
接下来是审计。Codex 开始读 ntksys 的驱动源码,发现了一个关键接口:ST_SYS_MEM_INFO。这个接口接受用户空间传入的物理地址和大小,然后把那段物理内存映射到用户空间。也就是说,这是一个 physmap 原语:用户空间可以访问任意物理内存。
然后是关键的一步:验证。Codex 没有直接跳到 exploit,而是先写了一个小工具,通过 /dev/ntkhdma 获取一个已知的物理地址(DMA buffer),然后用 /dev/ntksys 把这个地址映射进来,再尝试读写。如果成功,就证明 physmap 原语真的可用。
验证通过后,Codex 开始想:有了任意物理内存访问,下一步做什么?它没有被告知要改 cred,也没有被告知要扫描内存,但它自己从源码和 shell 输出里推断出:可以扫描 RAM,找到浏览器进程的 cred 结构,然后把它里的 uid/gid 清零,从而拿到 root。
最后一步是执行。Codex 写了最终的 exploit,通过控制器编译成静态 ARM 二进制,传到 TV 上,用 memfd 包装器绕过 UEP 保护,然后执行。结果:浏览器 shell 变成了 root shell。
嗯,这个过程最让人不安的地方,不是某个环节有多复杂,而是整个链条的完整性。以前我们做漏洞利用,需要人工做枚举、人工做审计、人工写 PoC、人工调试、人工部署。现在这些环节都可以交给 AI,而且 AI 还能自己迭代、自己修正、自己从失败里学习。
文章里还有一个细节特别真实:Codex 不是一路顺风顺水。它有过错误,有过卡住,有过把 TV 搞死机的情况。作者得不断跟它对话,告诉它"别动那个地址""这个 IP 不是 TV 是控制器""你刚才做了什么先把 TV 搞挂了"。这说明现在的 AI 还远没有到"完全自主"的地步,但它已经足够强,强到只需要少量人类引导,就能完成以前需要专家花几天甚至几周的工作。
从安全角度看,这件事的启发很直接:
第一,硬件攻击面的复杂度不再是天然护城河。以前我们觉得嵌入式设备、IoT 设备、智能家电相对安全,因为它们的环境复杂、文档稀缺、工具链不友好。但现在 AI 可以读源码、可以写工具、可以调试、可以迭代,这些障碍正在被快速降低。
第二,漏洞利用的门槛正在下降。以前 exploit 需要深入理解内核、理解驱动、理解内存布局、理解权限模型。现在 AI 可以帮你做这些理解,你只需要给它一个起点,它就能自己走到终点。
第三,防御策略需要重新思考。如果 AI 可以这么高效地做攻击,那防御方也必须用 AI 做防御。而且防御方的 AI 必须比攻击方的 AI 更强,或者至少更快。这不再是"有没有 AI"的问题,而是"谁的 AI 更强"的问题。
从工程角度看,这篇文章最有价值的,其实是那个 harness 的设计。他们给 Codex 提供了一个真实可操作的环境:能执行命令的 shell、能编译代码的控制器、能传输文件的 HTTP 服务、能绕过 UEP 的 memfd 包装器、能审计的源码树。这个环境本身,可能比 Codex 的能力更值得研究。因为一旦这种 harness 变成通用工具,任何有源码、有 shell 的设备都可能成为 AI 的攻击目标。
所以今天真正值得记住的,不是"AI 能黑电视了",而是另一句更不舒服的话:当 AI 可以完成从枚举到 root 的完整攻击链时,硬件安全的假设就需要重新写了。以前我们觉得"复杂环境"是保护,现在它可能只是"AI 需要多花一点时间"。