Administrator
Published on 2026-09-15 / 11 Visits
0
0

LLM 中转站安全审计:把 Prompt 路由当作数据供应链

应用里显示的模型名称,只说明客户端请求了哪种能力。真正决定数据边界的,是 Prompt 经过哪些服务、由谁运营,以及每一跳能够读取和修改什么。

这一区别在普通聊天里容易被忽略,在生产系统里却是准入条件。LLM 中转站会终止客户端的 TLS 连接,再向上游建立新连接。它因此能够看到应用层明文,包括系统提示词、文档内容、工具定义、工具参数和模型返回的结构化动作。生产团队需要审计的对象,是完整路由链,而不是界面上最后一个模型名称。

核心结论

  • 把每个 LLM 中转节点登记为数据供应链处理者,记录法律主体、上游端点、地区、子处理者和回退规则。
  • 分开管理保密性与完整性。零数据保留约束存储行为,却不能证明中转方没有改写响应。
  • 对敏感任务固定提供商、关闭静默回退、缩小凭证权限,并在本地给高影响动作设置确定性门禁。
  • 一次干净的探测只提供有限时点证据。生产准入还需要持续日志、撤销演练和退出方案。

模型名称不是数据路径

修改 SDK 的 base_url,就能让一个客户端通过统一接口调用许多模型。JSON 格式仍然合法,模型名仍然熟悉,但真实路径可能已经变成:

业务应用
  -> 中转站或经销商
  -> 二级聚合服务
  -> 托管提供商
  -> 模型端点
  -> 原路返回

只要某一跳终止并重新建立 TLS,它就处于明文处理路径。HTTPS 能证明客户端连接到了配置的中转站,无法替整条应用链证明响应语义保持不变。

因此要拆开两个问题:

  1. 保密性:谁能读取、记录、分类、转售或用于训练这次请求?
  2. 完整性:谁能在执行前修改请求、响应或工具调用?

这对 Agent 尤其重要。普通回答被改写,风险通常是误导人;run_command、数据库更新或签名参数被改写,风险会直接落到机器和账户上。模型内部的安全对齐无法覆盖发生在推理前后、位于中转层的修改。

先按证据强度读风险

风险已经有系统测量,但结论需要保持边界。

2026 年 4 月的论文 Your Agent Is Mine 检查了 28 个付费和 400 个免费中转服务。作者报告,1 个付费与 8 个免费服务出现恶意代码注入,2 个使用自适应触发,17 个访问了研究者控制的 AWS 金丝雀凭证,还有 1 个转走了研究者控制的以太坊钱包资产。研究者预先限制了钱包余额,链上损失低于 50 美元。

这项研究还用受控代理向四种 Agent 框架返回原生格式的改写工具调用。它证明了格式兼容性,不能直接等同于真实环境的端到端攻陷率,因为本地权限确认、沙箱和动作门禁仍可能阻止执行。论文里的防御效果也主要来自生成语料和控制实验,不能替代生产遥测。

另一项研究 Real Money, Fake Models 对影子 API 做了元数据、性能、行为和模型指纹检查。代表性样本表现出明显效用偏差,45.83% 的指纹测试出现身份验证失败。研究者没有后端真实记录,因此这些结果是模型身份不一致信号,而不是已经完成归因的法律证据。

可信组件也可能在采购后发生变化。Datadog Security Labs 报告,LiteLLM 的真实 PyPI 发行版本 1.82.7 和 1.82.8 在 2026 年 3 月 24 日包含恶意代码。这证明正规分发链中的网关组件同样需要版本固定、构建来源和更新响应,不能据此推断每个 LiteLLM 部署都暴露了流量。

Anthropic 的 2026 年 9 月威胁报告 提供了模型厂商视角。Anthropic 称,它观察到其他服务将用户请求静默转发给 Claude,其中一些请求包含企业数据、源代码和真实凭证。涉及具体行为方的判断属于 Anthropic 自己的高置信度威胁情报,文章在这里保留其厂商归因身份,等待独立材料进一步确认。

