实验环境
研究未直接提供漏洞或利用方法,而是为 Codex 提供可实际操作的环境。`KantS2` 是三星为这款电视型号的智能电视固件所使用的内部平台名称。实验设置包括浏览器切入点、控制主机、Shell 监听器、匹配的源代码版本、执行限制和 `memfd` 包装器。Codex 的操作循环是检查源代码和会话日志,通过控制主机和由 `tmux` 驱动的 shell 向电视发送命令,从日志中读取结果。
目标
最初提示目标宽泛,要在电视中找到漏洞将权限提升到 root,未指定具体方法。第二个提示缩小标准,要求对漏洞源代码交叉检查,确保漏洞存在于源代码中、设备上实际存在且能从浏览器 shell 访问,Codex 输出聚焦到具体候选漏洞。
已知信息
向 Codex 提供了如 `uid=5001(owner) gid=100(users)`、Linux 版本、设备节点等信息,这些信息为后续操作奠定基础,浏览器身份定义权限边界,内核版本缩小代码库范围,设备节点定义可访问接口,`/proc/cmdline` 为物理扫描提供内存布局提示。
漏洞发现
Codex 锁定一组对浏览器 shell 开放、可被任意用户写入的 `ntk*` 设备节点,关注该驱动程序家族是因为其在设备上已加载、可从浏览器 shell 访问且存在于发布的源代码树中,源代码树显示与联咏科技有关联,为后续操作指明方向。
限制条件
研究给 Codex 设定无法访问 `/proc/iomem` 的限制条件,`/proc/iomem` 通常用于推断物理内存布局,Codex 转向 `/proc/cmdline` 的启动参数重建主内存区域。
原语利用
将范围缩小到 `ntksys` 和 `ntkhdma` 后,Codex 审计 `KantS2` 源代码发现 `physmap` 原语,让用户空间能访问原始物理内存,攻击路径变为基于物理内存访问的数据提升攻击。
根本原因
一是 `ntksys` 被故意暴露给无特权的调用者,udev 规则赋予 `/dev/ntksys` 所有用户可写权限;二是用户空间控制物理基地址和大小,驱动程序接口围绕 `ST_SYS_MEM_INFO` 构建;三是 `SET_MEM_INFO` 只验证槽位,不验证物理范围;四是 `mmap` 直接重新映射所选的页帧号;五是 `ntkhdma` 通过泄露物理地址简化验证过程。
攻击链构建
Codex 分阶段构建证明链,先编写辅助工具获取 `ntkhdma` 的 DMA 缓冲区物理地址,再编写工具测试通过 `ntksys` 能否将该页面映射到用户空间并读写,证明无特权进程可读写物理页面。
漏洞利用
漏洞利用方法并非研究人员提供,研究人员未告诉 Codex 去修补 `cred` 等相关内容。