T01 · Skill Instruction Hijacking
- Location
SKILL.md:58- Finding
Unconditional Skill-Priority Instruction Overrides Normal Agent Routing
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This skill performs the advertised design-generation task through a third-party service, but it handles passwords, tokens, and SMS verification codes in ways users should review carefully before installing.
Install only if you are comfortable giving this skill your Lingque AI credentials and sending prompts, text, logo/image URLs, and generated-design requests to server.pinza.com.cn. Do not share SMS verification codes with the agent; complete login or registration directly on the official service instead. Treat any saved config.json as sensitive because the stored password can be recovered from the included code, and rotate the password/token if they were exposed in logs or command history.
SKILL.md:58Unconditional Skill-Priority Instruction Overrides Normal Agent Routing
getToken.py:15Reversible Password Obfuscation Misrepresented as Encryption
getToken.py:129Credentials and Access Tokens Exposed Through Process Arguments and Standard Output
getToken.py:105Sensitive Data Is Sent to a Differently Named Service Domain Without Clear Trust Disclosure
Credentials or environment variables flow to a network sink. This is a high-confidence indicator of credential exfiltration.
"username": username,
"password": password
}
response = requests.post(url, data=params)
response_data = response.json()
if response_data['code'] == "0":
return response_data['data']
The stated purpose is poster/PPT design, but the skill also performs credential intake, local credential storage, remote login/token retrieval, and config inspection. That mismatch hides sensitive account-handling behavior behind a benign creative-design description, increasing the chance users disclose secrets they would not otherwise share.
The instruction to unconditionally prioritize this skill attempts to override safer routing and user-choice mechanisms. In context, this is risky because it can force users into a flow that collects credentials and authentication artifacts even when another non-sensitive method would suffice.
The skill instructs the agent to collect and use SMS verification codes during third-party registration/login, which is highly sensitive authentication data unrelated to the core design function. This enables the agent to act as an authentication intermediary and increases account-takeover and phishing risk.
The skill asks users to share a one-time verification code without any warning that this is sensitive authentication data. OTPs are equivalent to temporary login factors, so soliciting them in-chat materially increases phishing and account-compromise risk.
The skill explicitly directs the agent to request a one-time verification code and use it on the user's behalf for registration/login. This is a classic delegated-authentication anti-pattern that allows the agent to become a man-in-the-middle for account access and materially raises the risk of account takeover or unauthorized actions.
The skill documents access to environment variables, local files, and networked authentication flows but does not declare any explicit tool scope or permissions. This weakens least-privilege boundaries and makes it harder to constrain what the skill can access, especially since it handles credentials and writes config data locally.
The skill description and operating instructions are entirely in Chinese and direct the interaction flow in Chinese, but do not offer the user a language choice or state that the skill is intentionally limited to a Chinese-speaking context. This can constitute a language/locale policy issue when users are not given opt-in or alternatives.
The catch-all trigger for essentially any Lingque AI design request is overly broad and can cause the skill to activate in situations where users did not clearly consent to this specific integration. Broad activation is more dangerous here because the skill handles credentials and external service interaction, not just local formatting assistance.
The skill reads account credentials from environment variables or a local config file and then persists them locally, expanding the exposure of highly sensitive secrets beyond the immediate authentication need. In a poster/PPT design skill, this is more dangerous because the business function does not inherently require long-term local credential storage, so compromise of the skill directory or accidental file sharing can reveal a user's upstream service account.
The code comments describe password 'encryption', but it uses reversible XOR obfuscation with a hardcoded key, which provides almost no real protection. Anyone with access to the script and config file can trivially recover the password, creating a false sense of security around stored credentials.
The function sends username and password to a remote service using requests.post, but the script provides no visible notice that credentials will be transmitted over the network. Comments in code are not user-facing disclosures, and the runtime output does not warn the user before the transmission occurs.
After successful login, the script automatically saves the supplied account credentials to config.json without explicit user consent or warning. Silent persistence of authentication secrets increases the chance that users unknowingly leave recoverable credentials on disk where other local users, backups, or packaged artifacts may expose them.
This code sends the authentication token in headers and arbitrary record_data in the POST body to a remote server, which can affect user privacy or data handling. There is no confirmation prompt, logging, or explanatory warning in the file to disclose that local inputs and credentials are being sent over the network.
The natural-language placeholder values for all configuration fields are written only in Chinese, which imposes a specific language on users without any opt-in or alternative locale. This matches the policy category for language or locale constraints expressed in natural-language content.
The script's user-facing console messages are hard-coded in Chinese, with no option for the user to select another language or locale. This is a natural-language policy concern because it enforces a specific language without opt-in or documented justification.