2026年4月21日,AI 安全研究员 Aonan Guan 和约翰霍普金斯大学的同事们在一个 GitHub PR 标题里塞进了一行恶意指令。就这一行,让 AnthropicClaude Code Security Review、GoogleGemini CLI Action、GitHub Copilot Agent — 三款代码评审自动化智能体全都把自己的 API 密钥吐到了 PR 评论里。

Firecrawl 在 9 天后(4月30日)给出的答案就是 Lockdown Mode。在 /scrape 里加一行标志(lockdown: true),就只从已索引的缓存里取结果,完全不向目标 URL 发起任何网络请求。

3秒速览
智能体出站请求 → 可被注入的通道 → Lockdown 仅用索引 → 阻断数据泄露

为什么偏偏这时候上 Lockdown?

"runtime is the blast radius."(运行时即爆炸半径。)VentureBeat 引用的 Enkrypt AI CSO Merritt Baer 这一句话,正好点出了问题所在。 意思是:AI 智能体在 LLM 推理层看似越过了安全屏障,但在工具调用层(执行 bash、git push、API POST、网页抓取)却没有控管。

尤其是网页抓取,LLM 一旦自行决定 URL,这条路径就变成了对外通道。攻击者只要在页面、邮件、issue 里埋下指令,智能体抓那一页就会接受指令,转头向其他域名发出出站请求,把上下文流出去。URL 的 path、query、header 整条都成了数据泄露通道。

把 2026 年 4 月发生的事按时间顺序铺开,画面就清楚了。

  1. 4月15日
    Microsoft Copilot Studio 与 Salesforce Agentforce 被同一类注入攻破。新型 agentic AI CVE 类别浮出水面。
  2. 4月21日
    Comment and Control 攻击公开。Claude Code、Gemini CLI、Copilot 三家全因一行 PR 标题导致 secret 外泄。CVSS 9.4 Critical 级,可 Anthropic 的赏金只给 100 美元。
  3. 4月30日
    Firecrawl 推出 Lockdown Mode。一个标志位就能彻底拦截出站请求的 cache-only 模式。
  4. 同一时间点
    OX Security 发布报告称有 20 万台 MCP 服务器对外暴露。Firecrawl 同一周打包推出了开源 web-agent 与 Lockdown。

具体到底有什么不同?

普通 /scrape 与 Lockdown 模式的差别一句话能讲清。

项目 普通 /scrape Lockdown Mode
向目标 URL 发起出站请求 会发 绝对不发
robots.txt 抓取 会抓 在引擎层拦截
Zero Data Retention 额外加价 默认开启 + 免加价
缓存未命中时的行为 实时抓取 返回 SCRAPE_LOCKDOWN_CACHE_MISS 错误
覆盖范围 9 种 SDK + CLI + MCP 全统一

关键在最后两行。缓存未命中时不会 silent fallback — 也就是说不会出现"缓存里没有,那我顺手去抓一次吧"这种绕过行为。URL 一旦不在缓存里,调用方立刻能感知,出站请求始终保持 0。

而且这一标志在 9 个 SDK、CLI 和 MCP 上完全一致。从运维视角看,最大的变化在于:不必为每个工具单独写安全策略,一个 lockdown: true 就统一覆盖。

注意:Lockdown 只挡网络层。模型调用本身是另一回事。Lockdown Mode 只切断出站抓取通道,智能体从缓存里拿到的内容里若已嵌入注入,它并不能拦下。content sanitization(内容清洗)依然不可或缺。

上手指南

  1. 先把缓存喂起来
    Lockdown 只返回已索引的页面。要在生产里用的域名,得先用普通模式各抓一遍,把它们登记进缓存。
  2. 加上 lockdown: true 标志
    Python、Node、Go、Rust、Java、.NET、Ruby、PHP、Elixir 这九种 SDK 写法相同。CLI 用 --lockdown,MCP 服务器在工具参数里传同一个标志。
  3. 处理缓存未命中
    捕获 SCRAPE_LOCKDOWN_CACHE_MISS 错误,把它送进运维队列,或单独安排 worker 提前预热缓存。没有 silent fallback 是有意为之。
  4. 核对计费
    缓存命中 5 credit,未命中 1 credit,ZDR 免加价。安全模式不比普通模式贵 — 这是定价上的有意设计。
  5. 与 web-agent 一起用
    Firecrawl 同一时间点开源的 web-agent(MIT 协议、1.1k stars、基于 Deep Agents)里把 Lockdown 设为默认模式,就能从结构上把自主智能体的出站风险压到 0。

常见问题

爬取(/crawl)和搜索(/search)也支持 Lockdown 吗?

目前只对 /scrape 生效。/crawl/map/extract/search 本质上都需要发起外部请求,被排除在 lockdown 之外。对安全敏感的自主智能体,标准做法是两段式:先用普通模式把 /search 的结果 URL 喂进缓存,后续分析再用 /scrape --lockdown 跑。

Anthropic、OpenAI、Google 都在做自家的运行时护栏,还需要 Firecrawl Lockdown 吗?

VentureBeat 4 月 21 日的分析一针见血。三家的 system card 只测量并公开模型层面的注入抗性,工具执行层(抓取、shell、API 调用)的抗性没被量化。Anthropic 在 Claude Code Auto Mode 里加了部分运行时护栏,但 system card 里没写,验证起来很困难。 也就是说,在模型护栏之外,还需要在工具层直接拦截的基础设施 — Lockdown 就是其中一个答案。

新闻、价格这种实时性强的数据,用了 Lockdown 是不是就废了?

Lockdown 最久能返回 2 年内的缓存。确实不适合实时数据。但是"URL 本身就在泄露信息"的场景(竞品页面、内部主机名、path 里嵌入了识别符的 URL),它的防护力压倒性强。推荐做法是把实时工作流与安全工作流分离,只让后者走 Lockdown。

开源自托管的话,也能一并用 Lockdown 吗?

Firecrawl 本体是开源的(MIT),但 Lockdown 依赖 Firecrawl 的索引/缓存。要在自托管环境里得到同等保障,要么自建一层缓存,要么直接用 Firecrawl 托管模式更省事。web-agent 框架本身可以独立自托管。

深入了解

Lockdown Mode 官方博客 Firecrawl 联合创始人 Eric Ciarla 亲笔的发布文章。涵盖 4 种使用场景和缓存匹配规则 — 最权威的一手资料。firecrawl.dev

Comment and Control 技术披露 Aonan Guan 撰写的原始 disclosure。Claude Code、Gemini CLI、Copilot 各自被塞了哪一行 PR 标题、为什么会通过 — 复现案例完整收录。venturebeat.com

Firecrawl web-agent 同样在 4 月发布的开源自主智能体。提供与 Lockdown 配套使用的参考架构。github.com/firecrawl/web-agent

Lockdown 官方 docs 缓存匹配规则、计费模型、SCRAPE_LOCKDOWN_CACHE_MISS 响应规范。docs.firecrawl.dev