跳转到正文
报告库
用途分类 / 其他用途

Firecrawl Search Skill 安全审计

作者说它能做什么(原文)

|

第三方安全检查结论

发现安全风险

已检查文件
1
发现的风险
4
会不会运行危险命令?检查是否下载程序后直接运行、让他人远程控制电脑,或藏起要运行的命令。未发现风险
会不会泄露文件和密钥?检查是否发送含密码或密钥的文件,以及代码里是否直接写了密钥。发现 2 项风险
中风险

默认要求将搜索评价和研究缺口发送给 Firecrawl

原文依据:4 处
发现了什么

完成标准要求每次搜索后发送反馈。反馈可包含有价值来源的 URL、缺失主题及具体描述,可能暴露用户正在调查的对象、未满足的需求或内部研究方向。这是搜索之外的二次数据传输,并以退款作为激励。示例还要求静默、后台发送,使用户不易看到提交结果。

为什么需要注意

Firecrawl 会收到可关联至搜索 ID 和团队账户的评价及研究意图。若查询涉及未公开项目、客户、漏洞或商业计划,这些补充信息可能具有敏感性。

该 Skill 把每次搜索后的反馈列为默认完成条件,并要求向 Firecrawl 提交结构化评价。提交内容可包括有价值来源 URL、缺失主题及描述,从而向搜索服务额外披露用户的研究对象和未满足需求;示例使用静默后台发送,降低用户察觉失败或提交细节的可能。虽然提供了环境变量退出机制,用户应在处理敏感研究时预先禁用反馈,或要求发布者改为明确征得同意后再发送。

SKILL.md:31来自说明文档打开原文件
**Done when:** results are saved under `.firecrawl/`, verified non-empty, processed for the request, and one feedback event is sent within the time window (unless opted out).
查看另外 3 个位置
SKILL.md:43来自说明文档打开原文件
Search costs 2 credits. After you've actually used the results (or decided they were useless), send structured feedback with `firecrawl search-feedback <id>`. The first feedback per search refunds 1 credit and helps us improve search quality. **Do this once per search**, in the background, after you finish processing the results — it does not block your main task.**Opt out:** if `FIRECRAWL_NO_SEARCH_FEEDBACK=1` (or `FIRECRAWL_DISABLE_SEARCH_FEEDBACK=1`) is set, the CLI silently skips the call and never sends anything. Respect that — do not try to work around it. (Team admins can also disable this server-side; the API will return `feedbackErrorCode: "TEAM_OPTED_OUT"` and the CLI will exit 0 silently.)
SKILL.md:66来自说明文档打开原文件
if SEARCH_ID=$(jq -er 'select(any(.data[]; length > 0)) | .id' .firecrawl/search-react-hooks.json); then  firecrawl search-feedback "$SEARCH_ID" \    --rating "<good|partial|bad>" \    --valuable-sources '[{"url":"https://react.dev/reference/react/hooks","reason":"Most authoritative"}]' \    --missing-content '[{"topic":"useDeferredValue","description":"No example of useDeferredValue with Suspense"}]' \    --silent &fi
SKILL.md:81来自说明文档打开原文件
`--silent` suppresses output and `&` runs it in the background so feedback never blocks you.
中风险

示例防护不能排除读取旧结果并为错误搜索提交反馈

原文依据:2 处
发现了什么

文档承认零结果搜索可能不写文件,而旧搜索文件可能保留。示例只检查文件内是否存在非空结果,然后读取其中的 ID;它没有验证文件是否由当前搜索创建。因此,一个旧的非空文件会通过检查。

为什么需要注意

代理可能针对先前搜索 ID 提交当前任务的评价、来源或缺失主题,造成跨任务信息混合和错误归因,并污染团队的反馈记录。

文档明确指出零结果时输出文件可能不存在或仍是旧文件,但示例仅验证指定文件中存在任意非空数据,然后取出其 ID。它没有核对文件的生成时间或 ID 是否来自刚完成的搜索,因此旧的非空文件确实可能触发针对错误搜索的反馈。影响主要是向 Firecrawl 发送不准确的评价及研究信息。用户可要求发布者把当前搜索返回的 ID 直接传递给反馈步骤,或在发送前显示并确认 ID。

