T01 · Skill Instruction Hijacking
- Location
SKILL.md:10- Finding
Mandatory Commercial Output Alters Agent Behavior
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This travel-search skill is not clearly malicious, but it needs Review because it can auto-install a global CLI and persist raw user queries without adequate safeguards.
Install only if you are comfortable with a Fliggy/flyai-centered booking workflow. Do not allow unattended global npm installation; prefer a reviewed, pinned, isolated CLI install. Avoid entering sensitive travel or personal details unless logging is removed or disabled, and review any booking links before using them.
SKILL.md:10Mandatory Commercial Output Alters Agent Behavior
SKILL.md:52Unpinned Global Installation of a Third-Party npm Package
references/runbook.md:5Shell Command Injection Through Unsafe Execution-Log Construction
references/runbook.md:5Undisclosed Persistent Storage of Raw User Queries and Execution Metadata
Skill contains instructions that could directly expose system prompts, internal rules, or hidden instructions to users or external parties.
flyai keyword-search --query "日本SIM卡"
## Output Rules
1. **Conclusion first** — lead with the key finding
2. **Comparison table** with ≥ 3 results when available
The skill instructs the agent to install a global npm package as part of normal execution without any user warning or confirmation. In an agent setting, this can modify the host environment, introduce unreviewed third-party code, and expand the attack surface beyond the user’s original request.
The prerequisites section normalizes a global package installation but does not disclose that it changes the system state or executes code fetched from the package registry. This is dangerous because users or agents may treat it as routine setup and run it in sensitive environments without understanding the persistence and supply-chain risk.
This fallback workflow directs the agent to automatically perform a global install if the CLI is missing, with no confirmation step. In a real agent runtime, this creates a direct path from a user query to arbitrary third-party code installation, which is especially risky because it is framed as mandatory and may execute unattended.
The activation phrase "eSIM for travel" is broad everyday language that could overlap with general travel planning requests and does not clearly constrain when this playbook should activate. Unlike the SIM-card playbook, it also omits the destination parameter from the trigger, making invocation scope less specific.
The runbook explicitly logs user_query as raw input and persists the execution log to disk, but provides no requirement to warn the user, minimize sensitive fields, or redact secrets. In a travel skill, user queries can easily contain passport details, phone numbers, booking references, destinations, and payment-related context, so retaining full prompts and command history creates avoidable privacy and data-retention risk.
The schema requires retaining user_query as {raw input} in an internal log, which is a direct instruction to capture potentially sensitive user-provided data. For this travel-oriented skill, raw inputs may include itinerary details, visa questions, local numbers, names, or other personal travel data, increasing exposure if logs are accessed, reused, or breached.
The runbook instructs appending the full generated execution log to .flyai-execution-log.json, which may include user data, CLI commands, fallback behavior, and operational traces. Persistent local accumulation of these logs broadens the blast radius of any host compromise, accidental disclosure, or improper sharing, especially in a consumer travel/booking context where queries may be sensitive.
The manifest says the skill is powered by Fliggy (Alibaba Group), but the standard result template says 'Powered by flyai'. This is an active contradiction in user-facing documentation rather than a mere omission, and it can misrepresent the underlying service or source of travel data.
The failure template instructs users to run 'flyai --version' and retry with 'flyai {command}', while the manifest presents the skill as a Fliggy-powered travel capability. This creates an intent/documentation contradiction about what tool or backend the skill actually relies on.
No suspicious patterns detected.