Back to skill

Security audit

Ppt Extract

Security checks for vulnerabilities and agentic risk

Overview

This skill is a straightforward PowerPoint extraction helper, but users should understand it relies on a third-party MinerU CLI and token-backed processing before using it on sensitive slides.

Install only from the expected MinerU/OpenDataLab sources, avoid running the installer with administrator privileges, and consider pinning or reviewing the CLI version yourself. Do not use this skill on confidential presentations unless you are comfortable with token-backed MinerU processing and the service's data handling terms.

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
SKILL.md:15
Finding
Unpinned Third-Party CLI Installation Creates Supply-Chain Risk## Vulnerability Details **File Location**: `SKILL.md`, lines 15–17 **Vulnerability Type**: T08: Insecure Dependencies **Risk Level**: Medium The Skill instructs users to install a third-party executable without pinning it to a reviewed, immutable version: ```bash npm install -g mineru-open-api # or via Go (macOS/Linux): go install github.com/opendatalab/MinerU-Ecosystem/cli/mineru-open-api@latest ``` The associated metadata at line 5 similarly references mutable package sources without version or integrity constraints: ```yaml metadata: {"openclaw": {"emoji": "📄", "requires": {"bins": ["mineru-open-api"], "env": ["MINERU_TOKEN"]}, "primaryEnv": "MINERU_TOKEN", "install": [{"id": "npm", "kind": "node", "package": "mineru-open-api", "bins": ["mineru-open-api"], "label": "Install via npm"}, {"id": "go", "kind": "go", "package": "github.com/opendatalab/MinerU-Ecosystem/cli/mineru-open-api", "bins": ["mineru-open-api"], "label": "Install via go install", "os": ["darwin", "linux"]}]}} ``` ### Technical Analysis The npm command resolves the current registry version at installation time, while the Go command explicitly resolves `@latest`. Consequently, the executable installed by users can differ from the version that existed when this Skill was reviewed. No lockfile, exact version, commit hash, checksum, or signature verification is provided. The npm command also performs a global installation. Depending on local npm configuration and the user's privileges, package lifecycle scripts can execute during installation and the resulting binary can become available system-wide. The Go installation path compiles mutable upstream source and places the resulting executable in the user's Go binary directory. The project contains no implementation of `mineru-open-api`, so the behavior of the installed executable—including its handling of `MINERU_TOKEN` and presentation contents—cannot be verified from the audited artifact. There is no e ...[truncated 1503 chars]
Remediation
## Remediation Suggestions 1. Pin the npm dependency to an exact, reviewed version, for example `mineru-open-api@X.Y.Z`, rather than allowing the registry to select the current release. 2. Replace the Go `@latest` reference with a reviewed release tag or, preferably, an immutable commit identifier. 3. Add integrity verification using trusted checksums, package signatures, provenance attestations, or an equivalent release-verification mechanism. 4. Keep the metadata installation definitions synchronized with the pinned versions shown in the documentation. 5. Avoid global npm installation where possible. Prefer a project-local, isolated environment with a lockfile and restricted permissions. 6. Do not install dependencies with administrator or root privileges unless strictly required. 7. Review package lifecycle scripts and the resolved transitive dependency graph before approving a release. 8. Document the expected publisher, registry, repository, release version, and verification procedure so users can detect source substitution. 9. Run the extraction CLI in a sandbox with access limited to the required input, output directory, network destinations, and credentials.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • 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 (4)

Description-Behavior Mismatch

Medium
Confidence
92% confidence
Finding
The manifest description says the skill extracts both legacy .ppt and modern .pptx presentations. However, the documentation later states 'Supported input: .ppt' and says '.pptx files' should use 'flash-extract' instead, which indicates the advertised scope in the manifest does not match the actual documented operation of this skill entrypoint.

Vague Triggers

Medium
Confidence
91% confidence
Finding
The description includes trigger-style phrases such as 'read this ppt file', 'I want content from these slides', and 'extract content from PowerPoint files' without clear constraints or exclusion conditions. These are broad, natural user requests that could match ordinary conversation and cause unintended invocation of the skill.

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The skill advertises URL-based extraction and token-backed processing without clearly warning that presentation content may be sent to an external MinerU service. This creates a data exposure risk because users may submit confidential slides under the assumption processing is local, especially given the broad 'read this ppt file' positioning.

Intent-Code Divergence

Low
Confidence
79% confidence
Finding
Line L55 says output goes to stdout by default unless '-o' is used, but L56 states binary formats require '-o' because they cannot stream to stdout. Since this skill is specifically about PowerPoint extraction, these statements create intent/documentation ambiguity about whether the described PPT workflow streams output or requires file output.

Static analysis

No suspicious patterns detected.