T08 · Insecure Dependencies
- Location
SKILL.md:42- Finding
Unpinned Remote Package and Skill Installation
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill does generate ProcessOn mind maps, but it also performs under-scoped cloud uploads, persistent identifier tracking, and unpinned global self-update actions that users should review before installing.
Install only if you are comfortable sending the document text you summarize to ProcessOn's cloud service and being correlated by a persistent local partner identifier. Avoid using it on confidential, regulated, or proprietary material unless your organization approves that data flow, and do not accept automatic updates unless you have reviewed the exact source version being installed.
SKILL.md:42Unpinned Remote Package and Skill Installation
scripts/processon_mindmap_client.py:14Undisclosed Persistent Identifier Enables Cross-Session Request Correlation
The trigger conditions are so broad that the skill may activate for many generic summarization or organization tasks, not just explicit mind-map requests. In context, that is dangerous because the skill also performs network actions and cloud submission, so over-triggering can cause unexpected data transfer and privileged behavior on unrelated user content.
The open-ended keyword list includes many common productivity phrases, making accidental invocation likely during ordinary work tasks. Because this skill later instructs external transmission and shell-assisted workflows, broad matching materially increases the chance of unintended exposure of user content.
The skill requires executing shell commands for remote version checks and package installation, even though those actions are not necessary to generate mind maps. This grants command execution and remote code retrieval pathways that could be abused for arbitrary command execution, persistence, or supply-chain compromise.
The skill directs submission of user-provided markdown and derived content to a cloud service, but does not require a prominent upfront notice or consent for remote data transfer. In a summarization skill, users may provide sensitive documents, meeting notes, or internal materials, so silent transmission to a third-party service materially increases confidentiality risk.
The README instructs users to install the skill directly from a remote GitHub repository using npx skills add without pinning to a specific commit, tag, or immutable version. This creates a supply-chain risk: if the upstream repository is changed, compromised, or force-pushed, future installs may fetch different code than originally reviewed.
The update command uses npx skills add ... --force -g -y against an unpinned remote repository, which increases supply-chain exposure by encouraging unattended replacement of the installed skill with whatever code is currently upstream. If the repository is compromised, users may automatically install malicious updates without noticing.
The skill invokes shell commands, reads files, writes temporary files, and performs network access, but the manifest does not declare any explicit tool scope or allowed-tools restrictions. That mismatch weakens least-privilege controls and makes it easier for the skill to gain broader execution capability than users or the host may expect.
The skill instructs automatic outbound access to GitHub on every use without clearly informing the user that a network request will occur. Even if the request is only for version metadata, it still creates undisclosed external communication and may leak usage patterns or environment information.
A mind-map generation skill should primarily transform user content, but these instructions add version probing and self-update logic that is outside the declared functional scope. Expanding behavior beyond the advertised purpose increases the attack surface and can normalize privileged actions that users did not request.
The instructions prescribe a fixed Chinese message to present to users when a new version is found. This forces a specific language for user-facing communication without opt-in or locale selection, which is a natural-language policy concern for a general-purpose skill.
The instruction to run npx skills add https://github.com/processonai/processon-skills.git --skill processon-mindmap-generator --force -g -y installs or updates code from a remote source without pinning a specific version or commit. This creates a supply-chain risk: if the upstream repository changes or is compromised, the agent may fetch and execute unexpected code.
The client sends user-supplied Markdown content, title, theme, structure, and a persistent partnerFlag to an external ProcessOn API over the network, but the code provides no explicit runtime warning, consent prompt, or data-classification notice before transmission. In a skill designed to process arbitrary documents and notes, this can cause unintended disclosure of sensitive internal text, credentials, personal data, or proprietary material if users assume processing is local.
The skill documentation is written entirely in Chinese and does not indicate that users may interact in other languages or that the skill is intentionally limited to a Chinese-language audience. Under the policy, forcing a specific language without user opt-in is a natural-language policy concern.
Line L078 says the final result must be pure Markdown content with no explanatory wrappers or extra output. Later, lines L156-L165 require presenting a Markdown code block as well as full online-view and image links, which directly contradicts the earlier instruction about the final output format.
The script includes user-facing argparse description and help text entirely in English, while other comments/docstrings in the file are in Chinese, indicating a mixed-language context. Because the tool does not offer any language or locale choice, it effectively imposes a specific language on users without opt-in.
This JSON manifest contains user-facing preset names such as "现代活力" and "极简黑白" exclusively in Chinese. Under the policy, forcing a specific language without user choice or documented locale scope is a natural-language policy concern.