Versioned security assessment

Report ID: SA-88A205C7

7/8/2026, 3:34:26 PM

pptx security assessment v3

Skill Security Certification Report

Audit History
Audit model: codex Historical report
Skill name
pptx
Version
v3
Maintainer
ZhanlinCui
Coverage
55 Files scanned · 26,473 Lines analyzed
Policy version
Unavailable

Confirmed finding summary

No confirmed security findings

The completed audit recorded no confirmed security findings. This is not proof that the Skill has no side effects.

Installation context

Historical evidence

This report may not describe the currently installable artifact. Open the current Skill page for install guidance.

Open current Skill page

This report does not block or authorize the manifest or ZIP.

Most static findings are false positives from Markdown examples, JavaScript template literals, and OOXML namespace URIs. Confirmed risks include unsafe Office ZIP extraction, external converters processing user-provided files, and sudo dependency commands. No prompt injection or data-exfiltration intent was found.

Report position

Historical report

Open audit history before using this report to install.

Audit attestation

Not attestable

The required immutable binding is incomplete.

Human verification

Not verified

No human verification is recorded for this report.

Coverage

55 Files scanned · 26,473 Lines analyzed

17 items shown for review

Limitations

This report does not claim runtime or sandbox execution and does not prove the absence of side effects.

Evidence chain

Follow the evidence from source binding to the install contract. Available evidence supports verification; it is not a safety guarantee.

  1. Source

    Binding unavailable

  2. Artifact

    Identity incomplete

  3. Audit

    Complete

  4. Install contract

    Open manifest to verify

    Open manifest

Capabilities observed

Observed means this report recorded supporting evidence. Not recorded does not prove that a capability is absent.

Contains scripts

May execute code included with the Skill.

Not recorded by this audit

Network access

May connect to external services.

Observed in 206 evidence locations

Filesystem access

May read or write local files.

Observed in 52 evidence locations

Env variables

May read values from the process environment.

Observed in 2 evidence locations

External commands

May invoke commands or programs outside the Skill.

Observed in 124 evidence locations

Capability review items (17)
High
Python subprocess.run
result = subprocess.run(
The subprocess call runs a fixed local converter on user-provided presentation or PDF content. There is no shell injection, but external parsing of untrusted documents is a real execution-surface risk.
High
Archive extract all (zip slip risk)
zipfile.ZipFile(input_file).extractall(output_path)
extractall is called on an Office ZIP archive without validating member paths first. A malicious archive can attempt path traversal or unexpected file writes.
High
Archive extract all (zip slip risk)
zip_ref.extractall(temp_path)
extractall is called on an Office ZIP archive without validating member paths first. A malicious archive can attempt path traversal or unexpected file writes.
High
Archive extract all (zip slip risk)
zip_ref.extractall(temp_dir)
extractall is called on an Office ZIP archive without validating member paths first. A malicious archive can attempt path traversal or unexpected file writes.
High
Archive extract all (zip slip risk)
zip_ref.extractall(temp_path)
extractall is called on an Office ZIP archive without validating member paths first. A malicious archive can attempt path traversal or unexpected file writes.
High
Python subprocess.run
result = subprocess.run(
The subprocess call runs a fixed local converter on user-provided presentation or PDF content. There is no shell injection, but external parsing of untrusted documents is a real execution-surface risk.
High
Python subprocess.run
result = subprocess.run(
The subprocess call runs a fixed local converter on user-provided presentation or PDF content. There is no shell injection, but external parsing of untrusted documents is a real execution-surface risk.
High
sudo privilege escalation
- **LibreOffice**: `sudo apt-get install libreoffice` (for PDF conversion)
The dependency instructions tell an agent to run sudo apt-get. If followed automatically, this requests elevated privileges and modifies system packages.
High
sudo privilege escalation
- **Poppler**: `sudo apt-get install poppler-utils` (for pdftoppm to convert PDF to images)
The dependency instructions tell an agent to run sudo apt-get. If followed automatically, this requests elevated privileges and modifies system packages.
Medium
Python archive libraries
import zipfile
This module uses zipfile to unpack user-supplied Office archives. The nearby extraction flow lacks explicit member path validation, so the archive handling is a real risk.
Medium
Python archive libraries
zipfile.ZipFile(input_file).extractall(output_path)
This module uses zipfile to unpack user-supplied Office archives. The nearby extraction flow lacks explicit member path validation, so the archive handling is a real risk.
Medium
Python archive libraries
import zipfile
This module uses zipfile to unpack user-supplied Office archives. The nearby extraction flow lacks explicit member path validation, so the archive handling is a real risk.
Medium
Python archive libraries
with zipfile.ZipFile(self.original_file, "r") as zip_ref:
This module uses zipfile to unpack user-supplied Office archives. The nearby extraction flow lacks explicit member path validation, so the archive handling is a real risk.
Medium
Python archive libraries
import zipfile
This module uses zipfile to unpack user-supplied Office archives. The nearby extraction flow lacks explicit member path validation, so the archive handling is a real risk.
Medium
Python archive libraries
with zipfile.ZipFile(self.original_file, "r") as zip_ref:
This module uses zipfile to unpack user-supplied Office archives. The nearby extraction flow lacks explicit member path validation, so the archive handling is a real risk.
Medium
Python archive libraries
import zipfile
This module uses zipfile to unpack user-supplied Office archives. The nearby extraction flow lacks explicit member path validation, so the archive handling is a real risk.
Medium
Python archive libraries
with zipfile.ZipFile(self.original_docx, "r") as zip_ref:
This module uses zipfile to unpack user-supplied Office archives. The nearby extraction flow lacks explicit member path validation, so the archive handling is a real risk.

Risk findings

Confirmed security concerns are separated from items that still need review.

No confirmed security findings were recorded for this completed audit.

Remediation

Suggested fixes recorded by this audit. Applying them is the maintainer’s responsibility.

  1. FIX-001
    High
    Unsafe extraction of Office ZIP archives
    Validate every ZipInfo member path before extraction, reject absolute or parent-directory paths, and extract only expected OOXML members.
  2. FIX-002
    High
    Dependency instructions request sudo privileges
    Remove sudo install commands from agent workflows and document dependencies as manual setup steps for the user.
  3. FIX-003
    Medium
    External converters process user-provided presentations
    Run LibreOffice and Poppler in a sandbox with resource limits, fixed arguments, and user confirmation for untrusted files.

Expert evidence

Immutable subject identity, scanner metadata, dismissed matches, and source-level evidence.

Artifact subject

Marketplace commit
Unavailable
Content hash
Unavailable
Tree hash
Unavailable
Skill path
Unavailable
Audit payload hash
Unavailable

Analysis metadata

Audit model: codex

Analysis state: Complete

Scope is limited to the recorded files, lines, methods, and evidence. No runtime or sandbox execution is claimed.

Verify and export

The manifest and lockfile bind install artifacts to cryptographic hashes. This integrity claim is separate from the security assessment.

Audit attestation: not_attestable