Claude Code 在系统提示词中暗藏“隐写”标记
安全研究人员最近在分析 Anthropic 的命令行 AI 助手 Claude Code (v2.1.196) 时,发现其内部包含一段特殊的代码。当用户使用非官方 API 接口或特定时区时,它会暗中修改发送给大模型的系统提示词(System Prompt),通过微小的文本变化为请求打上“隐形水印”。
隐写机制是如何工作的?
这种机制主要通过修改系统提示词中“今天日期”的文本格式来实现,极其隐蔽:
1. 时区检测:如果用户的系统时区为
2. 自定义域名检测:如果用户设置了环境变量
针对的目标
代码中包含一个经过混淆处理(Base64 编码并进行 XOR 解密)的关键词和域名列表。名单中包括了多家主流中国科技公司(如字节跳动、百度、阿里、腾讯等)、AI 实验室(如 DeepSeek、月之暗面、智谱 AI、零一万物等)以及大量第三方 API 代理和中转服务域名。
为什么令人担忧?
Anthropic 这么做很可能是为了在后端识别非官方的 API 转售商、未授权的网关,或是防止模型被用于“蒸馏”训练。
虽然防范滥用合情合理,但这种“隐写”的实现方式引发了安全社区的质疑。作为一个拥有本地文件系统读写、执行 Shell 命令、甚至管理 Git 仓库等极高权限的开发者工具,建立信任至关重要。研究人员认为,如果工具需要检测自定义网关或进行合规审计,应该通过公开的遥测(Telemetry)字段和透明的政策来告知用户,而不是在发送的数据包中暗中植入隐形标记。
对于直接使用 Anthropic 官方 API 且未修改 Base URL 的普通用户,该机制不会被触发。
https://thereallo.dev/blog/claude-code-prompt-steganography
#网络安全 #AI安全 #隐私保护 #Claude #逆向工程
安全研究人员最近在分析 Anthropic 的命令行 AI 助手 Claude Code (v2.1.196) 时,发现其内部包含一段特殊的代码。当用户使用非官方 API 接口或特定时区时,它会暗中修改发送给大模型的系统提示词(System Prompt),通过微小的文本变化为请求打上“隐形水印”。
隐写机制是如何工作的?
这种机制主要通过修改系统提示词中“今天日期”的文本格式来实现,极其隐蔽:
1. 时区检测:如果用户的系统时区为
Asia/Shanghai(上海)或 Asia/Urumqi(乌鲁木齐),提示词中的日期分隔符会从连字符 - 隐悄悄替换为斜杠 /(例如:2026-06-30 变成 2026/06/30)。2. 自定义域名检测:如果用户设置了环境变量
ANTHROPIC_BASE_URL(通常用于使用自定义网关、本地代理或中转 API),Claude Code 会检测该域名,并微调 "Today's" 中单引号 ' 的 Unicode 字符(例如替换为 ’、ʻ 或 ʼ)。在大多数等宽字体中,这些字符的视觉差异极小,用户几乎无法察觉。针对的目标
代码中包含一个经过混淆处理(Base64 编码并进行 XOR 解密)的关键词和域名列表。名单中包括了多家主流中国科技公司(如字节跳动、百度、阿里、腾讯等)、AI 实验室(如 DeepSeek、月之暗面、智谱 AI、零一万物等)以及大量第三方 API 代理和中转服务域名。
为什么令人担忧?
Anthropic 这么做很可能是为了在后端识别非官方的 API 转售商、未授权的网关,或是防止模型被用于“蒸馏”训练。
虽然防范滥用合情合理,但这种“隐写”的实现方式引发了安全社区的质疑。作为一个拥有本地文件系统读写、执行 Shell 命令、甚至管理 Git 仓库等极高权限的开发者工具,建立信任至关重要。研究人员认为,如果工具需要检测自定义网关或进行合规审计,应该通过公开的遥测(Telemetry)字段和透明的政策来告知用户,而不是在发送的数据包中暗中植入隐形标记。
对于直接使用 Anthropic 官方 API 且未修改 Base URL 的普通用户,该机制不会被触发。
https://thereallo.dev/blog/claude-code-prompt-steganography
#网络安全 #AI安全 #隐私保护 #Claude #逆向工程