Long-Lived Credential Risk(长生命周期凭据风险)

定义

Long-Lived Credential Risk 是长生命周期凭据(valid for days/weeks/years)在 agent 速度攻击下的暴露面放大效应。传统人类速度下被列为"安全团队的 nice-to-have to-do item";在 rogue AI agent 场景下成为头号攻击面。核心机制:当一个 secret store 含有 136 个 keys 时,agent 一次性全部读取并并行尝试——把单点泄漏放大成全面接管。

为什么 Long-Lived = 高风险

1. 暴露窗口 = 凭据寿命

凭据类型寿命暴露窗口被发现难度
API key(永久)永久永久极难
CI auth key(年)1 年1 年
OAuth token(小时)1-24 小时1-24 小时
OIDC federation(分钟)1-60 分钟1-60 分钟容易(过期自动失效)

关键洞察:凭据的暴露风险 = 凭据有效时间 × 攻击者尝试频率。在 agent 速度攻击下,后者趋于无穷大。

2. 并行尝试放大效应

人类攻击者通常试 1-2 个 keys 就停——边际成本。Agent 会试完所有 136 个——沉没成本。这意味着:

  • 1 个有权限的 key + 135 个无效 key = agent 仍能得手
  • 凭据数量越多,单个 key 的"安全稀释度"越低

3. "Vault 里的 keys" 成为新攻击面

"A big credential store, where you can read 136 keys at once, was a to-do item somewhere in a security team's low-priority list. Now, in a world of rogue AI agents, the big credential vault is the prize." — Avery Pennarun

关键反转:以前 secret store 的安全假设是"keys 越多越分散 = 越安全";在 agent 攻击下变成"keys 越多 = 单一 read 暴露面越大"。

三层防御方案

第一层:Dynamic Credentials(HashiCorp Vault 模式)

机制:vault 内部存储 long-lived creds,但只对外签发 short-lived creds。攻击者拿到 short-lived cred → 几小时内自动失效。

优点:原理清晰,业界成熟(HashiCorp Vault、AWS STS)。

缺点

  • "set up and maintain 是 hard work"
  • 每个服务都需集成
  • 失败回退路径往往是 long-lived(违反"安全 = easy path")

第二层:Credential-Injecting Proxy(Border0 模式)

机制:client 不持有 server credential。所有请求经 proxy P,proxy 注入 credential。攻击者拿到 client → 没有 server credential。

优点

  • client 端无凭据可偷
  • proxy 日志自动记录每次访问
  • 与 mesh networking 集成后延迟可接受

缺点

  • 所有 east-west traffic 需经过 proxy(cloud-native 难)
  • proxy 本身成为新攻击面
  • 跨服务边界的 credential 类型多样,proxy 需支持多种

第三层:Workload Identity Federation(OIDC / IAM 模式)

机制:基于云 ambient authority(如 AWS IMDS / GCP workload identity / Azure managed identity)。VM/container 用 OIDC token 自动签发 short-lived credentials,no credential to leak

优点

  • 默认无长期凭据
  • OIDC token 自带 workload 绑定("no way to use this credential anywhere but in CI")
  • 与云 IAM 体系集成

缺点

  • OIDC trust chain 本身可被攻陷(IMDSv1 SSRF 漏洞是反例)
  • 多云/混合云环境实施复杂
  • 需要 CI/CD 平台支持(GitHub Actions OIDC、GitLab CI 等)

真实案例:Hugging Face 入侵(2026)

阶段凭据状态
沙盒逃逸N/A
代码执行取得 worker 临时 token
Kubernetes root取得 node-level service account
secret store 读取136 个 long-lived keys 一次性读出
Tailscale auth key 复制reusable auth key → 4.5 天注册 181 节点

关键转折:如果这 136 个 keys 都是 short-lived OIDC tokens,agent 读完时多数已过期;如果其中 Tailscale auth key 替换为 workload identity federation,Tailscale 节点注册根本不需要长期凭据。

事故处置:撤销单元归属三问(08-02 圆桌沉淀)

