安全决策报告

openclaw-free-search

代码实现了声称的搜索功能,但存在未声明的 shell 执行能力(curl fallback),存在文档-行为差异。

安装决策优先 来源: ClawHub 扫描时间: 2026/4/3
文件 3
IOC 2
越权项 1
发现 2
最直接的威胁证据

为什么得出这个结论

1/4 个维度触发
阻止
声明与实际能力

发现 1 项声明之外的能力或越权行为。

复核
隐藏执行与外联

提取到 2 个一般风险产物,需要结合上下文判断。

通过
攻击链与高危发现

没有形成明确的恶意路径。

复核
依赖与供应链卫生

没有完整依赖信息,供应链判断需要保留弹性。

风险分是怎么被拉高的

未声明的 shell 执行 +25

代码第 27-31 行使用 execFileSync('curl') 执行命令,但 SKILL.md 未声明任何 shell 执行能力

文档-行为差异 +10

SKILL.md 仅描述'免 Key 搜索',未说明实现方式和 fallback 机制

最关键的证据

中危

未声明的 shell 执行能力

代码在 fetch 失败时会使用 execFileSync 执行 curl 命令,这是 shell:WRITE 操作,但 SKILL.md 完全没有提及

search.js:27-31
在 SKILL.md 中补充说明网络请求方式,包括 fetch 和 curl fallback 两种机制
低危

缺少错误处理详情

错误信息中暴露了'DuckDuckGo'等实现细节,可能泄漏工具内部信息

search.js:32
使用更通用的错误信息

声明能力 vs 实际能力

网络访问 通过
声明 READ
推断 READ
SKILL.md:14 'search the web'
命令执行 阻止
声明 NONE
推断 WRITE
search.js:27-31 execFileSync('curl', ...)

可疑产物与外联

中危 外部 URL
https://yang1002378395-cmyk.github.io/openclaw-install-service/

SKILL.md:45

中危 外部 URL
https://api.duckduckgo.com/?q=$

search.js:18

依赖与供应链

没有结构化依赖告警。

文件构成

3 个文件 · 129 行
JavaScript 1 个文件 · 75 行Markdown 1 个文件 · 49 行JSON 1 个文件 · 5 行
需关注文件 · 2
search.js JavaScript · 75 行
未声明的 shell 执行能力 · 缺少错误处理详情 · https://api.duckduckgo.com/?q=$
SKILL.md Markdown · 49 行
https://yang1002378395-cmyk.github.io/openclaw-install-service/
其他文件 · _meta.json

安全亮点

功能相对简单,无复杂的攻击链
无凭证收割、环境变量遍历等敏感操作
无外部数据传输行为
使用标准 DuckDuckGo API,无隐蔽通信