跳到主内容
快讯直播
AI智模界
AI 词典

符号链接攻击:一个软链接,把智能体引到宿主机

一句话定义:符号链接攻击(Symlink Attack)指有人在程序能访问的目录里放一个符号链接(软链接,symbolic link),让程序以为自己在读写某个普通文件,实际读写的却是链接指向的另一个路径——在 AI 沙箱里,通常是沙箱之外的宿主机敏感文件。

它为什么能得手

软链接本身并不包含数据,它只是一个特殊文件,内容是一行路径字符串;内核打开它时会继续解析,直到找到真正的文件。于是问题就出现了:沙箱的权限检查往往在解析之前进行,程序实际读写却发生在解析之后。

打个比方:沙箱是一间给访客划定的房间,门卫只负责确认你从“房间门”进来,却不检查你手里那张纸条。纸条上写着“真正的东西在主卧衣柜里”,你一照做,门卫就拦不住了。检查的是字符串 /workspace/config.yaml,落到磁盘上却是 /home/user/.ssh/id_rsa。

在智能体场景里,这个风险被放大。编码智能体的工作区常由宿主机的某个目录以 bind mount(绑定挂载)方式挂进容器;智能体又被鼓励“自主探索文件系统”“读一下配置再改”。此时:

  • 工作区里若有一个指向私钥、云凭证文件的软链接,智能体一次“读配置”就把密钥读进了上下文,可能还会写进日志或提交记录;
  • 若有一个指向 ~/.bashrc、~/.ssh/authorized_keys 的软链接,智能体一次“写笔记”就等于在宿主机上植入持久化后门;
  • 要是连容器运行时套接字(如 docker socket)也被挂进来,那么这基本等于把宿主机的最高权限交了出去。

和相邻概念的区别

名称越界发生在典型手法关键点
符号链接攻击文件系统里的链接放一个软链接,等程序跟随检查对象与实际对象不是同一个
目录穿越(Path Traversal)请求参数里的路径构造 ../ 相对路径路径字符串本身就超出边界
TOCTOU(检查与使用时间差)检查与使用之间的时间窗口检查通过后把文件换成软链接竞争条件让软链接攻击更难防御
硬链接(Hard Link)同一文件的多个名字需要相同文件系统与权限多数系统有保护,软链接限制少得多

注意 TOCTOU 与软链接常常被组合使用:先让你检查通过,再在你动手前把文件换成链接。

对从业者的实际意义

如果你在写带文件工具的智能体,就不要只对路径做字符串前缀校验,而应先解析真实路径(realpath),再确认它仍在沙箱根目录内;在 Linux 上还可以用 openat2 的 RESOLVE_BENEATH 约束,或以 O_NOFOLLOW 打开文件;部分系统也支持以 nosymfollow 方式挂载,具体以官方文档为准。

如果你在搭沙箱,就不要把宿主机家目录整个挂进去,不要挂容器套接字,尽量只读挂载,用非特权用户运行,并在打包工作区快照时扫描并剥离符号链接;对高风险场景,用虚拟机级隔离而不是仅靠命名空间。

一句话:沙箱的边界不能只看路径长什么样,得看它最后落在哪。

AI 生成本文由 AI 基于公开信息自动生成,仅供参考。