T01 · Skill Instruction Hijacking
- Location
SKILL.md:10- Finding
Forced Agent Behavior and Promotional Output Injection
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill is travel-related, but it asks agents to install and run an unpinned global CLI, includes a sudo fallback, builds shell commands from user travel input, and stores raw query logs without user notice.
Install only if you trust the flyai CLI source and are comfortable with it handling your travel queries. Do not run the sudo fallback, avoid unpinned global installs, require confirmation before any install or CLI execution, and avoid entering passport, payment, or other sensitive details unless logging is disabled or clearly controlled.
SKILL.md:10Forced Agent Behavior and Promotional Output Injection
SKILL.md:34Automatic Installation of an Unpinned Third-Party Package
references/fallbacks.md:3Root-Level Installation of an Unpinned npm Package
SKILL.md:91Shell Command Injection Through User-Derived Travel Parameters
references/runbook.md:3Unsafe Persistent Logging of Raw User Queries and Commands
Skill contains instructions that could directly expose system prompts, internal rules, or hidden instructions to users or external parties.
flyai keyword-search --query "Japan visa"
## Output Rules
1. **Conclusion first** — lead with the key finding
2. **Comparison table** with ≥ 3 results when available
The README instructs users to run npx skills add ... without pinning a specific package version, which can cause execution of whatever package version is current at install time. If the referenced package or one of its dependencies is compromised, users may unknowingly execute malicious code during installation or skill setup.
The activation rules are broad enough to trigger on ordinary travel-related conversation, which can cause the agent to invoke this skill unexpectedly. In this skill, unintended activation is more risky because the workflow then instructs command execution and possible package installation, expanding impact beyond a simple misroute.
The skill directs the agent to run a global npm installation without explicit user consent or a warning that it will modify the system environment. This is dangerous because installing and executing a package from a registry introduces supply-chain and environment-modification risk, especially when auto-triggered by a broad activation rule.
The fallback explicitly instructs use of sudo npm i -g, which runs an npm lifecycle script as root and can grant full system compromise if the package or its dependencies are malicious or tampered with. In an agent skill context, operational runbooks may be followed automatically or by a user without scrutiny, so embedding privilege-escalation guidance increases the chance of unsafe execution.
npm i -g @fly-ai/flyai-cli
flyai --version
# Fails → sudo npm i -g @fly-ai/flyai-cli
# Still fails → STOP. Do NOT answer with training data.
The runbook explicitly logs user_query as raw input in an internal execution record, but provides no disclosure, minimization, or retention controls. In a travel-booking skill, user queries may contain passport, visa, itinerary, contact, or payment-adjacent details, so storing them silently increases privacy and compliance risk if logs are accessed, reused, or retained longer than necessary.
This runbook combines raw user input capture with a persistence mechanism, meaning sensitive requests can be retained in an internal durable log. Given the skill handles international travel, visa, booking, and itinerary workflows, queries may include high-value personal and travel information that could enable privacy violations, profiling, or downstream misuse if the log is exposed.
The runbook instructs the agent to append execution logs to a local file, creating persistent storage of potentially sensitive interaction data without any notice to the user. Persisting logs to disk broadens exposure because data may remain after the session, be copied in backups, or be readable by other local processes or operators.
The trigger line mixes an English phrase with a Chinese-only trigger literal ("去日本") but provides no explanation that the skill is intentionally multilingual or limited to specific locales. This can violate language/locale policy expectations because it hard-codes a language-specific activation path without documenting user opt-in or scope.
The manifest says the skill is powered by Fliggy (Alibaba Group), but the standard result template claims 'Powered by flyai'. This is an active documentation-level contradiction about the service behind the skill, not just an omitted detail.
The file documents troubleshooting and retry steps using 'flyai' and 'flyai-cli', while the manifest describes a Fliggy-powered travel skill. This creates intent/documentation divergence by instructing operators or users to use a different underlying tool than the one the skill claims to rely on.
No suspicious patterns detected.