Back to skill

Security audit

Batch Content Factory

Security checks for vulnerabilities and agentic risk

Overview

This is a small local content template, calendar, and SEO helper with overstated documentation and unnecessary dependency advice, but no hidden network access, persistence, credential handling, or destructive behavior was found.

Installers should treat this as a local template/calendar helper, not a complete content automation system. Avoid the documented pip install unless the publisher adds real dependencies, and use explicit output paths in a working directory so existing files are not overwritten accidentally.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (1)

T08 · Insecure Dependencies

Warning
Location
SKILL.md:57
Finding
Unnecessary and Unpinned Third-Party Dependencies<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md`, lines 57-60 **Vulnerability Type**: Unpinned and unnecessary third-party dependencies **Risk Level**: Medium ### Vulnerable Code ```markdown ## Prerequisites ```bash pip install requests jinja2 markdown ``` ``` The installation instruction is also repeated at `SKILL.md:102`: ```markdown - Please install Python dependencies before first use: `pip install requests jinja2 markdown` ``` ### Technical Analysis The project instructs users to install `requests`, `jinja2`, and `markdown` without pinning versions or verifying package hashes. However, `scripts/content_factory_tool.py` imports only Python standard-library modules and does not use any of these packages. Installing unnecessary, unpinned packages expands the software supply-chain attack surface. Package versions and transitive dependencies may change between installations. If an upstream package, release account, package index, or transitive dependency is compromised, installation could introduce attacker-controlled code into the user's Python environment. This finding does not establish that the named packages are currently malicious. The risk arises from requiring mutable third-party components that are not needed by the implementation. ### Attack Path 1. A user follows the documented prerequisite command. 2. `pip` contacts its configured package index and resolves the latest compatible versions of the three packages and their transitive dependencies. 3. If any resolved distribution or dependency has been compromised, malicious package content is downloaded and installed. 4. Malicious installation hooks, build backends, or imported package code may execute with the privileges of the user running `pip`. 5. The attacker could consequently affect the current Python environment and any files or resources accessible to that user. ### Impact Assessment Successful exploitation would generally provide execution within the security conte ...[truncated 615 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Remove the dependency installation instruction because the current script uses only Python's standard library. 2. Remove the duplicate prerequisite command at `SKILL.md:102`. 3. If future functionality requires third-party packages: - Pin reviewed versions in a dependency or lock file. - Require cryptographic hashes, such as through `pip install --require-hashes`. - Review and lock all transitive dependencies. - Use a dedicated virtual environment with minimal privileges. - Configure an approved package index and avoid untrusted extra indexes. - Add automated dependency vulnerability and provenance scanning. 4. Keep documentation synchronized with actual imports so unused dependencies are not installed. ]]>
Vulnerability Patterns
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
Findings (7)

Tp4

High
Category
MCP Tool Poisoning
Confidence
90% confidence
Finding
The declared description overstates the tool’s functionality. The code is a straightforward command-line helper with three narrow functions: produce platform-specific content scaffolds, generate a basic weekly publishing schedule, and analyze a local file for generic SEO suggestions. Its primary purpose is adjacent to content production, but it falls materially short of an 'entire workflow' automation system and lacks several core declared capabilities such as topic research, true content generation, collaboration, and brand matrix management. There is no suspicious undeclared behavior beyond reading a user-specified file for SEO analysis and optionally writing output files, which is consistent with the implemented commands.

Lp3

Medium
Category
MCP Least Privilege
Confidence
84% confidence
Finding
The skill advertises executable script commands and static analysis detected file read/write capabilities, but the manifest declares no permissions or allowed-tools scope. In an agent environment, missing explicit tool scoping can cause the skill to run with broader-than-expected filesystem access, reducing transparency and weakening least-privilege controls.

Vague Triggers

Medium
Confidence
95% confidence
Finding
The trigger keywords are extremely generic ('content creation', 'copywriting') and likely to match many ordinary user requests. Overbroad activation increases the chance the skill is invoked unintentionally, exposing users to unexpected file operations or script execution in contexts where they did not explicitly request this skill.

Description-Behavior Mismatch

Medium
Confidence
97% confidence
Finding
The module documentation and manifest describe an automated workflow for topic research to content creation, and the CLI advertises commands like 'Generate multi-platform content' and 'Automated Content Creation Tool'. In code, `generate_content` only returns a framework template with a tip explicitly stating that actual content should be generated separately by an AI model, and there is no topic research implementation anywhere in the file.

Intent-Code Divergence

Medium
Confidence
98% confidence
Finding
The function docstring says 'Generate content for the specified platform and topic', and the CLI help for `write` says 'Generate content'. However, the returned body ends with a note that it is only a content framework template and that specific content must be generated separately, directly contradicting the documented behavior.

Natural-Language Policy Violations

Low
Confidence
81% confidence
Finding
The platform configuration prominently targets WeChat, Zhihu, and Xiaohongshu and encodes platform-specific content styles tied to Chinese-language ecosystems, but the file provides no user-facing opt-in or explanation that the skill is region/language specific. This can amount to a locale-policy issue because the skill implicitly steers output toward a specific locale context without documenting that constraint.

Missing User Warnings

Low
Confidence
95% confidence
Finding
The tool writes directly to a user-supplied output path with `Path(args.output).write_text(...)` and no overwrite confirmation, safe-write behavior, or path restrictions. In a local automation or agent context, this can unintentionally overwrite existing files, causing data loss or modification of sensitive workspace content if the path is supplied incorrectly or maliciously.

Static analysis

No suspicious patterns detected.