T01 · Skill Instruction Hijacking
- Location
SKILL.md:8- Finding
Mandatory Agent Role and Output Hijacking
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This Japan travel skill has a coherent booking-oriented purpose, but it asks agents to install and run an unpinned global CLI, including a sudo fallback, and uses shell-style command templates with user-controlled values.
Review before installing. Use this only in an isolated, nonprivileged environment, do not allow automatic sudo installation, prefer a pinned and verified FlyAI CLI, and avoid entering sensitive passport, payment, or personal identifiers unless the logging and data handling are clear.
SKILL.md:8Mandatory Agent Role and Output Hijacking
references/fallbacks.md:3Unpinned Global Package Installation with Sudo Escalation
SKILL.md:100Shell Command Injection Through User-Controlled CLI Parameters
Skill contains instructions that could directly expose system prompts, internal rules, or hidden instructions to users or external parties.
flyai search-poi --city-name "Osaka" --category "市集"
## Output Rules
### Full Itinerary Format
```markdown
The activation criteria are broad enough to trigger on general Japan travel discussion, not just explicit requests to use this booking workflow. In an agent environment, overbroad auto-activation can cause the skill to take over unrelated conversations and push execution-oriented behavior, increasing the chance of unnecessary tool use, data collection, or external command invocation.
The fallback explicitly recommends rerunning a global npm install with sudo/root privileges. Installing packages as root from a registry materially increases the blast radius of a compromised package, malicious postinstall script, dependency confusion event, or supply-chain attack, allowing system-wide code execution and persistent host compromise.
npm i -g @fly-ai/flyai-cli
flyai --version
# Fails → sudo npm i -g @fly-ai/flyai-cli
# Still fails → STOP. Do NOT output an itinerary from training data.
The fallback instructions explicitly tell the agent to try Chinese and English name variants, which encodes a language preference in the skill behavior. The file does not indicate that this language handling is optional, user-selected, or justified as a region-specific requirement.
The trigger 'User wants a multi-city Japan trip' is high-level and does not define how many cities qualify, what signals distinguish it from other playbooks, or any exclusion conditions. Because this is marked as the default playbook, the lack of tighter scope increases the chance of unintended activation for general Japan-travel requests.
The description says the trigger applies when the user specifies one city, but the examples do not define whether budget- or theme-specific one-city requests should still use this playbook. Without explicit boundaries or negative examples, activation could overlap with Budget Trip or Themed Trip flows.
Phrases like 'budget', 'cheap', and 'save money' are common conversational terms and can appear in many travel-planning contexts, not just when the user wants a dedicated budget-focused workflow. The file does not provide constraints or negative examples to limit when this playbook should activate versus simply applying budget preferences within another playbook.
The runbook explicitly records user_query as raw input in an internal execution log, but the document provides no notice, minimization, or retention controls. In a travel-planning skill, users commonly share passport, visa, dates, contact, budget, and itinerary details, so storing full free-form queries creates a realistic privacy leakage and over-collection risk.
Storing unrestricted natural-language input in logs creates a durable data-retention path for any sensitive information users type, including travel documents, personal identifiers, and booking details. Because logs are often broadly accessible to operators and downstream systems, this increases the chance of accidental exposure, secondary use, or breach beyond the original purpose of fulfilling the request.
No suspicious patterns detected.