Back to skill

Security audit

生成每日金融市场 PPT 简报

Security checks for vulnerabilities and agentic risk

Overview

The skill is a plausible daily financial PPT generator, but it relies on executable configuration from a hard-coded external personal path and uses an extra Word report as a primary input, so it should be reviewed before installation.

Install only if you trust and control C:\Users\qu669\.openclaw\workspace-yoyo\config.py and the E:\daily workspace. Before use, narrow the trigger phrase, document the Word report input, add overwrite protection, and replace the external Python config import with validated non-executable configuration.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • 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)

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/generate_ppt.py:154
Finding

Untrusted Word Content Is Parsed as Raw XML

Content
View full analysis
' ) run_elem.append(rPr_elem) t_elem = etree.fromstring(f'{text}') run_elem.append(t_elem) para_elem.append(run_elem) txBody.append(para_elem) ``` The relevant input source is: ```python doc_word = DocxDoc(word_doc_path) word_paragraphs = [p.text.strip() for p in doc_word.paragraphs] ``` The `text` value is not XML-escaped before parsing. Ordinary input containing reserved XML characters such as `&` or `<` can therefore produce an `XMLSyntaxError`. Carefully structured content may close the expected `a:t` element and introduce additional XML nodes if the final interpolated document remains well-formed. This is an XML injection flaw, although it does not expose an external-entity issue by itself because the injected value is placed in an in-memory XML fragment without a document type declaration. ### Attack Path 1. An attacker influences market or news content included in the generated Word report. 2. The attacker places XML-reserved characters or crafted XML markup in a paragraph expected at one of the fixed paragraph indexes processed by the script. 3. The script loads that paragraph into `word_paragraphs`. 4. The paragraph is passed to `rebuild_txBody()` as `text`. 5. The script interpolates the value into an XML document without escaping it. 6. `etree.fromstring()` either raises a parsing exception, terminating report generation, or ac ...[truncated 554 chars]
Remediation
View remediation
`, quotation marks, and attempted closing tags. ]]>

T08 · Insecure Dependencies

Warning
Location
scripts/generate_ppt.py:15
Finding

External Executable Configuration Is Loaded from a Hard-Coded Search Path

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • 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
Findings (8)

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
93% confidence
Finding

The skill references local files and a generation script, implying filesystem read/write behavior, but it declares no explicit tool scope or permissions boundary. In an agent environment, missing capability declarations can cause over-broad default access or make security review and runtime enforcement ineffective.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The trigger phrases "生成 PPT" and "制作 PPT" are very broad and likely to match ordinary user requests unrelated to this specific financial-report workflow. That can cause unintended invocation of a skill that reads local data and writes files, increasing the chance of surprising side effects or misuse.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill is designed to write output to a fixed local path, but the description does not clearly warn the user that local files will be created or potentially overwritten. This weakens user consent and can lead to accidental data loss, confusion, or unauthorized modification of files in sensitive directories.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The script creates PPT XML run properties with lang="zh-CN" and altLang="en-US", which forces a specific language/locale in generated content. This is a natural-language policy concern because the file does not indicate user opt-in or explain why a Chinese-only locale is required.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
85% confidence
Finding

The manifest says the skill generates a daily financial PPT from collected market data using a specified PPT template. In code, it additionally opens a .docx daily report and uses its paragraphs as a primary content source, which introduces a separate document-reading and summarization capability not stated in the skill purpose.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The manifest describes generating the PPT according to a template based on collected market data. However, the Shape 6 '市场表现' content is explicitly sourced from Word paragraph indexes and only falls back minimally, meaning the actual behavior depends on a Word report rather than directly composing the section from market data.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

Both Shape 15 and Shape 23 are built from Word paragraph ranges and keyword-based summarization logic. This is a semantic mismatch with the manifest's description of generating the PPT from collected market data, because the code is actually performing downstream text extraction from another document source.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
80% confidence
Finding

描述全文将技能用途、触发短语和输出内容均限定为中文语境,例如“生成每日金融市场 PPT 简报”“生成 PPT 简报”等,但未声明这是面向特定中文业务场景的限定,也未提供用户语言选择。按照语言/locale 政策,未获用户选择即强制单一语言可能构成违规。

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.