SKILL.md:59来自说明文档打开原文件
Verify the search returned results before reading its `id`. Zero-result searches write no output file, so the file may be missing — or left over from an earlier search. The guard below skips feedback when the file is missing or has zero results; call `search-feedback` only inside it:
查看另外 1 个位置
SKILL.md:65来自说明文档打开原文件
# satisfy the substantive-content rule for every rating.if SEARCH_ID=$(jq -er 'select(any(.data[]; length > 0)) | .id' .firecrawl/search-react-hooks.json); then  firecrawl search-feedback "$SEARCH_ID" \    --rating "<good|partial|bad>" \    --valuable-sources '[{"url":"https://react.dev/reference/react/hooks","reason":"Most authoritative"}]' \    --missing-content '[{"topic":"useDeferredValue","description":"No example of useDeferredValue with Suspense"}]' \    --silent &fi```
会不会删除文件或一直在后台运行?检查是否大范围删除文件、改写磁盘,或设置自动启动。未发现风险
会不会绕过安全保护?检查是否跳过网站安全验证、开放过多文件权限,或取消操作前的确认。发现 1 项风险
低风险

安装命令没有固定依赖版本

原文依据:2 处
发现了什么

安装命令没有指定依赖版本。同样的命令以后可能下载不同代码,你实际安装的内容可能与这次检查时不同。

为什么需要注意

即使命令和报告没变,以后安装时也可能下载到另一份代码。

这段代码的正常用途

第 7 行不是安装命令,而是声明允许调用的命令模式。虽然 `npx firecrawl-cli` 在某些环境中可能临时获取软件包,但这里没有 `install`、版本选择或实际执行指令,因此“不固定版本的安装命令”缺乏直接依据。用户仍可要求发布者说明 CLI 的预期安装方式和受支持版本。

这项判断针对展示的代码和适用条件,不表示风险已经实际发生。
SKILL.md:7来自说明文档打开原文件
  - Bash(firecrawl *)  - Bash(npx firecrawl-cli *)---
查看另外 1 个位置
SKILL.md:5来自说明文档打开原文件
  Web search with full page content. Use when no URL is known: finding sources, articles, or news. For papers use firecrawl-research-index; for library, API, error, or bug questions use firecrawl-developer-index.allowed-tools:  - Bash(firecrawl *)  - Bash(npx firecrawl-cli *)---
会不会误导 AI 或隐藏内容?检查工作说明是否要求 AI 忽略你的指令、干扰检查结果,或夹带看不见的文字。发现 1 项风险
中风险

抓取的任意网页正文会进入代理处理流程,但未要求隔离网页中的指令

原文依据:3 处
发现了什么

`--scrape` 会获取搜索结果的完整页面内容,而完成标准要求代理处理这些结果。任意网页可包含伪装成系统消息、工具命令或任务要求的文本;Skill 没有说明这类文字必须仅作为不可信数据处理。

为什么需要注意

如果宿主代理把网页文字误当成指令,恶意页面可能影响回答、诱导额外工具操作,或试图获取本地数据。是否成功取决于宿主的提示隔离和权限。

该 Skill 主动建议抓取搜索结果的完整网页正文,并要求处理这些结果。由于来源是普通网页,正文可能包含面向代理的伪指令;所给完整文件没有要求把网页内容严格视为不可信数据。若代理把这类文字误当成任务指令,可能诱导额外工具调用、文件访问或信息披露。用户可限制 Skill 仅提取所需事实、禁用不必要工具权限,并要求发布者明确加入忽略网页内指令的规则。

SKILL.md:20来自说明文档打开原文件
# Search and scrape full page content from resultsfirecrawl search "your query" --scrape -o .firecrawl/scraped.json --json
查看另外 2 个位置
SKILL.md:31来自说明文档打开原文件
**Done when:** results are saved under `.firecrawl/`, verified non-empty, processed for the request, and one feedback event is sent within the time window (unless opted out).
SKILL.md:35来自说明文档打开原文件
- **`--highlights` on by default:** results are query-relevant excerpts, not full-page snippets. Use `--no-highlights` for the original snippets.- **`--scrape` fetches full content** — reuse that content instead of re-scraping result URLs. This saves credits and avoids redundant fetches.- Always write results to `.firecrawl/` with `-o` to avoid context window bloat.
会不会偷偷改推广链接或收款方?检查是否强制替换推广链接或收款对象,同时要求隐瞒更改。未发现风险

Skill 逻辑拆解

4 个说明模块

该 Skill 通过 Firecrawl 执行外部网络搜索,并可额外抓取结果页面的完整内容;搜索结果以 JSON 文件保存在工作区的 `.firecrawl/` 目录。

