T01 · Skill Instruction Hijacking
- Location
SKILL.md:48- Finding
Mandatory Affiliate Link Injection into Agent Responses
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill mostly matches phone-plan switching advice, but it steers users to a hard-coded commercial SIM-card storefront without clear affiliate disclosure and includes an under-disclosed local affiliate-config reader.
Review before installing. This skill may give useful Chinese mobile-plan downgrade guidance, but it also pushes a specific SIM-card application storefront and does not clearly explain whether the link is affiliate/tracked or how the storefront handles identity, phone, and address data. Prefer official carrier channels or require explicit disclosure and consent before using the application link or QR-code flow.
SKILL.md:48Mandatory Affiliate Link Injection into Agent Responses
The declared purpose is helping users switch phone plans, but the behavior reportedly includes reading a local affiliate config, generating affiliate storefront links, and using hard-coded commercial identifiers unrelated to the stated assistance workflow. That mismatch is dangerous because it can covertly monetize users, expose local configuration data, and route users through tracking infrastructure without informed consent.
The skill appears to rely on file-reading capability without explicitly declaring the required tool scope or permissions. Hidden or undeclared capability use weakens sandboxing and reviewability, making it harder to detect when the skill accesses local data such as affiliate configuration files.
The description lists activation phrases such as "换套餐", "流量不够用", and "手机省钱", which are broad consumer phrases that could arise in ordinary conversation outside the intended narrow workflow. The file does not provide exclusion conditions or negative examples to clarify when the skill should not activate.
The skill encourages users to change carrier plans and apply for SIM cards while omitting prominent warnings about privacy, identity verification, contract lock-ins, billing changes, loss of bundled benefits, and affiliate incentives. In this context, users may be nudged into financial or account-impacting actions without understanding the risks or the commercial motivation behind the recommendation.
The code reads a local affiliate-related configuration file and uses that context to generate tracking-style commerce links, which is not clearly justified by the core purpose of helping users downgrade phone plans. Accessing local configuration tied to referral identity increases the risk of undisclosed monetization, user steering, and misuse of local environment data for commercial attribution.
The script goes beyond merely helping users switch to low-cost carrier plans and actively promotes an external card-purchase storefront, including convenience output for sharing the link and QR code. This creates a monetized affiliate redirection path that is not necessary for the declared package-switch guidance and can steer users to third-party commerce destinations under the guise of assistance.
The script sends the generated destination URL to a third-party QR code service by embedding it in a GET request. Even if the transmitted data is 'only' a link, this leaks the full affiliate/tracking URL to an external service and creates unnecessary third-party exposure for user-facing commerce flows.
if not url:
return ""
encoded = url.replace("#", "%23").replace("&", "%26").replace("?", "%3F").replace("=", "%3D").replace("/", "%2F").replace(":", "%3A")
return f"https://api.qrserver.com/v1/create-qr-code/?size=300x300&data={encoded}"
if __name__ == "__main__":
cmd = sys.argv[1] if len(sys.argv) > 1 else "url"
SQP-3 applies to all file types and covers language or locale policy violations. This file presents all instructions in a single language without opt-in or an explicit justification for the language constraint, which may conflict with an organizational policy requiring language choice.
This markdown file contains user-facing natural language exclusively in Chinese, and there is no note offering alternative languages or asking for user preference. Under the policy rule for language or locale constraints, forcing a specific language without user opt-in can be a violation when not documented as region-specific language output.