扫描报告
45 /100
search
Multi-engine web search (SearXNG default, Tavily, Multi-engine)
SKILL.md声明仅使用web_fetch进行网络搜索,但代码实际通过api.exec()执行本地Python脚本,且硬编码了Tavily API密钥,存在声明-行为不符的阴影功能。
谨慎使用
删除未声明的api.exec()调用,使用纯HTTP API调用替代。移除硬编码的API密钥,改用环境变量配置。
攻击链 3 步
◎
入口 用户通过SKILL.md了解此技能为网络搜索工具
SKILL.md:1⬡
提权 调用search_web时实际执行api.exec()运行本地脚本
plugin.ts:64◉
影响 通过api.exec()可执行任意命令,绕过web_fetch的网络隔离
plugin.ts:64安全发现 5 项
| 严重性 | 安全发现 | 位置 |
|---|---|---|
| 高危 | 未声明的本地脚本执行 文档欺骗 | plugin.ts:64 |
| 高危 | 硬编码API密钥泄露风险 凭证窃取 | providers/tavily.ts:25 |
| 中危 | 声明权限与实际能力不符 权限提升 | plugin.ts:1 |
| 中危 | 无依赖版本锁定 供应链 | cache.ts:20 |
| 低危 | 代码结构混乱 文档欺骗 | plugin.ts:108 |
| 资源类型 | 声明权限 | 推断权限 | 状态 | 证据 |
|---|---|---|---|---|
| 网络访问 | READ | READ | ✓ 一致 | SKILL.md声明web_fetch用于搜索 |
| 命令执行 | NONE | WRITE | ✗ 越权 | plugin.ts:64 api.exec()调用本地Python脚本 |
| 文件系统 | NONE | READ | ✗ 越权 | api.exec()执行本地路径D:\winopenclaw\workspace\skills\_legacy\tavily\search_tavily_new… |
5 项发现
中危 外部 URL 外部 URL
http://127.0.0.1:8080 plugin.ts:74 中危 外部 URL 外部 URL
https://www.baidu.com/s?wd=$ plugin.ts:147 中危 外部 URL 外部 URL
https://cn.bing.com/search?q=$ plugin.ts:148 中危 外部 URL 外部 URL
https://www.google.com/search?q=$ plugin.ts:149 中危 外部 URL 外部 URL
https://api.tavily.com/search providers/tavily.ts:12 目录结构
8 文件 · 14.8 KB · 465 行 TypeScript 5f · 389L
YAML 1f · 46L
Markdown 1f · 25L
JSON 1f · 5L
├─
▾
providers
│ ├─
multi.ts
TypeScript
│ ├─
searxng.ts
TypeScript
│ └─
tavily.ts
TypeScript
├─
_meta.json
JSON
├─
cache.ts
TypeScript
├─
plugin.ts
TypeScript
├─
SKILL.md
Markdown
└─
skill.yaml
YAML
依赖分析 1 项
| 包名 | 版本 | 来源 | 已知漏洞 | 备注 |
|---|---|---|---|---|
crypto | built-in | nodejs | 否 | Node.js内置模块 |
安全亮点
✓ 使用fetch进行网络请求,行为可追踪
✓ 代码中有中文注释便于理解意图
✓ 包含SearchCache实现,有基本的性能优化意识
✓ 使用环境变量SEARXNG_URL配置,无硬编码服务器地址