Back to skill

Security audit

ppt-creator

Security checks for vulnerabilities and agentic risk

Overview

This PPT skill appears purpose-built, but it handles credentials and shell command inputs in ways users should review before installing.

Install only if you are comfortable with a skill that sends PPT content to Yoo AI, reads user-selected local files or project summaries, and writes generated files locally. Prefer setting YOO_AI_API_KEY in a secure environment variable instead of letting the agent write it into config.json, and avoid passing untrusted text, paths, JSON, or URLs through the documented shell command templates unless the agent uses safe argument-array execution.

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 (2)

T09 · Insecure Skill Coding Practices

Error
Location
SKILL.md:18
Finding

Shell Command Injection Through User-Controlled Command Arguments

Content
View full analysis
" --font_name "<字体>" --color "<颜色>" --language "<语言>" --report "" ``` ```text node {{SKILL_PATH}}/scripts/chatppt_creator.js create_from_custom_outline --custom_data '' --font_name "<字体>" --color "<颜色>" --report "" ``` ```text node {{SKILL_PATH}}/scripts/chatppt_creator.js create_from_project_analysis --project_path "<项目绝对路径>" --user_prompt "<汇报重点>" ``` ```text node {{SKILL_PATH}}/scripts/chatppt_creator.js create_banana_ppt --text "<主题>" --style "<风格ID>" --complex "<1/2/3>" ``` ### Technical Analysis The command templates use shell quoting but do not define any escaping or validation procedure for embedded quotation marks, command substitutions, separators, redirections, or other shell metacharacters. Although `scripts/chatppt_creator.js` reads values through `process.argv` and does not itself invoke a shell, the command generated from these templates is processed by the calling shell before Node.js starts. An attacker can terminate the quoted argument and append a new shell command. For example, a malicious topic could conceptually contain: ```text "; attacker-controlled-command; # ``` When inserted into the documented `--text` template, the shell interprets the injected text as a separate command instead of presentation content. Single-quoted JSON arguments are similarly vulnerable when attacker-controlled data contains a single quote. ### Attack Path 1. An attacker provides a crafted presentation topic, user prompt, local path, outline value, or reference URL containing shell metacharacters ...[truncated 1184 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
SKILL.md:282
Finding

API Credential Persisted in Plaintext Project Configuration

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • 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
Findings (11)

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

If the skill actually performs undeclared local filesystem access and project directory scanning, that is security-relevant because users may invoke a PPT tool without understanding it can inspect broader project contents. The skill context makes this more concerning because project-analysis flows are embedded inside a broadly described content-creation tool, which can obscure sensitive codebase access.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

If the skill actually performs undeclared local filesystem access and project directory scanning, that is security-relevant because users may invoke a PPT tool without understanding it can inspect broader project contents. The skill context makes this more concerning because project-analysis flows are embedded inside a broadly described content-creation tool, which can obscure sensitive codebase access.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
88% confidence
Finding

The skill declares extensive command execution that can access networked APIs, environment-dependent configuration, and local files, but it does not define any explicit tool scope or allowed-tools boundary. In an agent setting, missing scope increases the chance of overbroad invocation or unintended access paths, especially because the workflow includes file reads, project scanning, and API-backed operations.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

Overly broad trigger phrases can cause the skill to activate in situations the user did not clearly intend, increasing the likelihood of unnecessary file reads, project analysis, or network-backed actions. In this skill, that risk is amplified because the documented workflows can lead to local file handling and external API usage.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

L038、L041 和 L049 在命令示例中固定使用 --language zh-CN,但文档未说明这是可选项,也未给出用户选择语言/区域的机制。对所有用户默认强制特定 locale 可能违反语言/地区选择政策,尤其是在非中文场景下。

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The skill instructs the agent to solicit a user's API key and persist it into a local config.json file. Storing secrets this way risks accidental disclosure through logs, workspace sharing, backups, or later tool reads, and it normalizes secret handling inside an untrusted skill workflow.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill directs the agent to persist a user-provided API key locally but does not provide clear warnings about retention, exposure, or who can access the file afterward. That omission materially increases the chance of unsafe secret handling and informed-consent failures.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill sets language: 'zh-CN' as the default locale, which means output will be generated in Chinese unless the caller explicitly overrides it. This is a natural-language policy concern because the file does not present this as an opt-in choice or document a region-specific justification for forcing that locale.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The helper downloads arbitrary content from a URL and writes it directly to a caller-supplied local path with no user warning, path validation, or safety checks. In an agent skill context, this can silently persist untrusted remote data on disk, enabling unintended file overwrite, storage of malicious documents, or writes to sensitive locations if higher-level code passes attacker-influenced paths.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

This JavaScript file contains natural-language comments, error messages, and formatted analysis output entirely in Chinese, including the thrown error and returned summary text. Under the policy, forcing a specific language without user opt-in is a locale/language policy violation unless the constraint is explicitly justified, which is not present here.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
86% confidence
Finding

This file contains natural-language comments and error strings exclusively in Chinese, including validation output that users or downstream developers may need to read. Under the stated policy, forcing a specific language without offering a choice or documenting the locale constraint is a natural-language policy issue.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.