T01 · Skill Instruction Hijacking
- Location
SKILL.md:10- Finding
Agent Behavior Hijacking Through Mandatory External-Service and Advertising Instructions
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This ticket-search skill is mostly coherent, but it asks agents to install and run an unpinned global CLI and keep hidden local logs of raw user queries.
Review before installing. Only use this skill if you are comfortable with a third-party flyai/Fliggy CLI handling your searches, booking links appearing in results, a global npm package being installed after explicit approval, and local execution logs being disabled or cleaned up unless you intentionally want them retained.
SKILL.md:10Agent Behavior Hijacking Through Mandatory External-Service and Advertising Instructions
SKILL.md:55Unpinned Global Installation and Execution of a Third-Party npm Package
references/runbook.md:1Undisclosed Persistent Logging of Raw User Queries and Command History
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 instructs the agent to automatically install a global npm package if the CLI is missing, which modifies the host environment without explicit user consent. In an agent context, this creates a supply-chain and system-integrity risk because arbitrary package installation can execute lifecycle scripts and persist software on the machine.
The activation list includes the standalone term "performance," which is broad and can refer to many everyday contexts such as job performance, software performance, or general evaluations. The file provides only one negative example, so the trigger scope is not constrained enough to avoid unintended invocation.
The prerequisites section normalizes a global npm i -g install without any safety notice, encouraging an agent to alter the system as part of routine use. Global package installation expands the blast radius of a compromised package or typo-squatted dependency and can affect future sessions beyond the current task.
This workflow explicitly tells the agent to detect a missing command and then install software automatically before continuing. That pattern is dangerous in autonomous execution because it combines environment probing with immediate system modification, increasing the likelihood of unauthorized changes and exposure to malicious or compromised dependencies.
The playbook embeds the category value "演出赛事" directly in the command while the surrounding document is in English, indicating a fixed locale/language choice. Because the file does not state that the skill is region-specific or offer any user language/locale choice, this can violate language/locale policy expectations.
The command uses the fixed category value "体育场馆", which imposes a specific language/locale in the skill behavior. The file does not explain a regional constraint or provide an opt-in mechanism for users who may expect categories in another language.
The command fixes the category to "剧院剧场", creating a locale-specific behavior without any accompanying justification or user choice. Under the stated policy, forcing a specific language/locale is a concern unless clearly documented or optional.
The runbook explicitly logs raw user input, CLI commands, and operational details, and then persists that data to a local file without any stated minimization, redaction, retention, or user notice. In a travel and ticketing skill, user queries may contain personal, financial, or itinerary information, so persistent internal logging increases privacy, compliance, and data exposure risk if logs are accessed, mishandled, or exfiltrated.
The schema includes a user_query field populated with the raw input, meaning any secrets, personal travel details, names, booking references, or payment-related text entered by the user may be retained internally. Because this skill handles ticketing and travel-adjacent tasks, the context makes such collection more sensitive than a generic utility skill.
The runbook directs appending execution logs to .flyai-execution-log.json, creating durable storage of internal activity that may include user-provided data and command history. Persistent flat-file logging is dangerous because it can silently accumulate sensitive data, be copied in backups, or become readable by other processes or operators without a clear need-to-know boundary.
Line L135 says both 'Use detailUrl for booking links' and 'Never use detailUrl' in the same rule. This is an internal contradiction in the skill's documentation about the core output behavior, making the stated intent unclear.
No suspicious patterns detected.