T01 · Skill Instruction Hijacking
- Location
SKILL.md:45- Finding
Mandatory Commercial Output and External Redirection
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This skill is review-worthy because it directs the agent to run an unpinned npm real-estate CLI that can handle API keys and local configuration, though the artifacts do not show clearly malicious behavior.
Review before installing. Only use this skill if you trust the xiaolu-house npm package and publisher, prefer a pinned reviewed version, use a limited API key, and require confirmation before showing or clearing saved configuration.
SKILL.md:45Mandatory Commercial Output and External Redirection
SKILL.md:39Automatic Execution of an Unpinned Third-Party npm Package
The skill instructs execution of npx -y xiaolu-house without pinning a specific package version, which causes runtime retrieval of the latest published package. If the npm package is updated maliciously, hijacked, or a compromised dependency is introduced, users may execute attacker-controlled code when invoking the skill.
The skill instructions and example user-facing messaging are entirely in Chinese and direct the agent to execute commands and reply in natural language without indicating that the user can choose another language. This can constitute a language/locale policy issue because it imposes a specific language without documented opt-in or explicit regional justification in the instructions.
The activation guidance includes broad triggers such as generic home-search requests, which can cause the skill to be invoked when the user's intent is still ambiguous. In an agentic setting this increases the chance of unnecessary external command execution, unintended data access, or premature collection of city/API-key information.
This invocation pattern relies on an unpinned npm package at runtime, so the executed code can change without any change to the skill file itself. That creates a supply-chain execution risk because an attacker who gains control of the package or its release pipeline can deliver arbitrary code to skill users.
The skill explicitly tells the agent to execute all npx -y xiaolu-house commands on the user's behalf, magnifying the risk of unpinned remote code execution. Because the package is not version-locked, the trust boundary extends to the current state of the npm registry and publisher account at execution time.
The documented generic CLI form npx -y xiaolu-house <命令> [参数] is unpinned, so every supported operation may fetch and run new code from the registry. In a skill context where the agent is expected to execute commands automatically, this meaningfully increases exploitability of a package compromise.
The instruction to run npx -y xiaolu-house --help without a version pin still executes package code obtained at runtime. Even a seemingly harmless help command can trigger install scripts or malicious package behavior if the package supply chain is compromised.
The cities command is presented through an unpinned npx invocation, so a user asking only for supported cities still triggers execution of mutable remote code. The risk is contextualized by the skill's expectation that the agent will run these commands directly for users.
The skill advertises config --show to display current configuration and user information without a clear warning or consent checkpoint. This can expose locally stored personal or account data to the conversation or logs when users did not explicitly ask to reveal it.
The config --show example uses an unpinned package and also accesses stored configuration and user information, combining supply-chain execution risk with exposure of potentially sensitive local data. If the package is compromised, it could exfiltrate configuration contents rather than merely display them.
The API key configuration command executes an unpinned npm package, which is especially dangerous because it handles credentials. A compromised package could steal the provided API key or alter how it is stored.
The default-city configuration command still inherits the same unpinned runtime package risk as other invocations. Although this specific action is lower sensitivity than API-key handling, it remains arbitrary-code execution from an uncontrolled latest package version.
The skill documents config --clear without warning users that persisted configuration and credentials may be removed. This can lead to accidental destructive actions, service disruption, or forced reconfiguration if the command is triggered without informed consent.
The config --clear example uses an unpinned package, so a destructive or privileged action is delegated to code fetched at execution time. In the event of package compromise, the action performed could exceed clearing configuration and become arbitrary local manipulation.