T01 · Skill Instruction Hijacking
- Location
SKILL.md:8- Finding
Forced Promotional Output and Booking-Link Injection
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This travel-search skill has a coherent purpose, but it needs review because it mandates global third-party CLI installation, suggests sudo, and persists raw travel queries without enough user control.
Install only after reviewing the flyai CLI source/provenance and avoiding automatic global or sudo installation. Prefer a pinned, local, nonprivileged install, validate all travel inputs before command execution, treat booking links as external commercial links, and disable or redact persistent logs containing raw user queries.
SKILL.md:8Forced Promotional Output and Booking-Link Injection
SKILL.md:78Mandatory Unpinned Global Third-Party Package Installation
references/fallbacks.md:3Privilege Escalation Through Automatic Sudo Installation Fallback
SKILL.md:96Shell Command Injection Through Unsanitized Query Interpolation
references/runbook.md:7Unsafe Persistence of Raw User Input Through a Shell Echo Command
Skill contains instructions that could directly expose system prompts, internal rules, or hidden instructions to users or external parties.
flyai search-flight --origin "Shanghai" --destination "Guangzhou" --dep-date 2026-06-15 --dep-hour-start 21 --dep-hour-end 6 --journey-type 1 --sort-type 3
## Output Rules
1. **Conclusion first** — lead with cheapest red eye or key finding
2. **Comparison table** with ≥ 3 results when available
The skill explicitly instructs the agent to run a global package installation (npm i -g @fly-ai/flyai-cli) automatically when the CLI is missing. This causes unreviewed code from an external package registry to be fetched and executed on the host without user consent, which expands the attack surface and can lead to supply-chain compromise or unauthorized system modification.
The fallback instructs the agent to send a free-form query containing origin and destination data to flyai keyword-search without any privacy notice or user approval. Even if itinerary details seem low sensitivity, this still transmits user travel intent to a third-party service in a broader, less structured form than the primary search flow, increasing privacy and data-handling risk.
The fallback explicitly suggests rerunning a package installation with sudo, which encourages elevated-privilege execution of a network-fetched npm package. If the package, its dependencies, or the install path are compromised, this can lead to system-wide code execution or persistence with root privileges.
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.
# Tell user: "Please run npm i -g @fly-ai/flyai-cli manually."
The runbook explicitly requires logging the raw user query (user_query: {raw input}) in an internal execution log, while also stating the log is not shown to users. In a travel skill, user queries may contain names, dates, locations, booking details, passport/visa context, or other sensitive travel data, so collecting and retaining this without clear notice or minimization creates a privacy and data-handling risk.
The runbook instructs appending execution logs to a local file (.flyai-execution-log.json) whenever filesystem writes are available, which can persist previously logged user data on disk. Because the same log schema includes raw user input and operational details, this increases exposure through local compromise, accidental inclusion in artifacts, backups, or broader-than-intended file access.
No suspicious patterns detected.