Back to skill

Security audit

Huo15 Openclaw Ppt

Security checks for vulnerabilities and agentic risk

Overview

This appears to be a real PPT-generation skill, but it needs Review because some import/build paths can upload user content or write unexpected files without clear enough user control.

Review before installing. Use this only with documents and URLs you are comfortable sending to the configured LLM provider, verify PPT_LLM_BASE_URL and ~/.openclaw/models.json before running, avoid URL import on untrusted/internal URLs, and prefer the normal create-pptx.py path over create_pptx_combined.py until the hard-coded output behavior is fixed.

Vulnerability Patterns
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
  • 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
Findings (2)

T05 · Unauthorized Access and Privilege Escalation

Error
Location
scripts/url_import.py:31
Finding

Unrestricted URL Fetching Enables Server-Side Request Forgery

Content
View full analysis
str: """Fetch HTML content.""" req = urllib.request.Request( url, headers={ 'User-Agent': 'huo15-ppt/3.8 (https://huo15.com; +mailto:postmaster@huo15.com)', 'Accept': 'text/html,application/xhtml+xml', 'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8', }, ) with urllib.request.urlopen(req, timeout=timeout) as resp: ctype = resp.headers.get('Content-Type', '') m = re.search(r'charset=([^\s;]+)', ctype) encoding = m.group(1) if m else 'utf-8' try: return resp.read().decode(encoding, errors='replace') except LookupError: return resp.read().decode('utf-8', errors='replace') ``` The fetched content is subsequently incorporated into an LLM request at `scripts/url_import.py:125-144`: ```python text = html_to_text(html) if args.print_extracted: print(text) return from prompt_to_deck import call_claude, is_llm_enabled, DEFAULT_MODELS enabled, reason = is_llm_enabled() if not enabled: sys.exit(1) full_prompt = ( f"Create a presentation from the following web content. Source URL: {args.url}\n\n" f"=== Web Content ===\n\n{text}" ) model = args.model or os.environ.get('ANTHROPIC_MODEL') or DEFAULT_MODELS['balanced'] deck = call_claude( full_prompt, pack_override=args.pack, slides=args.slides, model=model ) ``` ### Technical Analysis The command-line URL is passed directly to `urllib.request.urlopen()` without applying destination or protocol restrictions. The implementation does not: - Restrict requests to HTTP or HTTPS. - Reject loopback, private, link-local, multicast, unspecified, or reserved addresses. - Block cloud-instance metad ...[truncated 2035 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/docx_import.py:97
Finding

Confidential Document Content Is Uploaded Despite Local-Privacy Claims

Content
View full analysis
dict: body = json.dumps({ 'model': model, 'max_tokens': max_tokens, 'messages': [ {'role': 'system', 'content': system}, {'role': 'user', 'content': user}, ], }).encode('utf-8') req = urllib.request.Request( f'{base_url.rstrip("/")}/chat/completions', data=body, method='POST', headers={ 'Authorization': f'Bearer {api_key}', 'Content-Type': 'application/json', }, ) try: with urllib.request.urlopen(req, timeout=120) as resp: data = json.loads(resp.read()) ``` ### Technical Analysis The project documentation prominently presents local operation and data privacy as advantages, including a claim that contracts an ...[truncated 2516 chars]
Remediation
View remediation
Vulnerability Patterns
  • Taint TrackingDirect Taint Flow, Variable-Mediated Taint Flow, Credential Exfiltration Chain
  • 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
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (144)

Tainted flow: 'req' from os.environ.get (line 126, credential/environment) → urllib.request.urlopen (network output)

Critical
Category
Data Flow
Confidence
90% confidence
Finding

Credentials or environment variables flow to a network sink. This is a high-confidence indicator of credential exfiltration.

Content

Scanner excerpt · scripts/ai_image.py (reported line 91)May include surrounding context.

python
headers={'Authorization': f'Client-ID {key}'},
    )
    try:
        with urllib.request.urlopen(req, timeout=10) as resp:
            data = json.loads(resp.read())
    except Exception as e:
        raise RuntimeError(f"Unsplash search 失败: {e}")

Tainted flow: 'req' from os.environ.get (line 126, credential/environment) → urllib.request.urlopen (network output)

Critical
Category
Data Flow
Confidence
90% confidence
Finding

Credentials or environment variables flow to a network sink. This is a high-confidence indicator of credential exfiltration.

Content

Scanner excerpt · scripts/ai_image.py (reported line 131)May include surrounding context.

python
headers={'Authorization': f'Client-ID {key}'},
    )
    try:
        with urllib.request.urlopen(req, timeout=10) as resp:
            data = json.loads(resp.read())
    except Exception as e:
        raise RuntimeError(f"Unsplash search 失败: {e}")

Tainted flow: 'req' from os.environ.get (line 248, credential/environment) → urllib.request.urlopen (network output)

