T08 · Insecure Dependencies
- Location
SKILL.md:30- Finding
Unpinned Remote Package Execution in Installation Instructions
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This memory skill is not clearly malicious, but it needs Review because its install/update path, missing bundled engine, and privacy/storage disclosures leave important user-data risks unresolved.
Install only after reviewing the external engine/update source, preferably using a pinned and verified installer instead of @latest or HTTP downloads. Treat saved memories and search questions as sensitive because provider data flow is unclear, and confirm exactly what /forget will delete before using it. Avoid entering a valuable license key until storage permissions and secret handling are improved.
SKILL.md:30Unpinned Remote Package Execution in Installation Instructions
_meta.json:6Update Archive Is Distributed over Unauthenticated Plaintext HTTP
scripts/activate.py:11License Key Is Accepted via Command Line and Stored in Plaintext
A second independent mismatch finding states the skill lacks the core storage, search, knowledge graph, and recall/forget features it claims to provide, while instead performing filesystem setup/check operations. This suggests deceptive packaging or substantial undocumented behavior, which is a strong indicator of trust abuse and possible staging for unwanted local changes.
A second independent mismatch finding states the skill lacks the core storage, search, knowledge graph, and recall/forget features it claims to provide, while instead performing filesystem setup/check operations. This suggests deceptive packaging or substantial undocumented behavior, which is a strong indicator of trust abuse and possible staging for unwanted local changes.
Skill manipulates agent memory, state, or stored context. Memory corruption can alter personality, override safety rules, or cause unpredictable behavior.
- knowledge graph
- memory stats
- forget
- delete memory
- memory engine
- 记住
- 搜索记忆
The README instructs users to run npx clawhub@latest install xiaoshan-memory, which fetches and executes the latest published package version without pinning. If the upstream package is compromised, typosquatted, or a malicious update is released, users may execute attacker-controlled code during installation. In the context of an install command for a memory server skill, this is more dangerous because users are explicitly encouraged to run it locally with full user permissions.
The installation command uses npx clawhub@latest, which fetches and executes the newest published package version at install time rather than a reviewed, pinned release. This creates a supply-chain risk: if the package is compromised or a malicious update is published, users may execute attacker-controlled code simply by following the documented install step.
The skill exposes a deletion capability via /forget and maps natural-language triggers like 删除记忆 to that action, but does not clearly warn that the operation may permanently remove stored memory. In a memory-management skill, ambiguous destructive actions increase the chance of accidental data loss, especially if an agent invokes the endpoint from brief user phrasing without confirmation.
The skill advertises capabilities that imply local state changes and likely file writes, but it does not declare any explicit tool scope or permissions. Missing scope declarations weaken user and platform visibility into what the skill may access, increasing the chance of unintended local file modification or overbroad execution.
Broad trigger words like "remember" and "forget" are common in normal conversation and may activate the skill unexpectedly. In a skill that can save or delete memory, accidental activation can lead to unintended persistence, retrieval, or deletion of user data.
Using npx clawhub@latest install ... --force pulls and executes the latest package version at install time, which is a supply-chain risk because the content can change without review. If the upstream package is compromised or updated maliciously, users may execute untrusted code immediately during installation.
The skill mentions support for external AI providers but does not clearly warn that memory contents, queries, or embeddings may be transmitted off-device. For a memory system, this omission is significant because users may provide sensitive personal or organizational information under the assumption it remains local.
This markdown file documents a /forget endpoint that deletes a memory, but it provides no warning about the destructive nature of the operation or its potential irreversibility. Under the markdown-file criteria, user-facing skill documentation should disclose behaviors that may affect user data or integrity.
The trigger table specifies invocation phrases only in Chinese (for example, "记住 X" and "搜索记忆") with no indication that other languages are supported or that Chinese is a justified locale requirement. This is a natural-language policy concern because it imposes a language constraint without user opt-in or documented justification.
The manifest describes a persistent AI memory engine with semantic search and knowledge graph features, but this file implements license activation state management by storing an activation key in a separate local file. License handling is not an obvious implementation detail of memory storage/search behavior, so the code performs functionality outside the described skill behavior.
The script writes the provided activation key in plaintext to ~/.xiaoshan/activation.json without warning the user or protecting the file contents. If the activation key is sensitive, other local users, malware, backups, or support artifacts could recover it and reuse or abuse the license data.