T08 · Insecure Dependencies
- Location
scripts/md_to_wechat_html.py:21- Finding
Unpinned Dependencies and Automatic Runtime Package Installation
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill has a coherent WeChat publishing purpose, but it processes user documents, uses account credentials, can send content to external services, and performs unpinned runtime package installation without enough containment or confirmation.
Install only if you are comfortable letting the agent read the selected files, create derived HTML and cover images, use WeChat Official Account credentials, and upload drafts to WeChat. Review generated content before publication, avoid sensitive documents unless intended for upload, and prefer a pinned, preinstalled dependency environment with cloud fallbacks disabled unless explicitly needed.
scripts/md_to_wechat_html.py:21Unpinned Dependencies and Automatic Runtime Package Installation
scripts/md_to_wechat_html.py:64Unsanitized Markdown and Article Title Emitted into Publishable HTML
Mixing characters from multiple Unicode scripts in a single identifier is a common technique to create visually ambiguous tool names.
Mixing characters from multiple Unicode scripts in a single identifier is a common technique to create visually ambiguous tool names.
Mixing characters from multiple Unicode scripts in a single identifier is a common technique to create visually ambiguous tool names.
Mixing characters from multiple Unicode scripts in a single identifier is a common technique to create visually ambiguous tool names.
The skill promises end-to-end conversion and publication of many file types, but the actual capability appears to depend on external tools and another skill for critical phases. This mismatch can cause the agent to invoke the skill under false assumptions, leading to unsafe fallbacks, accidental data handling, or unintended publishing behavior without the controls users expect.
The README promotes direct publishing to the WeChat draft box and instructs users to configure AppID/AppSecret, but it does not clearly disclose that article content and authentication-related data will be sent to an external platform. This is dangerous because users may unknowingly transmit sensitive documents or use production credentials without understanding the trust boundary and privacy implications.
The skill clearly instructs file reads/writes and shell execution, but it declares no tool scope or allowed-tools restrictions. That creates unnecessary ambient authority: an orchestrator may grant broader capabilities than needed, increasing the blast radius if the skill is mis-invoked or its inputs are adversarial.
The regex-style triggers are broad enough to match many ordinary requests about converting or publishing content to WeChat. Overbroad invocation increases the chance that the skill processes or publishes sensitive user content when another, narrower skill would have been more appropriate, especially because this workflow includes file conversion, shell use, and external publication.
The skill instructs converting user files and publishing them to WeChat, and it also mentions a cloud Markdown fallback, but it does not clearly disclose that file contents may be transmitted to external services. This is dangerous because users may provide sensitive documents under the assumption processing is local, leading to unconsented data exfiltration to third-party APIs or the WeChat platform.
The description and tags present the skill as specifically generating WeChat public-account articles in Chinese contexts, and the metadata explicitly includes a "chinese" tag. There is no indication that users may choose another language or locale, which can violate language/locale policy when a specific language is imposed without opt-in.
Auto-installing Python packages during document conversion is unnecessary for the skill's core function and introduces package-management behavior at runtime. This is risky because it performs networked dependency resolution and subprocess execution in the same context as handling user-supplied content, which can lead to supply-chain compromise or unpredictable system changes.
The script executes a subprocess to install a package at runtime whenever markdown is missing. In an agent skill that processes untrusted files, adding package installation and code execution capability expands the attack surface: it relies on external package indexes, permits arbitrary environment mutation, and could execute unintended code through a compromised package source or manipulated Python/pip configuration.
except ImportError:
print("[INFO] Installing markdown...")
import subprocess
subprocess.check_call([sys.executable, "-m", "pip", "install", "markdown", "-q"])
import markdown
from markdown.extensions.tables import TableExtension
from markdown.extensions.fenced_code import FencedCodeExtension
Line L250 instructs the agent to tell the user a fixed Chinese message, which imposes a specific language regardless of user preference. Although the skill targets WeChat, the file also includes English descriptions and does not state that Chinese-only responses are required or offer opt-in language selection.
No suspicious patterns detected.