2026年4月21日,AI 安全研究员 Aonan Guan 和约翰霍普金斯大学的同事们在一个 GitHub PR 标题里塞进了一行恶意指令。就这一行,让 Anthropic 的 Claude Code Security Review、Google 的 Gemini CLI Action、GitHub Copilot Agent — 三款代码评审自动化智能体全都把自己的 API 密钥吐到了 PR 评论里。
Firecrawl 在 9 天后(4月30日)给出的答案就是 Lockdown Mode。在 /scrape 里加一行标志(lockdown: true),就只从已索引的缓存里取结果,完全不向目标 URL 发起任何网络请求。
为什么偏偏这时候上 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 月发生的事按时间顺序铺开,画面就清楚了。
- 4月15日
Microsoft Copilot Studio 与 Salesforce Agentforce 被同一类注入攻破。新型 agentic AI CVE 类别浮出水面。 - 4月21日
Comment and Control 攻击公开。Claude Code、Gemini CLI、Copilot 三家全因一行 PR 标题导致 secret 外泄。CVSS 9.4 Critical 级,可 Anthropic 的赏金只给 100 美元。 - 4月30日
Firecrawl 推出 Lockdown Mode。一个标志位就能彻底拦截出站请求的 cache-only 模式。 - 同一时间点
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(内容清洗)依然不可或缺。
上手指南
- 先把缓存喂起来
Lockdown 只返回已索引的页面。要在生产里用的域名,得先用普通模式各抓一遍,把它们登记进缓存。 - 加上
lockdown: true标志
Python、Node、Go、Rust、Java、.NET、Ruby、PHP、Elixir 这九种 SDK 写法相同。CLI 用--lockdown,MCP 服务器在工具参数里传同一个标志。 - 处理缓存未命中
捕获SCRAPE_LOCKDOWN_CACHE_MISS错误,把它送进运维队列,或单独安排 worker 提前预热缓存。没有 silent fallback 是有意为之。 - 核对计费
缓存命中 5 credit,未命中 1 credit,ZDR 免加价。安全模式不比普通模式贵 — 这是定价上的有意设计。 - 与 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




