安全决策报告
openclaw-free-search
代码实现了声称的搜索功能,但存在未声明的 shell 执行能力(curl fallback),存在文档-行为差异。
最直接的威胁证据
为什么得出这个结论
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 未声明的 shell 执行能力 · 缺少错误处理详情 · https://api.duckduckgo.com/?q=$
SKILL.md https://yang1002378395-cmyk.github.io/openclaw-install-service/
其他文件 · _meta.json
安全亮点
功能相对简单,无复杂的攻击链
无凭证收割、环境变量遍历等敏感操作
无外部数据传输行为
使用标准 DuckDuckGo API,无隐蔽通信