Back to skill

Security audit

Brand Marketing Workflow

Security checks for vulnerabilities and agentic risk

Overview

The skill mostly matches a brand-marketing workflow, but it needs review because it reads local OpenClaw credentials and includes under-disclosed messaging and external-analysis behavior.

Review this before installing if you do not want the skill reading ~/.openclaw/openclaw.json, sending prompts and brand context to configured LLM providers, fetching competitor pages through Jina/Brave, or carrying an unused local Telegram/Feishu gateway sender. It should be treated as draft-oriented marketing automation, not as a fully hardened publishing or competitive-intelligence system.

Vulnerability Patterns
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • 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)

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/competitor_ai_analyzer.py:68
Finding

Untrusted competitor content is directly embedded in an LLM instruction prompt

Content
View full analysis
tuple[str, str]: """通过 jina.ai reader 获取页面文本。返回 (text, jina_url)。""" jina_url = f"https://r.jina.ai/{url}" text = _http_get(jina_url) return text, jina_url ``` ```python def _build_prompt(competitor_name: str, raw_text: str, source_type: str, brand_summary: str) -> str: """构建竞品分析 prompt。""" return f"""你是品牌竞争情报分析师。分析以下竞品公开内容,提取营销信号。 竞品名称:{competitor_name} 品牌背景(你的品牌,作为参照):{brand_summary} 竞品原始内容(来源:{source_type}): {raw_text} 请用 JSON 格式输出,只含以下字段(全英文,不要中文值): {{ "theme": "主题定位(1-3英文词,如 minimalism / productivity-platform / lifestyle-brand)", "tone": "内容语气(2-4英文词)", "frequency": "内容频率估计(daily/weekly/irregular)", "hooks": ["钩子1", "钩子2", "钩子3"], "content_patterns": ["模式1", "模式2", "模式3"], "channel_strength": ["渠道1", "渠道2"], "gaps": ["弱点/差异化机会1", "弱点2"] }} 只输出 JSON,不要其他说明文字。""" ``` ```python prompt = _build_prompt(competitor_name, raw_text, source_type, brand_summary) try: llm_response = llm_complete( prompt=prompt, model=ANALYSIS_MODEL, max_tokens=ANALYSIS_MAX_TOKENS, ) analysis = _parse_llm_json(llm_response, competitor_name) ``` ### Technical Analysis The workflow retrieves content controlled by competitor websites or search-result publishers and places it directly into the same prompt that contains the model's operational instructions. There is no strong trust-boundary declaration, instruction-conflict policy, content encoding, or preprocessing step that removes instruction-like text. An attacker controlling a fetched page can insert text such as instructions to ignore t ...[truncated 2319 chars]
Remediation
View remediation
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • System Prompt LeakageDirect Leakage, Indirect Extraction, Tool-Based Exfiltration
  • Tool MisuseTool Parameter Abuse, Chaining Abuse, Unsafe Defaults
Findings (60)

Tp4

High
Category
MCP Tool Poisoning
Confidence
93% confidence
Finding

A narrow placeholder scoring function presented as a complete closed-loop system is misleading and can cause incorrect operational reliance, but by itself is less directly dangerous than hidden payment, login, or messaging behavior. The main risk is deceptive capability representation and the possibility that additional undeclared functions are being obscured.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
94% confidence
Finding

A narrow placeholder scoring function presented as a complete closed-loop system is misleading and can cause incorrect operational reliance, but by itself is less directly dangerous than hidden payment, login, or messaging behavior. The main risk is deceptive capability representation and the possibility that additional undeclared functions are being obscured.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

A narrow placeholder scoring function presented as a complete closed-loop system is misleading and can cause incorrect operational reliance, but by itself is less directly dangerous than hidden payment, login, or messaging behavior. The main risk is deceptive capability representation and the possibility that additional undeclared functions are being obscured.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
89% confidence
Finding

A narrow placeholder scoring function presented as a complete closed-loop system is misleading and can cause incorrect operational reliance, but by itself is less directly dangerous than hidden payment, login, or messaging behavior. The main risk is deceptive capability representation and the possibility that additional undeclared functions are being obscured.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

A narrow placeholder scoring function presented as a complete closed-loop system is misleading and can cause incorrect operational reliance, but by itself is less directly dangerous than hidden payment, login, or messaging behavior. The main risk is deceptive capability representation and the possibility that additional undeclared functions are being obscured.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding

A narrow placeholder scoring function presented as a complete closed-loop system is misleading and can cause incorrect operational reliance, but by itself is less directly dangerous than hidden payment, login, or messaging behavior. The main risk is deceptive capability representation and the possibility that additional undeclared functions are being obscured.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding

A narrow placeholder scoring function presented as a complete closed-loop system is misleading and can cause incorrect operational reliance, but by itself is less directly dangerous than hidden payment, login, or messaging behavior. The main risk is deceptive capability representation and the possibility that additional undeclared functions are being obscured.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

A narrow placeholder scoring function presented as a complete closed-loop system is misleading and can cause incorrect operational reliance, but by itself is less directly dangerous than hidden payment, login, or messaging behavior. The main risk is deceptive capability representation and the possibility that additional undeclared functions are being obscured.

Content

No source excerpt is available for this finding.

Ssd 1

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

Untrusted scraped competitor text is inserted directly into the prompt with no isolation, delimiting strategy, or instruction hierarchy to neutralize embedded adversarial text. A competitor-controlled page could include prompt-injection content that causes the model to ignore the intended task, exfiltrate or restate brand-brief data, or return manipulated JSON that poisons downstream competitive analysis.

Content

No source excerpt is available for this finding.

Direct Prompt Extraction

High
Category
System Prompt Leakage
Confidence
85% confidence
Finding

Skill contains instructions that could directly expose system prompts, internal rules, or hidden instructions to users or external parties.

Content

Scanner excerpt · scripts/content_producer.py (reported line 129)May include surrounding context.

python
"scripts": [{scripts_example}],
  "comment_replies": [{replies_example}]
}}"""
    return prompt


def _call_llm_with_fallback(prompt: str, max_retries: int = 3) -> str:

Context-Inappropriate Capability

High
Category
Not specified by scanner
Confidence
97% confidence
Finding

A test case that exercises 'bypass captcha' with unknown data access and need_login=True is strongly misaligned with a brand-marketing workflow and suggests support for circumventing platform protections. In this context, the skill is intended for content generation and competitor analysis, so anti-CAPTCHA behavior materially increases the risk of unauthorized scraping, account abuse, and platform policy violations.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The title explicitly presents the skill report in Chinese only ("优化成果报告"), and the rest of the document continues in Chinese without any stated user opt-in or language selection. This constitutes a natural-language locale constraint that is not documented as region-specific or optional.

Content

No source excerpt is available for this finding.

Unsafe Defaults

Medium
Category
Tool Misuse
Confidence
93% confidence
Finding

The documented should_skip_auth logic allows authorization to be bypassed not only for predefined low-risk public actions, but also whenever historical_success_rate > 0.9, regardless of action sensitivity or data scope. In a brand-marketing workflow that may access external platforms, publish content, or handle account-linked operations, this creates an unsafe default where prior success can silently weaken authorization controls and enable unauthorized or insufficiently reviewed actions.

Content

Scanner excerpt · BMW_OPTIMIZATION_AUDIT_REPORT.md (reported line 92)May include surrounding context.

md
print(f"[CACHE] TTL expired for {name}, will re-fetch")

# 智能 auth 跳过
def should_skip_auth(action: str, data_access: str, historical_success_rate: float = 0.0) -> bool:
    if action in RISK_THRESHOLDS["low"]["actions"] and data_access == "public":
        return True
    if historical_success_rate > 0.9:

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
95% confidence
Finding

The skill advertises executable components with file, network, and shell capabilities but does not declare any explicit tool scope or permissions boundaries. This creates a transparency and authorization gap: users and platforms cannot reliably assess or constrain what the skill may access, increasing the chance of over-privileged execution or unsafe deployment.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The manifest description, headings, operational guidance, and warnings are predominantly written in Chinese, which effectively forces a specific language for users. The file does not offer multilingual support, opt-in language selection, or explain that the skill is intentionally limited to a Chinese-speaking or region-specific audience.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · SKILL.md (reported line 37)May include surrounding context.

md
"models": {
    "providers": {
      "kimi-coding": {
        "baseUrl": "https://api.moonshot.cn/v1",
        "apiKey": "${KIMI_API_KEY}",
        "api": "openai-completions"
      }

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The manifest describes an automation workflow that performs brand input handling, marketing content generation, competitor analysis, and effectiveness evaluation across social platforms. This file instead implements a BMW-branded benchmark harness that runs three demo scenarios, scores JSON-like output heuristically, and executes regression checks, which is evaluation infrastructure rather than the marketed workflow itself.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

The script claims STUB_MODE disables live LLM calls, but it still runs an integration test command unconditionally at the end. In a security-sensitive or offline testing context, this can trigger unintended external execution, network/API activity, or side effects despite the operator explicitly selecting stub mode, violating trust and potentially exposing credentials or environment-dependent behavior.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

This JSON file contains natural-language strings exclusively in Chinese, including the comment and multiple search_query values such as Chinese-market terms and the zh-cn locale URL. That creates a locale/language constraint in the skill configuration without any visible user choice or documented justification, which matches the policy-violation category for language or locale restrictions.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The JSON sets a fixed language constraint of "zh-CN", which is a natural-language locale restriction. Under the policy, forcing a specific language is a violation unless the skill offers user choice or clearly documents a justified region-specific constraint tied to locale; this file does not provide such justification for language selection.

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-like JSON sets "language": "zh-CN" as a hard constraint. Under the policy, forcing a specific language is a violation unless the skill offers user choice or clearly documents a justified region-specific constraint tied to locale selection; this file documents region scope but does not justify requiring Chinese output specifically or present it as optional.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The manifest sets the language to "zh-CN" while also declaring the region as "global". This is a natural-language locale policy concern because it imposes a specific language across a global scope without any indication of user choice, opt-in, or region-specific justification.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The JSON sets "language": "zh-CN" as a fixed constraint. Forcing a locale in configuration without indicating user selection, opt-in, or a documented region-specific justification matches the language/locale policy violation criteria.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
87% confidence
Finding

The file contains Chinese-only descriptive comments about the skill entrypoint and execution flow. Under the policy rule, forcing a specific language without opt-in or documented justification can be a locale-policy violation, and there is no indication here that the skill is intentionally region-specific or that language choice is offered.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
81% confidence
Finding

The bundled demo workflow hard-codes Chinese platforms like xiaohongshu, weibo, and douyin, which steers the skill toward a specific locale/language context. There is no surrounding user-facing note or opt-in indicating that the workflow will operate in a Chinese-market context, so this is a natural-language locale policy concern.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.