T08 · Insecure Dependencies
- Location
README.md:8- Finding
Unpinned installation from mutable remote sources
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This skill does the advertised Markdown-to-WeChat conversion, but it automatically installs npm packages at runtime and has unsafe file-handling behavior users should review before installing.
Install only if you are comfortable with the skill running npm during conversion and writing/deleting files in the working directory. Prefer a reviewed version that pins dependencies with a lockfile, disables install scripts or installs dependencies during setup, uses a unique OS temp directory, sanitizes generated HTML, and asks before overwriting output files.
README.md:8Unpinned installation from mutable remote sources
scripts/convert.js:11Automatic installation and execution of insufficiently pinned npm dependencies
scripts/convert.js:35Unsanitized Markdown permits active content in generated HTML
scripts/convert.js:24Predictable temporary directory can cause deletion of pre-existing data
The helper dynamically installs packages at runtime by invoking npm through a shell command. This creates unnecessary code execution and supply-chain exposure for a task that is supposed to be a local format conversion, and it can also alter the host environment in ways the user did not explicitly approve.
Running npm install during conversion introduces network access and remote package retrieval unrelated to the core document-processing function. That expands the trust boundary from local files to the npm ecosystem at execution time, enabling supply-chain compromise or unexpected script execution if a dependency or registry path is abused.
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.
The skill explicitly instructs the agent to directly execute a local Node.js script that reads a user-specified Markdown file and writes a user-specified HTML output file, but it provides no safety checks, path restrictions, confirmation step, or warning that filesystem state will be modified. In an agent setting, this creates a real risk of unauthorized file creation or overwriting, especially if a user supplies sensitive paths or if the agent executes commands automatically without adequate sandboxing.
The subprocess invocation is not disclosed to the user even though it may trigger shell execution, package download, and install-time scripts. In a skill whose stated purpose is markdown conversion, this mismatch makes the behavior more dangerous because users are less likely to anticipate or sandbox it appropriately.
The script creates a temporary npm project in the current working directory and mutates local state despite being presented as a simple converter. While not as severe as arbitrary command execution, this hidden filesystem modification can violate user expectations, interfere with surrounding workflows, and serves as enabling behavior for the later package installation.
For markdown files, missing-warning findings apply when the description omits warnings about behaviors that could affect user data or system integrity. The README states that the skill reads Markdown and outputs an HTML file, but it does not explicitly disclose that this involves file creation/writes or where the file will be written.
The operational instructions and prescribed user-facing output are entirely in Chinese, including a fixed Chinese response template, which implies a language constraint. The file does not state that Chinese is optional, user-selected, or required for a documented region-specific reason.
The stylesheet inserts the English word "Reference" via the content property, which forces a specific language in the rendered UI. This can violate locale/language policy when users have not opted into English or when the skill is expected to be language-neutral.
This file is a code/config-like asset, so SQP-3 applies. The font-family includes "Microsoft YaHei" and PingFangSC-Regular, which encode a specific language/locale preference in rendering behavior, but the file provides no user opt-in or documented region-specific justification.
This stylesheet hard-codes the generated label content as "Reference", which imposes a specific language in rendered output. Under the language/locale policy, forcing a locale-specific term without opt-in or documented justification is a natural-language policy concern.
This CSS file contains natural-language comments such as '方案二' and 'Notion 优雅手帐风' only in Chinese, and there is no indication that the skill is intentionally region-specific or that users can opt into this locale. Under the language/locale policy rule, forcing a specific language without user choice can be a policy concern even when it appears in comments or descriptive text.
This CSS file contains natural-language comments in Chinese, including the theme description and section labels, with no indication that the skill is region-specific or that users may choose another language. Under the policy, forcing a specific language without opt-in is a locale/language policy concern.