Back to skill

Security audit

FB Ads Copywriter Pro

Security checks for vulnerabilities and agentic risk

Overview

This is a small Chinese-language marketing prompt generator with some documentation and dependency quality issues, but no hidden, destructive, persistent, or data-stealing behavior was found.

Before installing, treat this as a Chinese-language prompt/template generator rather than a complete AI copywriting system. Install dependencies only in an isolated environment, consider pinning or removing the openai dependency until real API generation is implemented, and avoid submitting confidential marketing material if future API integration is added without clear privacy disclosure.

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
requirements.txt:1
Finding

Unpinned and Unnecessary Third-Party Dependency

Content
View full analysis
=1.0.0 ``` ### Technical Analysis The dependency specification permits pip to install any available `openai` release at or above version 1.0.0. The project provides neither an exact version pin nor cryptographic hashes, so installations are not reproducible and future releases are not covered by this audit. The documented installation process runs: ```bash pip install -r requirements.txt ``` The risk is increased because the dependency is not required by the Skill's implemented functionality. `scripts/copywriter.py` imports `OpenAI` conditionally, but the script makes no API or network request and only returns locally constructed prompts with a `ready_for_api` status. Installing and importing this package therefore expands the supply-chain attack surface beyond the minimum privileges and components necessary for the current functionality. This is not evidence that the legitimate `openai` package is malicious. Exploitation requires a compromised release, compromised or misconfigured package index, malicious dependency substitution, or another supply-chain failure. ### Attack Path 1. An attacker compromises a future compatible package release or causes a malicious artifact to be served through the package index configured on the victim's system. 2. A user follows the README and executes `pip install -r requirements.txt`. 3. Because `openai>=1.0.0` accepts future versions and no hashes validate the artifact, pip resolves and installs the attacker-controlled package or artifact. 4. Malicious code may execute during source-package build or installation, depending on the artifact. 5. Even if installation does not execute th ...[truncated 830 chars]
Remediation
View remediation
``` 3. Generate and commit a lock file containing exact transitive dependency versions. 4. Require cryptographic hashes during installation, such as with a hash-locked requirements file and `pip install --require-hashes`. 5. Use only an explicitly configured, trusted package index and prevent unintended fallback to untrusted indexes. 6. Install dependencies in an isolated, non-privileged virtual environment or container. 7. Add automated dependency vulnerability and provenance scanning to the release process. 8. Review dependency updates before changing the lock file rather than automatically accepting every future compatible release. ]]>
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (9)

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The file's user-facing natural-language content is entirely Chinese, including the title, description, usage guidance, and examples. Under the policy, forcing a specific language without giving users a choice or documenting a justified locale constraint is a natural-language policy violation.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The manifest presents the skill name, description, and features entirely in Chinese, with no indication that users can choose another language or that the skill is intentionally limited to a Chinese-speaking audience. This can violate language/locale policy expectations because the skill appears to impose a specific language without opt-in or justification.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

文件头文档字符串和 L228 的命令行描述都将该技能表述为可生成广告、社交媒体和邮件营销内容的 AI 生成器,但 generate_copy 的实际实现只返回 prompt 和 ready_for_api 状态,不产生任何文案结果。这种文档/描述与代码当前能力的落差会让调用方误以为技能已具备实际生成能力。

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The file-level description and all generation templates are written to produce Chinese marketing copy by default, and the CLI does not offer any language or locale selection. This creates a language/locale policy issue because the skill implicitly forces Chinese output rather than letting the user choose or documenting a justified regional constraint.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

L205-L206 的注释表述该处只是模拟,暗示真实实现会调用 API 生成文案;但当前代码实际行为仅构造 prompt,并在结果中返回 status: ready_for_api,没有执行任何生成操作。这使代码文档对当前实现能力产生误导,属于注释意图与实际代码行为不一致。

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
88% confidence
Finding

SQP-3 applies to all file types and includes language or locale policy violations. The file presents the skill name, instructions, examples, and feature descriptions entirely in Chinese, with no opt-in, alternative language, or statement that the skill is intentionally China-region-specific.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
81% confidence
Finding

This is a markdown file, so SQP-2 applies to missing warnings in the skill description. Line L077 announces real-time API integration, but the README does not disclose that user-provided marketing content may be transmitted to a third-party model provider, which is a privacy-relevant behavior.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
82% confidence
Finding

This file includes natural-language comments entirely in Chinese, which may impose a language expectation on maintainers or users without any opt-in or explanation. The policy requires flagging language or locale constraints when a specific language is effectively forced without user choice.

Content

No source excerpt is available for this finding.

Unpinned Dependencies

Low
Category
Supply Chain
Confidence
91% confidence
Finding

The dependency specification openai>=1.0.0 is unpinned, allowing future major or minor releases to be installed without review. This can introduce supply-chain risk, unexpected breaking changes, or vulnerable versions into the environment if upstream packages are compromised or regress in security.

Content

Scanner excerpt · requirements.txt (reported line 4)May include surrounding context.

text
# Copywriter 营销文案生成器依赖

# OpenAI 兼容客户端(用于 Qwen 等模型)
openai>=1.0.0

# 命令行参数解析(Python 3.8+ 内置 argparse)
# argparse

Static analysis

No suspicious patterns detected.