可信 — 风险评分 5/100
上次扫描:2 天前 重新扫描
5 /100
travel-mapify
将小红书旅行规划作业复制到交互式路线地图中,包含真实FlyAI酒店搜索
合法的旅行地图生成工具,所有能力与声明一致,无恶意行为发现。硬编码路径为功能性瑕疵不影响安全性。
技能名称travel-mapify
分析耗时102.8s
引擎pi
可以安装
可直接使用。硬编码的FlyAI路径(/Users/xuandu/...)和Amap API Key仅影响工具在此用户外的可移植性,非安全风险。

安全发现 5 项

严重性 安全发现 位置
低危
FlyAI CLI 路径硬编码用户主目录
hotel-search-server.py:47 硬编码路径为 '/Users/xuandu/.nvm/versions/node/v22.22.1/bin/flyai',包含特定用户名。工具在其他用户环境下无法正常调用FlyAI酒店搜索功能。
'/Users/xuandu/.nvm/versions/node/v22.22.1/bin/flyai', 'search-hotel'
→ 应通过环境变量或配置动态解析flyai命令路径,如优先从PATH中查找或使用which命令定位。
scripts/hotel-search-server.py:47
低危
Amap API Key 硬编码于 HTML 模板
HTML模板第368行硬编码了Amap API Key '88628414733cf2ccb7ce2f94cfd680ef',该Key将随生成的地图文件一同分发。
https://webapi.amap.com/maps?v=2.0&key=88628414733cf2ccb7ce2f94cfd680ef
→ 考虑使用模板变量替换API Key,避免随HTML文件暴露。如需分发,建议使用受域名限制的Key。
assets/templates/main-generic-template-with-unique-id.html:368
低危
subprocess 调用未在 SKILL.md 明确声明
main_travel_mapify_enhanced.py 使用 subprocess.Popen 启动 HTTP 服务器和酒店搜索服务,虽在 SKILL.md 'Automatic Server Management' 中声明,但 allowed-tools 映射未包含 Bash→shell:WRITE。
subprocess.Popen(cmd, cwd=WORKSPACE_DIR, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL, preexec_fn=os.setpgrp)
→ 在 allowed-tools 中明确声明 Bash 或 Write 工具的使用范围。
scripts/main_travel_mapify_enhanced.py:59
提示
工作目录路径硬编码
main_travel_mapify_enhanced.py:20 硬编码 WORKSPACE_DIR = '/Users/xuandu/.openclaw/workspace',影响工具可移植性。
WORKSPACE_DIR = "/Users/xuandu/.openclaw/workspace"
→ 应从环境变量或标准路径推导,避免硬编码用户名。
scripts/main_travel_mapify_enhanced.py:20
提示
HTML 模板 hotelPort 与服务器启动端口不一致
HTML模板第1138行硬编码 hotelPort = 8780,但SKILL.md声明默认端口8770,且main_travel_mapify_enhanced.py默认参数也是8770。虽然脚本会动态替换端口,但默认值不一致可能造成混淆。
const hotelPort = 8780;
→ 统一默认端口值或移除硬编码,使用服务器启动时传递的实际端口。
assets/templates/main-generic-template-with-unique-id.html:1138
资源类型声明权限推断权限状态证据
文件系统 WRITE WRITE ✓ 一致 scripts/main_travel_mapify_enhanced.py:351 写入输出HTML到WORKSPACE_DIR
网络访问 READ READ ✓ 一致 scripts/geocode_locations.py:43 通过本地代理调用Amap API; scripts/hotel-search-server.py…
命令执行 NONE WRITE ✓ 一致 scripts/main_travel_mapify_enhanced.py:59 用subprocess.Popen启动http.server和酒店搜索服务,…
环境变量 NONE NONE 无访问环境变量代码
技能调用 NONE NONE 无跨技能调用
剪贴板 NONE NONE 无剪贴板访问
浏览器 NONE READ ✓ 一致 生成HTML文件供浏览器打开,localStorage仅存储POI数据,不涉及凭证
数据库 NONE NONE 无数据库操作
3 项发现
🔗
中危 外部 URL 外部 URL
https://webapi.amap.com/maps?v=2.0&key=88628414733cf2ccb7ce2f94cfd680ef
assets/templates/main-generic-template-with-unique-id.html:368
🔗
中危 外部 URL 外部 URL
https://console.amap.com/
references/amap_api_guide.md:10
🔗
中危 外部 URL 外部 URL
https://webapi.amap.com/maps?v=2.0&key=YOUR_KEY
references/troubleshooting-guide.md:54

目录结构

13 文件 · 122.5 KB · 3148 行
HTML 1f · 1233L Python 7f · 1127L Markdown 4f · 783L JSON 1f · 5L
├─ 📁 assets
│ └─ 📁 templates
│ └─ 📄 main-generic-template-with-unique-id.html HTML 1233L · 50.0 KB
├─ 📁 references
│ ├─ 📝 amap_api_guide.md Markdown 168L · 4.3 KB
│ ├─ 📝 poi_validation_rules.md Markdown 163L · 5.3 KB
│ └─ 📝 troubleshooting-guide.md Markdown 228L · 7.1 KB
├─ 📁 scripts
│ ├─ 🐍 extract_pois_from_image_vision.py Python 162L · 7.5 KB
│ ├─ 🐍 extract_pois_from_image.py Python 132L · 4.4 KB
│ ├─ 🐍 generate_from_optimized_template.py Python 135L · 5.1 KB
│ ├─ 🐍 geocode_locations.py Python 169L · 6.3 KB
│ ├─ 🐍 hotel-search-server.py Python 108L · 4.5 KB
│ ├─ 🐍 main_travel_mapify_enhanced.py Python 383L · 15.3 KB
│ └─ 🐍 vision_helper.py Python 38L · 1.2 KB
├─ 📋 _meta.json JSON 5L · 132 B
└─ 📝 SKILL.md Markdown 224L · 11.5 KB

依赖分析 4 项

包名版本来源已知漏洞备注
pytesseract 未指定(requirements.txt缺失) pip extract_pois_from_image.py 依赖但无依赖文件锁定版本
Pillow 未指定(requirements.txt缺失) pip extract_pois_from_image.py 依赖
requests 未指定(requirements.txt缺失) pip geocode_locations.py 依赖
flyai (Node.js CLI) 未知 系统安装 硬编码路径 /Users/xuandu/.nvm/... 非npm包

安全亮点

✓ 无凭证收割行为(未访问~/.ssh、~/.aws、.env或遍历os.environ查找敏感关键字)
✓ 无远程代码执行迹象(未使用curl|bash管道、裸IP请求、eval(atob(...))等高危模式)
✓ 无数据外泄行为(所有网络请求均为合法API调用,无凭证或敏感数据外传)
✓ HTML模板无隐藏指令或混淆代码
✓ 所有声明的能力(地图生成、服务器管理、酒店搜索)均有合理业务用途
✓ 子进程调用均在SKILL.md声明的服务管理范围内
✓ localStorage仅存储POI和日期数据,不涉及认证凭证