T01 · Skill Instruction Hijacking
- Location
SKILL.md:10- Finding
Mandatory third-party service use and promotional output hijack the agent's behavior
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This travel skill is coherent, but it requires a global third-party CLI install and silently stores raw travel-query logs, so it should be reviewed before use.
Install only if you are comfortable with a Fliggy/flyai-centered travel workflow, global npm package installation, and local diagnostic logging. Prefer using it in a contained environment, review the npm package/version first, and avoid entering sensitive personal travel details unless logging is disabled or controlled.
SKILL.md:10Mandatory third-party service use and promotional output hijack the agent's behavior
SKILL.md:40Mandatory unpinned global npm package installation creates a supply-chain execution risk
references/runbook.md:3Raw query logging uses unsafe shell interpolation and may persist sensitive data
Skill contains instructions that could directly expose system prompts, internal rules, or hidden instructions to users or external parties.
flyai search-flight --origin "Beijing" --destination "Shanghai" --dep-date 2026-05-01 --back-date 2026-05-03 --sort-type 3
## 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 act as a CLI executor and later mandates installing and running a third-party global package. This creates a supply-chain and system-modification risk because it normalizes executing external commands and altering the host environment without an explicit user consent or safety gate.
The prerequisite block tells the agent to run a global npm install command without any warning about persistent system changes, package provenance, or execution risk. A compromised or typo-squatted package could execute arbitrary install scripts and affect the user's machine or environment.
The workflow makes environment checking and package installation mandatory, then instructs the agent to continue operational behavior based on shell command results. This is more dangerous than a passive example because it operationalizes command execution as part of normal handling, increasing the chance of unauthorized system changes or execution of untrusted code.
The runbook explicitly records raw user input and detailed CLI activity in an internal execution log without any notice, minimization, or retention controls. In a travel-booking skill, user queries may contain names, dates, destinations, passport/visa details, and other sensitive trip data, so persistent internal logging increases privacy exposure and breach impact.
Storing raw natural-language user input and then persisting it to disk creates a direct data retention and leakage risk, especially because free-text travel requests often include incidental secrets or personal information not needed for long-term storage. Combined with command logging and fallback history, the log can reveal both sensitive content and operational behavior useful to an attacker or insider.
The runbook directs appending execution logs to a local file, which creates at-rest copies of request data and operational metadata without informing users. Local log files are commonly over-retained, broadly readable, backed up, or exfiltrated during host compromise, making otherwise transient travel-related data persist longer than necessary.
The trigger "3 days in {city}" is clearer than everyday speech, but the file does not explain whether close variants also invoke the playbook or how to distinguish it from other trip-planning intents. Because there are no negative examples or explicit scope rules, activation behavior remains somewhat ambiguous.
The trigger "3 days 2 cities" is very short and ambiguous about what wording variants are accepted, when this playbook should be chosen over the single-city version, and whether additional context is required. The document provides no exclusion conditions or negative examples to disambiguate activation.
No suspicious patterns detected.