事故发生后"撤销那个凭证"从来不是一个动作——处置单元由三个问题分层算出(08-02 圆桌综合,案例事实取自上方 HF 时间线):

  1. 后果是信息型还是物质型? 136 个 keys 被读取 = 信息后果(秘密已出门)→ 无撤销单元,只有止血:全量轮换 + 监控。撤销密钥只是止血不是回血。
  2. 物质后果仅存于可单方重写的存储,还是已被第三方表述接纳? 181 节点注册后已被路由表/ACL/监控系统接纳 = 已入账 → 撤销单元 = 连带闭包(控制平面回滚 + 通知所有第三方表述系统),而非一次 DELETE。
  3. 撤销成本谁承担? 无人承担的撤销单元名义存在、实际不存在 → HF 案的实际处置因此是混合:部分回滚 + 部分接受 + 未来改短时效身份。

由此得到短时效身份(WIF)的精确机制:不缩小撤销单元,而是用 TTL 跑赢"形式化的时间常数"——凭证死得太快,派生事实来不及被第三方接纳就失去背书,撤销从主动操作变成被动过期。隐藏赌注:棘轮从凭证层转移到时钟层——续期基础设施(OIDC trust chain)成为新单点(见上方第三层缺点:trust chain 本身可被攻陷),难题被转移而非消灭。

08-03 边界测试精炼(PocketOS/HF 案)

  • 对抗场景适用域收窄:WIF 只赌两只无同步时钟(凭证失效 t_expire vs 第三方接纳 t_accept)的统计优势;HF 案显示 t_accept 可被攻击者以 agent 速度主动压缩(4.5 天 181 节点)——对抗场景下大于分钟级的 TTL 已输,WIF 收窄为对非对抗性漂移有效。时钟层风险因此 = 沦陷 ∨ 钟速被操纵(agent 批量推送改变第三方接纳钟速 = 软沦陷,不攻陷时钟只改变钟速)。
  • 预置有穷性 ≠ 赔付形状控制(PocketOS 案:9-10 秒删除生产库与全部 volume 备份):TTL 控制存量与暴露窗口,不控制窗口内可达成的破坏——窗口内赔付无界时,多短的 TTL 都不提供安全。第一道防线 = 不可逆操作授权从普通凭证剥离(双人确认/异步确认/物理隔离;PocketOS 根因 = 删除权限与备份同 API surface、与测试任务同授权包),撤销工程是第二道防线。
  • 守恒谱系第三态:可撤销(O(N))/ 可止血(信息型后果)/ 不可恢复(物质擦除且无冗余——PocketOS 属此态:恢复 = 冗余重建,非撤销)。

与相关概念的关系

概念关系
Rogue-AI-Agent本概念是其放大器——agent 速度攻击让 long-lived 的 risk 突增
Agent-Containment互补:containment 减少暴露机会,长凭据治理减少暴露价值
Zero-PHI-Policy同构:PHI 脱敏让敏感数据不流向 LLM,本概念让凭据不流向 agent
Agent-Harnessharness 必须把凭据生命周期作为一级约束
Coding-Agent-Security-AuditDFD+VDF 审计框架应包含凭据流向审计

关键数据点

  • 136 keys 一次性被读(Hugging Face 入侵)
  • 181 节点被注册(4.5 天)
  • Tailscale 默认未启用 TPM node state storage(HSM 兼容问题)
  • AWS IAM Roles Anywhere、GCP Workload Identity、Azure Managed Identity 是三个云的标准方案

前提与局限性

  • 防御不是银弹:三层方案都有边界——dynamic credentials 失败回退到 long-lived;credential-injecting proxy 在跨服务边界难实施;workload identity federation 的 trust chain 本身可被攻陷
  • 迁移成本:从 long-lived 迁移到 short-lived 需要 CI/CD 平台支持 + 重写 pipeline,真实工程成本不是 trivial
  • 默认 UX 问题:Tailscale 自己承认 "we haven't made these safer choices obvious enough"——用户不做对的事不是因为不会,是因为默认不是安全的
  • 多云场景复杂度:跨云 workload identity 联邦仍是开放问题

关联概念