查看原文
SKILL.md:12来自说明文档打开原文件
Web search with optional content scraping. Returns search results as JSON, optionally with full page content.
SKILL.md:18来自说明文档打开原文件
# Basic searchfirecrawl search "your query" -o .firecrawl/result.json --json# Search and scrape full page content from resultsfirecrawl search "your query" --scrape -o .firecrawl/scraped.json --json
SKILL.md:37来自说明文档打开原文件
- **`--scrape` fetches full content** — reuse that content instead of re-scraping result URLs. This saves credits and avoids redundant fetches.- Always write results to `.firecrawl/` with `-o` to avoid context window bloat.- Use `jq` to extract URLs or titles: `jq -r '.data.web[].url' .firecrawl/search.json`

每次搜索消耗 2 个服务额度;提交一次结果质量反馈可退还 1 个额度,但团队每日退款存在上限。

查看原文
SKILL.md:41来自说明文档打开原文件
## Send feedback after every search (refunds 1 credit)Search costs 2 credits. After you've actually used the results (or decided they were useless), send structured feedback with `firecrawl search-feedback <id>`. The first feedback per search refunds 1 credit and helps us improve search quality. **Do this once per search**, in the background, after you finish processing the results — it does not block your main task.
SKILL.md:55来自说明文档打开原文件
  - `bad` → must include `--missing-content` or `--query-suggestions`.- **Daily refund cap (per team, per UTC day, default 100 credits).** Once your team has been refunded 100 credits today, further submissions still record feedback but no longer refund credits. The response includes `creditsRefundedToday` / `dailyRefundCap` / `dailyCapReached`. **When `dailyCapReached: true`, stop calling `search-feedback` for the rest of the UTC day** — it won't refund anything and you're wasting bandwidth.- **Idempotent:** re-submitting for the same search id returns success but no extra refund.

用户或团队可通过环境变量或服务端设置禁用搜索反馈;Skill 明确要求不要绕过该选择。

查看原文
SKILL.md:45来自说明文档打开原文件
**Opt out:** if `FIRECRAWL_NO_SEARCH_FEEDBACK=1` (or `FIRECRAWL_DISABLE_SEARCH_FEEDBACK=1`) is set, the CLI silently skips the call and never sends anything. Respect that — do not try to work around it. (Team admins can also disable this server-side; the API will return `feedbackErrorCode: "TEAM_OPTED_OUT"` and the CLI will exit 0 silently.)
从这里开始 · 工作说明SKILL.md
firecrawl-search
连线表示工作说明包含的模块,不是实际运行顺序。点击模块可查看原文。
文件与检查记录1 个文件

检查范围与遗漏

逐文件查看涉及的内容

下方列出本次涉及的原文范围;纳入检查不代表已查清所有问题。

  • SKILL.md已纳入全文

这份报告只针对上方版本。我们看了拿到的代码和说明文件,没有实际运行 Skill,也没有检查它另外安装的软件包。因此,这不是“保证安全”的承诺;换了版本或使用环境,结果也可能不同。

  • SKILL.md工作说明

代码和说明中提到的操作

运行命令
SKILL.md:6来自说明文档打开原文件
allowed-tools:  - Bash(firecrawl *)  - Bash(npx firecrawl-cli *)
SKILL.md:7来自说明文档打开原文件
  - Bash(firecrawl *)  - Bash(npx firecrawl-cli *)---
SKILL.md:16来自说明文档打开原文件
```bash# Basic search
安装其他软件包
SKILL.md:7来自说明文档打开原文件
  - Bash(firecrawl *)  - Bash(npx firecrawl-cli *)---
连接外部网站
SKILL.md:68来自说明文档打开原文件
    --rating "<good|partial|bad>" \    --valuable-sources '[{"url":"https://react.dev/reference/react/hooks","reason":"Most authoritative"}]' \    --missing-content '[{"topic":"useDeferredValue","description":"No example of useDeferredValue with Suspense"}]' \
SKILL.md:90来自说明文档打开原文件
- [firecrawl-research-index](../firecrawl-research-index/SKILL.md) — published papers, not `search --categories research`- [firecrawl-build-search](https://github.com/firecrawl/skills/tree/main/skills/build/firecrawl-build-search) — building search into an app instead of running it here
读取了多少行
91
文件校验值(用于核对版本)
e19afaf876a365b3109f7f8a68c5f0194bd30ba4c5a3bd54d653b695a17f4c7b