跳转到主要内容

遗留系统是智能体放大问题

智能体不会在遗留系统中发明新的漏洞;它们提高的是利用的吞吐量。解决办法是在智能体边界处设置速率和范围限制,而不是重写系统。

A person pressing the elevator button inside a modern elevator, showcasing the control panel with floor numbers.

待检验的论断

本文认为,正确的框架是放大,而非新颖性;正确的应对是边界控制,而非替换系统。重写是一个多年期的项目;而放大风险在本季度就已存在。边界控制成本低、可测试、可回滚,而且它们还能减少普通配置错误的自动化所带来的危害——在实践中,这远比蓄意对手更常见。

是放大,不是新颖性

人类攻击者受注意力限制。一个人能同时考虑少数几个假设,以有限的速度打字,并且上下文切换是有代价的。智能体集群受预算和速率限制约束。如果两者都不存在,集群就会扩张到目标所能接受的程度。瓶颈从攻击者的认知转移到目标的容忍度。

这种转变在遗留接口缺少三个特定属性时最为关键:

  • 速率限制。 没有按主体的请求预算,智能体可以一直探测某个端点,直到找到边界情况。这不是新洞;这是一个旧洞,只是以前穿过它的代价很高。
  • 幂等键。 无法区分重试和新意图的写入路径,在重试压力下会产生重复记录。智能体会激进地重试,因为重试对它们来说很便宜。
  • 审计追踪。 如果调用无法归因到某个主体,操作者就无法区分突发流量和 bug,也无法区分 bug 和入侵,直到事后很久才能发现。

在这些缺失存在的地方,智能体会比人类团队更快地找到并利用它们,不是因为更聪明,而是因为它不会感到无聊。故障模式很少是戏剧性的入侵。而是耗尽和噪音:导致真实用户无法登录的账户锁定、重试负载下的服务降级,以及重复部分写入造成的状态损坏。一个从未见过每小时超过几百次写入的遗留系统,可能会看到数千次,而它对序列化和冲突解决的假设将不再成立。

一个具体的机制可以让这一点变得清晰。设想一个遗留的 SOAP 或 REST 端点,暴露了一个 createRecord 操作,没有幂等键,也没有按主体的配额。在慢速后端下,一个带有超时重试策略的智能体循环会多次发出同一个逻辑写入。每次尝试在服务器看来都是有效的。结果不是经典意义上的安全事件;而是一个数据质量事件,之后必须手工对账。乘以一个集群,对账成本才是真正的损害。

A close-up of a person with a bionic arm leaning on a CRT TV under green lighting.

在边界处有效的控制

有用的干预点是智能体边界——智能体框架与遗留接口之间的那一层——而不是智能体框架内部。框架内部的控制是建议性的;智能体可以被重新配置,而不同的框架不会共享这些控制。边界处的控制无论哪个智能体、供应商或脚本在调用,都会被强制执行。

三项控制承担了大部分作用。

在遗留接口上按主体设置请求预算,并在智能体框架之外强制执行。 遗留系统前面的网关按主体、按端点、按时间窗口统计请求,超出预算就拒绝或排队。预算应根据遗留系统已证明的容忍度来设定,而不是根据智能体的野心。这既是容量决策,也是安全决策。

对智能体可能触及的任何写入路径要求幂等性。 每次写入调用都携带一个客户端生成的键。网关或服务将该键与结果一起存储,重复的相同键会返回原始结果,而不是再次执行写入。这是对接口契约的小改动,却是对故障模式的大改动:重试变得安全,部分写入造成的损坏不再累积。

用于探索的只读镜像。 让智能体对任何探索性查询访问副本。将记录系统保留在显式、经过审计的调用之后。探索是智能体产生最多流量、每次调用价值最低的地方;也是陈旧副本危害最小的地方。权衡是诚实的:副本会引入复制延迟,而一个从副本读取、然后写入记录系统的智能体可能会基于陈旧状态行动。这对于搜索和分诊是可以容忍的,对于事务性工作流则不可容忍。边界应明确区分这一点,而不是留给智能体自行判断。

一个简短的网关草图让形态变得具体:

agent -> boundary gateway -> legacy interface
              |
              |- principal identity
              |- per-endpoint budget
              |- idempotency store
              |- audit log (append-only)
              |- read/write routing (replica vs system o

![Close-up shot of illuminated aircraft cockpit controls with green lighting.](/media/control-panel-buttons-macro-ligh-24fb455d11-21e940.jpg)

## 为什么重写是错误的第一个动作

替换项目需要数年。它们也往往由同样的论点来证明其合理性——即遗留系统不安全——这意味着安全论证被用来资助一个不会减少本季度风险的项目。与此同时,放大风险是活生生的。智能体集群不会等待迁移完成。

边界控制有三个替换所不具备的属性。相对于重写,它们成本低,因为它们位于系统前面而不是内部。它们可测试,因为预算和幂等存储可以在被信任之前用合成负载进行演练。它们可回滚,因为如果网关策略被证明过于严格,可以放宽。重写不具备这些中的任何一项。

还有一个容易被忽视的二阶好处。同样的控制减少了普通配置错误的自动化所带来的危害。一个有重试 bug 的 cron 任务、一个在瞬时错误上循环的脚本、一个重放队列的配置错误的集成——这些是遗留系统事故的日常原因。按主体预算和幂等键在应对智能体放大的同时,也应对了它们。这是基础设施工作中罕见的属性:一项控制,两类危害。

## 首先做什么

实际步骤很短。盘点智能体可以触及的遗留接口,并为每一个记录它是否有按主体预算、写入是否有幂等键,以及是否有可归因的审计追踪。在没有这些的接口前面放置一个网关。根据观察到的容忍度设定预算。将探索性读取路由到副本。然后,只有到那时,才决定系统本身是否需要替换——如果需要,边界控制仍将是在替换构建期间保持系统安全的东西。

智能体使遗留系统变得新危险的说法只对了一半。它们并没有使系统变得新脆弱。它们使现有漏洞的利用变得更便宜,而这是一个吞吐量问题,需要吞吐量的答案。

_封面照片:panumas nikhomkhai / Pexels。_
分享XLinkedIn永久链接5 分钟阅读

相关阅读

这能回答的问题

Do AI agents introduce new vulnerabilities in legacy systems?

Generally no. The vulnerabilities — missing rate limits, absent idempotency keys, weak audit trails — predate agents. Agents change the cost of attempting an exploit and the number of attempts per hour, which is an amplification problem rather than a new class of flaw.

Why enforce controls at the agent boundary rather than inside the agent framework?

Controls inside a framework are advisory and framework-specific; a different agent or script will not share them. A gateway in front of the legacy interface counts, deduplicates and logs requests regardless of which agent is calling, and policy changes take effect in minutes.

What is the trade-off of read-only mirroring for agent exploration?

Replication lag. An agent that reads from a replica and then writes to the system of record may act on stale state. That is acceptable for search and triage and unacceptable for transactional workflows, so the boundary should make the read/write distinction explicit.

Why not simply rewrite the legacy estate?

Replacement programmes take years, and the amplification risk is present now. Boundary controls are cheap, testable and reversible, and they also reduce harm from ordinary misconfigured automation such as retry loops and replayed queues.