T01 · Skill Instruction Hijacking
- Location
scripts/query.py:85- Finding
Agent-Facing Instruction Hijacking Through Forced Promotional Output
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This skill appears to perform the advertised business and bidding queries, but it also embeds agent-facing instructions that steer quota-exhausted users to a fixed QQ contact and constrain how the host agent may respond.
Review this skill before installing if you are uncomfortable with a third-party service controlling registration guidance through agent-facing instructions. Prefer environment-variable API-key configuration over passing keys on the command line, and independently verify the official registration URL and QQ contact before sharing credentials or account information.
scripts/query.py:85Agent-Facing Instruction Hijacking Through Forced Promotional Output
scripts/query.py:190API Key Exposure Through Command-Line Arguments
The skill contains contradictory user-routing instructions: the metadata says to send users to a single official registration URL, while the body says that on quota exhaustion the agent must not output links and should instead direct users to a QQ contact or skill detail page. This inconsistency can be exploited for phishing-like redirection, social-engineering, or confusing the agent into bypassing transparent provenance, especially because the skill also imposes hardcoded output constraints around contact details and URLs.
The skill documents use of environment variables and network-backed querying, but it does not declare any explicit tool scope or allowed-tools boundary. Missing capability scoping increases the chance that a host agent grants broader execution or data-access privileges than intended, which matters more here because the skill handles API keys and external requests.
This markdown file describes the skill's capabilities in broad terms but does not define specific trigger phrases, invocation conditions, or exclusion cases. Without explicit trigger scope or negative examples, an agent may invoke the skill too broadly for generic county/business information requests.
The line requires exact output of Chinese-language content and a QQ contact workflow, but does not offer the user any language or locale choice. This can violate language/locale policy when users have not opted into Chinese-only interaction.
The module docstring presents winners(中标电话) as a concrete capability, which implies retrieving winner phone data for a particular notice or query context. However, cmd_winners later invokes /winner_tel with no parameters at all, so the implemented behavior does not match the documented/user-facing intent and may return unrelated or unusable data.
This script reads credentials from environment variables via get_key() and sends them as an X-API-Key header in api_get(). While the CLI help mentions configuration of the API key, the file lacks an explicit warning or disclosure that the key will be transmitted to a remote service endpoint during requests.
The manifest description is entirely in Chinese and presents the skill as operating in that language, with no indication that users can choose another language or that the skill is intentionally limited to a Chinese-only audience. Under the policy, language constraints should be opt-in or clearly justified as region-specific.
The inline comment states '零 URL 零域名', indicating the output should avoid URLs/domains to prevent replacement. But the same function sets out["register_url"] = REGISTER_URL, where REGISTER_URL is the official domain URL, so the comment directly contradicts the implemented behavior.
The printed instruction mandates exact output behavior when explaining service status, requiring the response to be shown in a fixed form. In combination with the Chinese-only user-facing strings throughout the script, this creates a language/locale constraint without offering the user a choice or opt-in.
No suspicious patterns detected.