Critical
Category
Data Flow
Confidence
90% confidence
Finding

The request URL and destination are influenced by environment-controlled configuration such as PPT_LLM_BASE_URL and provider settings, then sent via urllib.request.urlopen. If an attacker can control the environment or local runtime configuration, they can redirect prompts and bearer tokens to an arbitrary endpoint, causing secret exfiltration and unintended outbound data transmission.

Content

Scanner excerpt · scripts/llm_provider.py (reported line 190)May include surrounding context.

python
},
    )
    try:
        with urllib.request.urlopen(req, timeout=120) as resp:
            data = json.loads(resp.read())
    except urllib.error.HTTPError as e:
        body_text = e.read().decode('utf-8', errors='replace')

Tainted flow: 'req' from os.environ.get (line 248, credential/environment) → urllib.request.urlopen (network output)

Critical
Category
Data Flow
Confidence
93% confidence
Finding

The OpenClaw path reads ~/.openclaw/models.json and uses its baseUrl and apiKey to build outbound authenticated requests without validating the target. A tampered local config can redirect sensitive prompts and credentials to an attacker-controlled server, which is especially risky because this branch supports both OpenAI-style and Anthropic-style authenticated calls.

Content

Scanner excerpt · scripts/llm_provider.py (reported line 255)May include surrounding context.

