T01 · Skill Instruction Hijacking
- Location
SKILL.md:8- Finding
Forced Third-Party Tool Usage and Commercial Output Hijacking
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This travel skill is not clearly malicious, but it asks the agent to install and run an unpinned third-party CLI, force booking links, and retain raw user queries in local logs without enough user control.
Review this before installing. Use it only if you are comfortable with flyai/Fliggy being the required travel data source, with booking links in results, and with installing a global npm CLI. Prefer a pinned, locally installed CLI, require approval before any install, disable or remove raw-query logging, and avoid passing untrusted user input through shell command strings.
SKILL.md:8Forced Third-Party Tool Usage and Commercial Output Hijacking
SKILL.md:35Automatic Installation of an Unpinned Global npm Package
SKILL.md:67Shell Command Injection Through Unescaped User-Derived Parameters
references/runbook.md:3Undisclosed Persistent Logging of Raw User Queries with Unsafe Shell Serialization
Skill contains instructions that could directly expose system prompts, internal rules, or hidden instructions to users or external parties.
flyai search-poi --city-name "Shanghai" --category "地标建筑"
## Output Rules
1. **Conclusion first** — lead with the key finding
2. **Comparison table** with ≥ 3 results when available
The skill explicitly instructs the agent to run flyai --version and, if missing, to globally install @fly-ai/flyai-cli via npm i -g before proceeding. That modifies the host environment and executes third-party code without requiring explicit user consent, sandboxing, or a trust verification step, creating supply-chain and arbitrary code execution risk on the agent machine.
The playbook hard-codes Chinese-language category values such as "地标建筑", "城市观光", and "文创街区" in its command examples. This imposes a specific language/locale behavior without offering user choice or explaining why a Chinese locale is required, which matches the stated natural-language policy concern.
The runbook explicitly logs user_query as raw input and defines persistent execution logging, which can capture sensitive personal, travel, financial, or identity-related information users may provide. Because this is an internal log not shown to users and there is no retention, minimization, or consent guidance, it creates a realistic privacy and data exposure risk if the file is accessed, backed up, or mishandled.
Taken together, the schema stores natural-language user_query content and the persistence section writes the generated log to .flyai-execution-log.json, creating a direct data retention path for potentially sensitive free-form user text. In a travel skill, users may include passport, visa, itinerary, hotel, payment-adjacent, or location details, so retaining raw queries materially increases privacy, compliance, and secondary disclosure risks.
The runbook instructs the agent to append execution logs to a local file whenever filesystem writes are available, but provides no notice, controls, or safeguards around that persistence. Even if the contents are operational, silent local retention increases the chance that user-related data remains on disk longer than intended and is later exposed through host compromise, log collection, or accidental sharing.
No suspicious patterns detected.