跳到主要内容

Token 消耗是你的 SOC 尚未监控的安全信号

· 阅读需 12 分钟
Tian Pan
Software Engineer

你技术栈中最灵敏的泄露信号并不在 SIEM 中。它隐藏在财务人员月初打开的一份电子表格里。当攻击者窃取了 LLM API 密钥、利用提示词注入(prompt injection)窃取数据,或者通过被入侵的租户会话查询相邻客户的内存时,痕迹首先会表现为 Token 使用异常——这远在任何 DLP 规则触发、任何身份验证警报响起或任何终端代理察觉到异常之前。财务看到了,而安全部门却没看到。

这种差距并非理论上的。Sysdig 的威胁研究团队在观察到攻击者利用窃取的云凭据产生每日五位数的账单后,创造了“LLMjacking”一词。这一类别现已演变成一个有组织的犯罪产业,出现了每个账号 30 美元的交易市场,且有记录显示某些活动让受害者的损失每天超过 100,000 美元。OWASP 记录了一家初创公司因为密钥泄露,在 48 小时内产生了 200,000 美元的账单。斯坦福大学的一个研究小组由于在 Jupyter notebook 中遗忘了一个 Token,在 12 小时内烧掉了 9,200 美元。所有这些事件的共同点是:在安全团队察觉之前,账单图表就已经在几个小时甚至几天前揭示了真相。

这种信号被忽略的原因是组织架构问题,而非技术问题。FinOps 掌控着 Token 仪表盘,因为 Token 就是金钱。安全团队掌控着事件响应流程,因为凭据意味着访问权限。两个团队都没有让对方的报警器响起来。Token 流是一个高信号、低误报的滥用检测器,同时也是一种成本控制手段——但它目前被放在了组织结构图中错误的一侧。

为什么 Token 支出优于传统的滥用信号

传统的凭据滥用检测依赖于那些不适用于 LLM API 的信号。这里没有登录行为,因此不会有“异地登录”告警。Cookie 中没有会话 Token,因此不存在会话劫持模式。终端代理看到的只是发往 api.openai.comapi.anthropic.com 的正常出站 HTTPS 连接——这与合法流量无法区分。DLP 工具无法判定一个出站 POST 请求是由用户指令触发的,还是由上下文窗口中注入的提示词触发的。当攻击在常规遥测数据中浮出水面时,账单已经非常巨大了。

Token 支出在三个对检测至关重要的方面与众不同。

首先,它受 经济规律限制。合法用户有其工作负载特征。一个产品有平均每个请求的 Token 数。一个智能体(agent)有收敛的“计划与执行”模式。入侵会以独特的方式打破这些特征:转售访问权限的攻击者会持续消耗推理资源;遭受提示词注入的智能体会发出包含泄露上下文的超大响应;而撞库攻击流水线会连续探测多个模型,以指纹识别该密钥可以访问的权限。这些模式看起来都不像该密钥上的合法流量。

其次,它是 可归因于主体 的。与在 VPC 或主机级别聚合的网络遥测不同,LLM API 日志包含 API 密钥(或 OAuth 主体)、模型、输入 Token 数、输出 Token 数、延迟,以及越来越多的工具调用(tool-call)特征。这是行为基线的天然主键。无论是按密钥、按会话还是按租户——你只要选定聚合方式,异常检测就会变成一个基础统计问题,而不是一个前沿研究难题。

第三,它 近乎实时到达。服务商会对每一个请求进行计量。虽然仪表盘可能会有延迟,但底层的日志流不会。针对 Token 速率的 CUSUM 检测器或针对输出 Token 长度的标准差门控,可以在当前计费小时内捕捉到异常,而不是等到下一个计费周期。

五种最明显的攻击模式

如果你将 Token 支出视为一种检测信号,以下是你在野外实际会看到的特征,以及每种特征通常代表的含义。

24/7 持续消耗。 合法密钥在夜间和周末会沉寂下来,但黑市上转售的访问权限不会。一个密钥的使用模式从零星的办公时间段转变为没有昼夜规律的平滑、高利用率曲线,这就是 LLMjacking 的教科书式特征。Sysdig 在凭据从一个有漏洞的 Laravel 安装中被窃取后,记录了针对 10 个云托管 LLM 服务的此类攻击。受害者的日志从单条请求看很正常,只有一周的整体趋势暴露了攻击。

异常模型激增。 Red Canary 记录的 Azure OpenAI 滥用模式,以及 OpenAI 社区报告中开发者突然被收取出其从未调用过的 gpt-4.5-previewchatgpt-4o-latest 模型费用的案例,都是同一种变体。攻击者获取密钥后,会枚举可用的模型,并开始在转售市场上最有价值的模型上进行消费。如果你基线中每个密钥的模型分布是 “97% gpt-4o-mini,3% embeddings”,而突然间十分之一的支出转移到了旗舰级推理模型上,那不是产品变更——那是别人的产品变更。

输出长度泄露。 提示词注入攻击通过从检索语料库或智能体的工具输出中读取数据,几乎总是会增加响应长度。如果你的聊天助手通常回答 50–100 个 Token,而某个会话突然开始发出 3,000 个 Token 且看起来像结构化数据的响应,那就是泄露的迹象。在响应日志上设置简单的输出 Token 长度门控是一个非常有效的第一道过滤。你寻找的攻击载荷在结构上就是庞大的。

重试风暴。 无限循环故障——典型的例子是 2025 年 11 月 LangChain 双智能体事件,在 11 天内烧掉了 47,000 美元——乍看之下与低频缓慢的滥用完全一致。两者都表现为持续的高请求率和适中的单次请求大小。不同之处在于,合法的重试风暴通常伴随着应用日志中匹配的错误率,而滥用则不会。将推理流与上游错误关联起来,就能区分“我们出 Bug 了”和“我们被攻击了”。

加载中…
References:Let's stay in touch and Follow me for more thoughts and updates