Back to skill

Security audit

AI Copywriting Generator

Security checks for vulnerabilities and agentic risk

Overview

This is a straightforward Chinese marketing copy generator that uses an external OpenClaw LLM API, with ordinary privacy and dependency-supply-chain cautions but no hidden or destructive behavior found.

Install in a virtual environment, consider pinning the openclaw package version, and do not submit confidential product plans, customer information, or unreleased campaign details unless OpenClaw's data-handling terms are acceptable for your use.

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:24
Finding

Unpinned Third-Party Dependency Installation

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 24-27
Vulnerability Type: Unpinned and unverified third-party package installation
Risk Level: Medium

bash
### Installation
```bash
pip install openclaw
text

### Technical Analysis

The documented installation command retrieves the `openclaw` package from pip's configured package index without specifying an exact version, cryptographic hash, lockfile, or verified source repository. Consequently, the installed code can change independently of this project's reviewed contents.

Python packages may execute package-controlled logic during installation, import, or runtime. The dependency is imported by `copywriting_gen.py` and receives the configured API key and user-supplied prompt data. A compromised package release, package-index account, or package source could therefore introduce arbitrary code that is not visible in this repository.

This finding establishes a supply-chain exposure; it does not establish that the current `openclaw` package is malicious.

### Attack Path

1. An attacker compromises the package publisher account or otherwise causes a malicious release to be distributed under the expected package name.
2. A user follows the documentation and runs `pip install openclaw`.
3. Because no version or hash is enforced, pip resolves and installs the attacker-controlled release.
4. Malicious package logic executes during installation, import, client initialization, or an API request.
5. The malicious dependency can access data and resources available to the Python process, including `OPENCLAW_API_KEY`, generated prompts, local files permitted to the user, and network access available in the environment.

### Impact Assessment

Successful exploitation could allow arbitrary code execution with the privileges of the user or service account performing installation or running the generator. The affected scope can include theft of the OpenClaw
...[truncated 319 chars]
Remediation
View remediation

Remediation Suggestions

  1. Pin the dependency to an exact, reviewed version rather than installing the latest available release:
    bash
    pip install openclaw==<reviewed-version>
    
  2. Generate a requirements or lock file containing cryptographic hashes and install with hash verification:
    bash
    pip install --require-hashes -r requirements.txt
    
  3. Document the package's verified publisher and canonical source repository so users can validate its provenance.
  4. Review dependency artifacts before upgrades and use automated supply-chain scanning for known vulnerabilities, malicious releases, and unexpected ownership changes.
  5. Install and run the package in an isolated virtual environment or container under a non-privileged account.
  6. Restrict runtime credentials and network access to the minimum necessary. Use a narrowly scoped API key and rotate it if dependency compromise is suspected.
  7. Establish a controlled update process in which dependency version and hash changes receive security review before deployment.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
Findings (4)

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The skill is presented entirely as a Chinese copywriting generator and all listed use cases, examples, and outputs are oriented toward Chinese-language marketing platforms and Chinese content creation. Because the description does not state that users can choose another language or that the Chinese locale is an intentional region-specific constraint, it appears to impose a language preference without explicit opt-in.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
84% confidence
Finding

Natural-language strings, prompts, CLI descriptions, and generated-output instructions are all hardcoded in Chinese, and the prompt explicitly directs the model's behavior in that locale context. The file does not offer an opt-in language selection or explain that the tool is intentionally limited to a Chinese-speaking or region-specific use case.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The generate() method sends user-provided product name, features, target audience, and other prompt content to an external LLM API without any explicit notice, consent flow, or data-handling warning. This can expose potentially sensitive business, customer, or campaign information to a third-party service and is especially risky because the transmission is automatic and not clearly disclosed in the CLI UX.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The optimize_title() function sends the user-supplied title to the same external API without informing the user that their content leaves the local environment. If titles contain confidential product plans, unreleased campaign names, or customer information, this creates an avoidable privacy and confidentiality exposure.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.