python
'Content-Type': 'application/json',
                'anthropic-version': '2023-06-01',
            })
        with urllib.request.urlopen(req, timeout=120) as resp:
            data = json.loads(resp.read())
        return {
            'text': data['content'][0]['text'].strip(),

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The documentation presents the skill primarily as a PPT generator, but it also advertises undeclared behaviors such as external API access, local cache writes, document import/conversion, shell-driven export pipelines, and AI-powered rewriting/auditing. This mismatch is dangerous because users and orchestrators may invoke the skill with a lower trust model than its actual capabilities warrant, leading to unintended data exposure, execution of external tools, or processing of sensitive local content.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The documentation presents the skill primarily as a PPT generator, but it also advertises undeclared behaviors such as external API access, local cache writes, document import/conversion, shell-driven export pipelines, and AI-powered rewriting/auditing. This mismatch is dangerous because users and orchestrators may invoke the skill with a lower trust model than its actual capabilities warrant, leading to unintended data exposure, execution of external tools, or processing of sensitive local content.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The documentation presents the skill primarily as a PPT generator, but it also advertises undeclared behaviors such as external API access, local cache writes, document import/conversion, shell-driven export pipelines, and AI-powered rewriting/auditing. This mismatch is dangerous because users and orchestrators may invoke the skill with a lower trust model than its actual capabilities warrant, leading to unintended data exposure, execution of external tools, or processing of sensitive local content.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The documentation presents the skill primarily as a PPT generator, but it also advertises undeclared behaviors such as external API access, local cache writes, document import/conversion, shell-driven export pipelines, and AI-powered rewriting/auditing. This mismatch is dangerous because users and orchestrators may invoke the skill with a lower trust model than its actual capabilities warrant, leading to unintended data exposure, execution of external tools, or processing of sensitive local content.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The documentation presents the skill primarily as a PPT generator, but it also advertises undeclared behaviors such as external API access, local cache writes, document import/conversion, shell-driven export pipelines, and AI-powered rewriting/auditing. This mismatch is dangerous because users and orchestrators may invoke the skill with a lower trust model than its actual capabilities warrant, leading to unintended data exposure, execution of external tools, or processing of sensitive local content.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The documentation presents the skill primarily as a PPT generator, but it also advertises undeclared behaviors such as external API access, local cache writes, document import/conversion, shell-driven export pipelines, and AI-powered rewriting/auditing. This mismatch is dangerous because users and orchestrators may invoke the skill with a lower trust model than its actual capabilities warrant, leading to unintended data exposure, execution of external tools, or processing of sensitive local content.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The documentation presents the skill primarily as a PPT generator, but it also advertises undeclared behaviors such as external API access, local cache writes, document import/conversion, shell-driven export pipelines, and AI-powered rewriting/auditing. This mismatch is dangerous because users and orchestrators may invoke the skill with a lower trust model than its actual capabilities warrant, leading to unintended data exposure, execution of external tools, or processing of sensitive local content.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The documentation presents the skill primarily as a PPT generator, but it also advertises undeclared behaviors such as external API access, local cache writes, document import/conversion, shell-driven export pipelines, and AI-powered rewriting/auditing. This mismatch is dangerous because users and orchestrators may invoke the skill with a lower trust model than its actual capabilities warrant, leading to unintended data exposure, execution of external tools, or processing of sensitive local content.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The documentation presents the skill primarily as a PPT generator, but it also advertises undeclared behaviors such as external API access, local cache writes, document import/conversion, shell-driven export pipelines, and AI-powered rewriting/auditing. This mismatch is dangerous because users and orchestrators may invoke the skill with a lower trust model than its actual capabilities warrant, leading to unintended data exposure, execution of external tools, or processing of sensitive local content.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The documentation presents the skill primarily as a PPT generator, but it also advertises undeclared behaviors such as external API access, local cache writes, document import/conversion, shell-driven export pipelines, and AI-powered rewriting/auditing. This mismatch is dangerous because users and orchestrators may invoke the skill with a lower trust model than its actual capabilities warrant, leading to unintended data exposure, execution of external tools, or processing of sensitive local content.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The documentation presents the skill primarily as a PPT generator, but it also advertises undeclared behaviors such as external API access, local cache writes, document import/conversion, shell-driven export pipelines, and AI-powered rewriting/auditing. This mismatch is dangerous because users and orchestrators may invoke the skill with a lower trust model than its actual capabilities warrant, leading to unintended data exposure, execution of external tools, or processing of sensitive local content.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The documentation presents the skill primarily as a PPT generator, but it also advertises undeclared behaviors such as external API access, local cache writes, document import/conversion, shell-driven export pipelines, and AI-powered rewriting/auditing. This mismatch is dangerous because users and orchestrators may invoke the skill with a lower trust model than its actual capabilities warrant, leading to unintended data exposure, execution of external tools, or processing of sensitive local content.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The documentation presents the skill primarily as a PPT generator, but it also advertises undeclared behaviors such as external API access, local cache writes, document import/conversion, shell-driven export pipelines, and AI-powered rewriting/auditing. This mismatch is dangerous because users and orchestrators may invoke the skill with a lower trust model than its actual capabilities warrant, leading to unintended data exposure, execution of external tools, or processing of sensitive local content.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The documentation presents the skill primarily as a PPT generator, but it also advertises undeclared behaviors such as external API access, local cache writes, document import/conversion, shell-driven export pipelines, and AI-powered rewriting/auditing. This mismatch is dangerous because users and orchestrators may invoke the skill with a lower trust model than its actual capabilities warrant, leading to unintended data exposure, execution of external tools, or processing of sensitive local content.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The documentation presents the skill primarily as a PPT generator, but it also advertises undeclared behaviors such as external API access, local cache writes, document import/conversion, shell-driven export pipelines, and AI-powered rewriting/auditing. This mismatch is dangerous because users and orchestrators may invoke the skill with a lower trust model than its actual capabilities warrant, leading to unintended data exposure, execution of external tools, or processing of sensitive local content.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The documentation presents the skill primarily as a PPT generator, but it also advertises undeclared behaviors such as external API access, local cache writes, document import/conversion, shell-driven export pipelines, and AI-powered rewriting/auditing. This mismatch is dangerous because users and orchestrators may invoke the skill with a lower trust model than its actual capabilities warrant, leading to unintended data exposure, execution of external tools, or processing of sensitive local content.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The documentation presents the skill primarily as a PPT generator, but it also advertises undeclared behaviors such as external API access, local cache writes, document import/conversion, shell-driven export pipelines, and AI-powered rewriting/auditing. This mismatch is dangerous because users and orchestrators may invoke the skill with a lower trust model than its actual capabilities warrant, leading to unintended data exposure, execution of external tools, or processing of sensitive local content.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The documentation presents the skill primarily as a PPT generator, but it also advertises undeclared behaviors such as external API access, local cache writes, document import/conversion, shell-driven export pipelines, and AI-powered rewriting/auditing. This mismatch is dangerous because users and orchestrators may invoke the skill with a lower trust model than its actual capabilities warrant, leading to unintended data exposure, execution of external tools, or processing of sensitive local content.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The documentation presents the skill primarily as a PPT generator, but it also advertises undeclared behaviors such as external API access, local cache writes, document import/conversion, shell-driven export pipelines, and AI-powered rewriting/auditing. This mismatch is dangerous because users and orchestrators may invoke the skill with a lower trust model than its actual capabilities warrant, leading to unintended data exposure, execution of external tools, or processing of sensitive local content.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The documentation presents the skill primarily as a PPT generator, but it also advertises undeclared behaviors such as external API access, local cache writes, document import/conversion, shell-driven export pipelines, and AI-powered rewriting/auditing. This mismatch is dangerous because users and orchestrators may invoke the skill with a lower trust model than its actual capabilities warrant, leading to unintended data exposure, execution of external tools, or processing of sensitive local content.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The documentation presents the skill primarily as a PPT generator, but it also advertises undeclared behaviors such as external API access, local cache writes, document import/conversion, shell-driven export pipelines, and AI-powered rewriting/auditing. This mismatch is dangerous because users and orchestrators may invoke the skill with a lower trust model than its actual capabilities warrant, leading to unintended data exposure, execution of external tools, or processing of sensitive local content.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.