这些证据共同支持一个有限而足够行动的结论:中转站天然是明文处理者;商品化样本中已经测到恶意行为;部分影子 API 出现身份不一致;正规网关软件也可能被供应链攻击。因此生产系统应建立控制,但没有理由把所有聚合服务一概判定为恶意。

把路由画成供应链

只问用了哪个模型,会漏掉最重要的处理链。建议为每条生产路由维护以下清单:

对象 最小证据 缺失时的风险
客户端与 SDK 版本、端点配置、插件、本地日志 隐式重放、客户端存储或依赖漂移
中转运营方 法律主体、域名、子处理者、司法辖区 找不到可问责的数据处理者
路由策略 提供商白名单、回退规则、策略版本 模型或端点静默切换
转换层 压缩、缓存、护栏、服务端工具、格式转换 Prompt 或响应语义发生变化
凭证平面 密钥归属、权限、预算、有效期、上游账户 跨工作负载暴露和无法归属的消费
模型端点 实际提供商、版本、地区、保留政策 请求模型与服务端点不一致
返回路径 请求 ID、尝试记录、响应哈希、动作决策 事故发生后无法重建过程

审计单位应细化到端点。同一家模型提供商的默认政策、企业协议和第三方托管端点可能不同。插件、联网搜索、文件存储和可观测性导出还会增加新的处理者。

OpenRouter 的官方文档可以说明为什么配置本身就是证据。它的 Provider Routing 支持固定提供商顺序并关闭回退;Zero Data Retention 说明 ZDR 按端点判断,插件与工具采用各自政策,内存 Prompt 缓存仍符合其对零保留的定义。这些是运营方声明的控制和口径,独立保证需要另外收集。

建立最小路由证据合同

一条生产路由至少要对六类承诺留下证据,并为每类承诺定义失败动作。

合同字段 最小记录 失败时动作
路由身份 请求模型、实际提供商或端点、地区、尝试次数 端点不在批准集时拒绝请求
路由策略 白名单及策略版本或哈希 未知策略或静默回退时失败关闭
数据使用 保留、训练、缓存、滥用审查、子处理者 超出数据分级许可时阻断
内容转换 压缩、护栏、服务端工具、Schema 转换 出现未声明转换时升级审查
凭证范围 工作负载身份、额度、过期时间、上游账户 越权或超预算时停用密钥
审计关联 本地请求 ID、中转 ID、上游 ID、脱敏哈希 无法关联时隔离响应

部分路由平台已经能暴露这些字段。OpenRouter 的可选 Router Metadata 可以返回请求模型、选中端点、策略、回退尝试和关键处理阶段;它的 Guardrails 可以限制模型与提供商、要求 ZDR、控制预算并处理敏感数据。

这些记录应同步进入团队自己的脱敏遥测。中转平台里的控制台适合日常运维,独立保存的审计记录则用于平台本身成为调查对象时恢复事实。

两个常见字段容易被过度解读:

  • ZDR 约束处理后的保留和训练。中转服务在请求时仍然处理明文,完整性问题也没有因此解决。
  • 客户端响应哈希只能证明客户端收到了哪些字节。缺少上游提供商对规范响应的签名时,它无法证明这些字节正是模型端点原始生成的内容。

按数据敏感度和动作权限准入

安全标签过于粗糙。更实用的做法,是同时看 Prompt 里的数据等级和模型输出能够触发的动作权限。

等级 典型任务 路由要求 Agent 权限
0 公开文本、一次性实验 已知运营方,保留基本路由日志 无外部副作用
1 低影响内部内容 批准端点、明确保留政策、独立密钥 只读工具或人工确认
2 机密代码或业务资料 合同处理者、固定提供商、关闭回退、必要时 ZDR 与 DLP 沙箱、窄白名单、提交门禁
3 真实凭证、监管数据、生产管理、签名 直连合同端点或完整治理的私有网关 专用身份、最小权限、独立批准、快速撤销

数据敏感度决定谁能看到输入,动作权限决定被修改的输出能够造成什么后果。同一个模型可以同时服务 0 级聊天和 3 级运维 Agent,但两条路由必须采用完全不同的治理配置。

