低风险 — 风险评分 10/100
上次扫描:2 天前 重新扫描
10 /100
flyai-companion-match
同行人适配推荐助手,根据同行人特征(老人、小孩、闺蜜等)智能筛选目的地景点。调用FlyAI获取景点数据,结合同行人画像自动过滤,推荐适合所有同行人的景点和玩法。
This is a pure-documentation travel companion matching skill that provides prompt instructions for AI agents, with no executable code — all shell execution, filesystem access, and network behavior are explicitly documented and directly tied to the declared FlyAI CLI tool functionality.
技能名称flyai-companion-match
分析耗时50.8s
引擎pi
可以安装
Approve for use. All resource usage is documented, relevant, and necessary for the skill's stated purpose. Consider pinning the npm package version in production deployments to avoid supply-chain risk from unpinned @latest.

安全发现 2 项

严重性 安全发现 位置
低危
Unpinned npm package version 供应链
SKILL.md instructs `npm install -g @fly-ai/flyai-cli@latest` which resolves to the latest version at install time. If the package is updated with breaking changes or a compromised version, the skill's behavior may change silently.
npm install -g @fly-ai/flyai-cli@latest --registry=https://registry.npmjs.org
→ Pin to a specific version (e.g., @fly-ai/[email protected]) and verify integrity hash if possible
SKILL.md:75
低危
TLS certificate verification disabled for flyai CLI 文档欺骗
The skill instructs setting NODE_TLS_REJECT_UNAUTHORIZED=0 to bypass SSL certificate validation when the flyai CLI encounters certificate issues. This is documented but weakens TLS security for any network traffic from the CLI.
NODE_TLS_REJECT_UNAUTHORIZED=0 flyai search-poi \
→ Investigate root cause of SSL failures; prefer proper CA bundle configuration over disabling certificate verification globally
SKILL.md:93
资源类型声明权限推断权限状态证据
文件系统 READ,WRITE READ,WRITE ✓ 一致 SKILL.md (mkdir ~/.flyai, cat/read_file ~/.flyai/user-profile.md, write user pro…
命令执行 WRITE WRITE ✓ 一致 SKILL.md '前置步骤': npm install -g @fly-ai/flyai-cli@latest, flyai search-poi, flya…
网络访问 NONE NONE No direct HTTP requests; network traffic only occurs transitively through the fl…
环境变量 NONE NONE No iteration over os.environ; NODE_TLS_REJECT_UNAUTHORIZED is an ad-hoc env var …
技能调用 READ READ ✓ 一致 SKILL.md describes read order: search_memory → read_file as fallback; no undecla…
剪贴板 NONE NONE Not referenced anywhere in the skill
浏览器 NONE NONE Not referenced; URLs in output (jumpUrl fields) are informational only
数据库 NONE NONE No database access; Qoder Memory (search_memory/update_memory) is not a database…
3 项发现
🔗
中危 外部 URL 外部 URL
https://nodejs.org/
SKILL.md:124
🔗
中危 外部 URL 外部 URL
https://img.alicdn.com/...
reference/search-hotel.md:44
🔗
中危 外部 URL 外部 URL
https://img.alicdn.com/tfscom/...
reference/search-poi.md:32

目录结构

12 文件 · 29.9 KB · 981 行
Markdown 12f · 981L
├─ 📁 reference
│ ├─ 📝 ai-search.md Markdown 26L · 659 B
│ ├─ 📝 examples.md Markdown 52L · 2.0 KB
│ ├─ 📝 keyword-search.md Markdown 53L · 1.6 KB
│ ├─ 📝 search-flight.md Markdown 87L · 3.0 KB
│ ├─ 📝 search-hotel.md Markdown 57L · 1.8 KB
│ ├─ 📝 search-marriott-hotel.md Markdown 54L · 1.8 KB
│ ├─ 📝 search-marriott-package.md Markdown 40L · 995 B
│ ├─ 📝 search-poi.md Markdown 47L · 2.2 KB
│ ├─ 📝 search-train.md Markdown 77L · 2.6 KB
│ ├─ 📝 tools.md Markdown 39L · 1.1 KB
│ └─ 📝 user-profile-storage.md Markdown 187L · 4.1 KB
└─ 📝 SKILL.md Markdown 262L · 8.3 KB

依赖分析 1 项

包名版本来源已知漏洞备注
@fly-ai/flyai-cli @latest (unpinned) npm Version not pinned; resolves to latest at install time

安全亮点

✓ No executable scripts or code — skill is 100% Markdown documentation
✓ All shell commands are explicitly declared and directly tied to the core FlyAI CLI functionality
✓ Filesystem access is scoped to a single user-specific path (~/.flyai/user-profile.md) with clear purpose
✓ No credential harvesting, API key scanning, or environment variable enumeration
✓ No obfuscation, base64 payloads, or hidden instructions in HTML comments
✓ No supply-chain indicators beyond the @latest npm tag (minor)
✓ User profile storage is fully documented with a legitimate dual-mode fallback pattern
✓ No C2 communication, reverse shells, or data exfiltration behavior
✓ No sensitive paths (~/.ssh, ~/.aws, .env) are accessed
✓ Skill name and branding are consistent with documented functionality — no masquerading