T01 · Skill Instruction Hijacking
- Location
SKILL.md:40- Finding
Mandatory Version Check, Task Interruption, and Output Control
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This skill does generate ProcessOn mind maps, but it also pushes full document content to ProcessOn, mandates remote version checks and unpinned forced updates, and stores a persistent identifier without clear user control.
Review this skill carefully before installing. It is not classified as malicious, but use it only for documents you are allowed to send to ProcessOn, avoid confidential or regulated content unless your organization approves that service, and do not accept the automatic forced update flow unless you have independently verified the source and version. Be aware that it can store a persistent local partner identifier and may delete Markdown inputs placed under temp or `.agents/cache` paths.
SKILL.md:40Mandatory Version Check, Task Interruption, and Output Control
SKILL.md:40Forced Global Installation from Mutable Remote Sources
scripts/document_to_mindmap_client.py:70Undisclosed Persistent Identifier Stored Locally and Sent to ProcessOn
scripts/document_to_mindmap_client.py:239Complete Document Content Transmitted to an External Service Without a Per-Request Consent Gate
scripts/document_to_mindmap_client.py:177Automatic Deletion of Caller-Owned Markdown Files in Temporary Directories
The manifest presents a content-structuring tool, but the embedded instructions add remote update and code execution behavior not disclosed by that purpose. This mismatch is dangerous because users may provide sensitive documents expecting summarization, while the skill silently performs unrelated operational actions.
The skill mandates shell execution and remote version checks before normal use, even though the advertised function is document-to-mindmap conversion. This expands the attack surface unnecessarily and enables network and command execution paths that are unrelated to the user’s core request.
The skill documentation is written entirely in Chinese and provides no indication that other languages are supported or that Chinese is required for a region-specific reason. This can constitute a language/locale policy violation because the skill appears to impose a specific language without user opt-in.
The README instructs users to install the skill via npx skills add from a GitHub repository without pinning a specific immutable version, tag, or commit. This creates a supply-chain risk because future upstream changes could alter what gets installed, allowing users to fetch unexpected or malicious code if the repository or package path is compromised.
The update command uses npx skills add ... --force -g -y against an unpinned GitHub source, which increases supply-chain exposure because it encourages unattended retrieval and replacement of local skill code from a mutable remote source. If the upstream repository is changed maliciously, users may automatically overwrite a previously trusted installation with compromised content.
The skill uses capabilities that imply file access, network access, and possible file creation/cleanup, but it declares no explicit tool or permission scope. That creates an overbroad trust boundary: a host may permit execution without clear user/admin review of what the skill can access or transmit.
The manifest explicitly limits the skill to knowledge-organization graphics and says it is not for technical diagram generation. Later instructions direct the model to include code blocks, mathematical formulas, and external image placeholders in output, which conflicts with the earlier intent framing of a pure mind-map transformation tool and broadens output semantics beyond the stated restriction.
The activation section says the skill should trigger whenever a request involves broad concepts like structured organization, summarization, knowledge extraction, or framework generation, and the keyword list includes many generic work and study phrases. These descriptions lack clear boundaries or negative examples, so the skill could be invoked for many ordinary requests that do not specifically call for this specialized tool.
The skill requires shell execution and network access before normal operation, but the description does not clearly warn users about those actions. In context, this is dangerous because a document-processing skill may be given sensitive files, and users are not told that operational commands and remote checks happen automatically.
The required update prompt text is hard-coded in Chinese and the skill content generally directs Chinese-language interaction, but there is no opt-in or statement that the skill is intended only for Chinese-speaking users. This can violate language or locale policy expectations when used in broader multilingual environments.
The skill instructs the agent to run npx skills add ... --force -g -y, which fetches and installs remote code without pinning an exact version or immutable commit. This creates a supply-chain risk: if the upstream package/repo changes or is compromised, the agent could execute attacker-controlled code during an update flow.
The skill directs content to a cloud service for mindmap generation, including uploaded documents, webpages, and OCR-extracted image text, but it does not provide a clear privacy warning or consent step. That can result in unintentional exfiltration of confidential or regulated data to a third party.
The client sends user-supplied markdown content to https://smart.processon.com/v1/api/transform/md, which may contain sensitive document text, but the code provides no runtime disclosure, consent prompt, or data-classification check before exfiltrating it off-host. In a document summarization skill, users may reasonably pass internal reports, meeting notes, or proprietary materials, so silent transmission to a third-party service creates a real confidentiality risk even if it is required for functionality.
The code persistently stores a generated or normalized partnerFlag under ~/.processon/partner_flags or the skill directory without notifying the user. Although this value is not a secret in the usual sense, undisclosed persistent identifier storage enables cross-run tracking/correlation and creates a privacy concern, especially when paired with API requests that include the same identifier.
This JSON file contains user-facing preset names such as "现代活力" and "复古单色" only in Chinese. Under the policy, forcing a specific language without user opt-in can be a natural-language locale violation, and the file provides no indication of localization alternatives or a documented Chinese-only scope.