真实密钥也不应进入 Prompt。让模型提出动作,再由本地 Secret Manager 在动作边界注入短期凭证。这样模型、中转站、上游提供商、日志和异常处理器接触到的秘密都会减少。这个原则与 AI Coding Agent 的安装前信任边界 相同:模型负责建议,确定性本地门禁负责批准执行。

用验证阶梯替代一次性安全评分

论文观察到部分条件行为会在特定语言、预热次数或自治模式下出现。单次检查只覆盖一个时点和有限触发条件。生产系统应持续执行以下阶梯:

  1. 核对问责主体:保存运营方、域名、子处理者、支持渠道、事故通知条款、隐私政策与 DPA。
  2. 冻结生产路由:限定模型和提供商,敏感任务关闭回退,并在预发布环境主动让批准端点失败。正确结果应是可见错误,而不是无提示扩展路由。
  3. 使用合成金丝雀:给测试账户发送唯一、无生产价值的标记,监控异常复用。审计语料里不要放真实云密钥、钱包私钥、客户记录或专有代码。
  4. 收集一致性信号:比较元数据、请求 ID、延迟分布、固定任务集、流式结构和计费记录。只有多个独立信号一致时,才能增强身份判断。
  5. 在本地限制动作:把 Shell、安装、网络写入、数据库变更和签名放进确定性白名单与批准门禁。沙箱、依赖哈希和权限隔离分别覆盖不同失败模式。
  6. 保存脱敏证据:记录时间、端点、路由策略、工具、批准结果、Token、成本和带密钥哈希。只有明确调试需求与保留期限时才存 Prompt 正文。
  7. 演练撤销与退出:轮换路由密钥、停用提供商、移除成员,并测量停止流量和找全依赖工作负载需要多久。

开源的 API Relay Audit v2.4.0 可以收集本地异常信号。使用前应审查并固定版本,只配置低额度测试密钥与合成流量。它自己的边界同样重要:有限测试报告是证据,不是长期安全证书。

这套阶梯同时说明了每种控制能证明什么。合同核验承诺,路由元数据记录中转方报告的路径,金丝雀揭示部分异常使用,本地门禁阻止已定义的动作,日志帮助确定事故范围。只有生态系统真正部署上游签名后,来源完整性才会增加新的强证据。

常见问题

LLM 中转站会保留 Prompt 吗?

取决于中转平台、具体端点、账户配置和启用功能。OpenRouter 的 Data Collection 文档称,其自身层面的 Prompt 与响应存储为可选;其隐私政策同时说明,请求转交给提供商后还受提供商政策约束。应核验实际端点、插件、日志、可观测性导出和合同,而不是只看平台名称。

零数据保留足以承载生产秘密吗?

ZDR 主要解决保留问题。服务仍要在传输中处理数据,部分元数据可能保留,工具可能采用不同政策,中转层也仍能修改响应。生产秘密还需要最小化、固定端点、最小权限、完整性控制和撤销能力。

HTTPS 能阻止中转站修改工具调用吗?

HTTPS 保护客户端到中转站这一段传输。客户端主动配置的中转站会合法终止 TLS,再向上游建立新连接,因此能够处理应用层内容。端到端工具调用完整性需要普通 TLS 之外的来源证据。

模型指纹能证明模型被替换吗?

模型指纹、自然语言自报、延迟、质量和元数据都属于一致性信号。固定任务集中的多种信号持续矛盾时,应触发调查;后端记录或提供商签名才能支持更强的身份结论。

自建网关能消除供应链风险吗?

自建让团队控制其中一跳。软件包、容器镜像、插件、云基础设施、运维凭证和上游模型仍是依赖。LiteLLM 事件说明,自建同样需要来源固定、密钥隔离、升级审查和快速撤销。

下一步

任选一条生产 LLM 请求,画出从客户端到实际模型端点的完整路径。如果团队无法说清每个处理者、无法固定提供商,或无法把返回结果关联到路由证据,就把该工作负载限制在 1 级以内,直到路由合同补齐。

相关控制还可参考 加密推理块也是不记名凭证 和 模型路由背后的 AI 财务控制面。

参考资料


Comment