T01 · Skill Instruction Hijacking
- Location
SKILL.md:9- Finding
Forced Commercial Output Through Skill Instruction Hijacking
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This travel skill is purpose-aligned overall, but it asks agents to install and run an unpinned external CLI globally, includes a sudo fallback, and persists raw user queries in a risky shell-based log.
Review before installing. Use only in a sandbox or low-privilege environment, avoid sudo, pin and verify the flyai CLI, and do not enable the execution-log persistence unless raw user queries are redacted and written through a safe filesystem API. Expect results to route through flyai/Fliggy booking links rather than neutral multi-provider search.
SKILL.md:9Forced Commercial Output Through Skill Instruction Hijacking
SKILL.md:37Unpinned Global Installation and Execution of a Third-Party CLI
references/fallbacks.md:5Root-Level Installation of an Unpinned NPM Package
references/runbook.md:34Shell Command Injection in Execution-Log Persistence
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 "Beijing" --dep-date 2026-05-01 --dep-hour-start 5 --dep-hour-end 9 --sort-type 6
## 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 alibaba-flyai/flyai-skill/tree/main/skills/early-flights, which references mutable remote content (main) and relies on npx without a pinned version. This can expose users to supply-chain risk if the package resolution or referenced repository content changes, causing installation of unexpected code or a tampered skill.
The fallback instructs operators to globally install a package and then escalate to sudo if it fails, without warning about the risks of running package installation as root. If followed, this could grant a third-party package install script full system privileges, leading to host compromise or unsafe system-wide changes in environments where the CLI or dependency source is tampered with.
The explicit suggestion to run sudo npm i -g executes package installation with root privileges, which is dangerous because npm lifecycle scripts and dependencies can execute code during install. In the context of an agent skill, embedding privileged shell guidance increases the chance that an automated or semi-automated operator will perform unsafe root-level actions on the host.
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 manifest centers this skill on finding the earliest departing flights of the day, sorted by departure time. In this fallback document, the workflow expands into generic keyword travel search and even suggests rail alternatives, which goes beyond the primary described behavior of early-flight discovery.
The documentation first instructs the agent not to search when the date has passed, then immediately instructs it to auto-search tomorrow. Those two directives conflict on whether a search should occur, creating intent ambiguity in the documented behavior.
The trigger list includes the single word "earliest", which is a broad everyday term rather than a narrowly scoped invocation phrase. The file does not provide negative examples or additional constraints to clarify when this playbook should activate versus other flight-related intents.
The runbook schema explicitly includes user_query as raw input in an internal execution log, which can capture personal data, travel details, contact information, or payment-related text users may provide during booking flows. Because the document says the log is not shown to users and provides no notice, consent, minimization, or retention limits, this creates a privacy and compliance risk if logs are stored, accessed, or exfiltrated.
The runbook instructs appending execution logs to a local file, which turns the previously defined sensitive log contents into persistent at-rest data without any user warning. In a travel skill context, persisted logs may contain itinerary details, identifiers, and other sensitive booking-related inputs, increasing exposure through local compromise, backups, multi-user systems, or accidental inclusion in artifacts.
The file defines trigger phrases in both English and Chinese, including "最早" and "10点前到", but does not explain whether multilingual behavior is user-selectable or context-dependent. This can create an implicit language policy or locale assumption without documented opt-in.
No suspicious patterns detected.