T08 · Insecure Dependencies
- Location
SKILL.md:477- Finding
Unpinned and Globally Installed Third-Party Dependencies
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This presentation skill mostly matches its purpose, but it needs Review because some file-processing and install behaviors are broader and less contained than users may expect.
Install only if you are comfortable with a PPTX skill that runs local conversion tools, edits Office archives, and may require global or privileged dependency installation. Prefer using it in an isolated workspace or container, keep backups of presentations before replacement or deletion workflows, avoid untrusted Office/HTML inputs, and pin or locally install dependencies instead of using global/sudo commands where possible.
SKILL.md:477Unpinned and Globally Installed Third-Party Dependencies
scripts/html2pptx.js:898Untrusted HTML Is Executed in Chromium Without Network Isolation
ooxml/scripts/unpack.py:17Office Archives Are Extracted Without Resource Limits
A PPTX skill that may invoke document-level diffing or inspect non-presentation OOXML structures has capabilities beyond what the user-facing description suggests. Such hidden breadth can expose sensitive document content, metadata, or history through auxiliary tooling not expected in a presentation-only workflow.
A PPTX skill that may invoke document-level diffing or inspect non-presentation OOXML structures has capabilities beyond what the user-facing description suggests. Such hidden breadth can expose sensitive document content, metadata, or history through auxiliary tooling not expected in a presentation-only workflow.
A PPTX skill that may invoke document-level diffing or inspect non-presentation OOXML structures has capabilities beyond what the user-facing description suggests. Such hidden breadth can expose sensitive document content, metadata, or history through auxiliary tooling not expected in a presentation-only workflow.
A PPTX skill that may invoke document-level diffing or inspect non-presentation OOXML structures has capabilities beyond what the user-facing description suggests. Such hidden breadth can expose sensitive document content, metadata, or history through auxiliary tooling not expected in a presentation-only workflow.
A PPTX skill that may invoke document-level diffing or inspect non-presentation OOXML structures has capabilities beyond what the user-facing description suggests. Such hidden breadth can expose sensitive document content, metadata, or history through auxiliary tooling not expected in a presentation-only workflow.
A PPTX skill that may invoke document-level diffing or inspect non-presentation OOXML structures has capabilities beyond what the user-facing description suggests. Such hidden breadth can expose sensitive document content, metadata, or history through auxiliary tooling not expected in a presentation-only workflow.
A PPTX skill that may invoke document-level diffing or inspect non-presentation OOXML structures has capabilities beyond what the user-facing description suggests. Such hidden breadth can expose sensitive document content, metadata, or history through auxiliary tooling not expected in a presentation-only workflow.
A PPTX skill that may invoke document-level diffing or inspect non-presentation OOXML structures has capabilities beyond what the user-facing description suggests. Such hidden breadth can expose sensitive document content, metadata, or history through auxiliary tooling not expected in a presentation-only workflow.
A PPTX skill that may invoke document-level diffing or inspect non-presentation OOXML structures has capabilities beyond what the user-facing description suggests. Such hidden breadth can expose sensitive document content, metadata, or history through auxiliary tooling not expected in a presentation-only workflow.
Referenced artifact was not completely inspected
3. Create and run a JavaScript file using the [`html2pptx.js`](scripts/html2pptx.js) library to convert HTML slides to PowerPoint and save the presentation
Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.
<!-- ppt/slides/slide1.xml -->
<p:sld>
<p:cSld>
<p:spTree>
Both the module docstring and the implementation operate on WordprocessingML structures such as word/document.xml, w:ins, and w:del, and unpack an original .docx archive for comparison. This behavior is materially different from the manifest's stated scope of presentation creation, editing, and analysis for .pptx files.
The skill instructs use of shell commands, file reads/writes, and environment-dependent tooling, but the manifest declares no explicit tool scope or permission boundaries. This increases the chance the skill will be invoked with broader-than-necessary capabilities, making misuse or unexpected file/system access harder to constrain or audit.
The trigger phrase 'or any other presentation tasks' is overly broad and can cause the skill to activate for loosely related requests. Over-broad activation increases the likelihood that shell/file-manipulating instructions run in contexts where a narrower, safer tool should have been used or where the user did not intend low-level document operations.
The skill states that all text shapes will be cleared automatically unless replacement paragraphs are provided, but this destructive behavior is not surfaced as an up-front warning or consent gate. In practice, an agent could erase slide text unintentionally, causing silent data loss or corruption of user documents during routine editing.
Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.
- **playwright**: `npm install -g playwright` (for HTML rendering in html2pptx)
- **react-icons**: `npm install -g react-icons react react-dom` (for icons)
- **sharp**: `npm install -g sharp` (for SVG rasterization and image processing)
- **LibreOffice**: `sudo apt-get install libreoffice` (for PDF conversion)
- **Poppler**: `sudo apt-get install poppler-utils` (for pdftoppm to convert PDF to images)
- **defusedxml**: `pip install defusedxml` (for secure XML parsing)
Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.
- **playwright**: `npm install -g playwright` (for HTML rendering in html2pptx)
- **react-icons**: `npm install -g react-icons react react-dom` (for icons)
- **sharp**: `npm install -g sharp` (for SVG rasterization and image processing)
- **LibreOffice**: `sudo apt-get install libreoffice` (for PDF conversion)
- **Poppler**: `sudo apt-get install poppler-utils` (for pdftoppm to convert PDF to images)
- **defusedxml**: `pip install defusedxml` (for secure XML parsing)
This markdown file instructs the user to delete slide entries, relationship records, and slide/media files, but it does not explicitly warn that these actions can permanently remove presentation content and may be difficult to recover. Under the markdown variant of SQP-2, destructive operations affecting user data should include a clear warning about the impact on data integrity and reversibility.
The checklist directs users to remove unreferenced media, fonts, notes directories, and deleted-resource references, which can affect user data and package integrity if applied incorrectly. Although the document discusses technical correctness, it does not clearly warn that these cleanup actions may delete recoverable assets or alter presentation behavior.
The manifest describes presentation creation, editing, and analysis, which reasonably covers reading and writing .pptx content. However, this file validates output by spawning the external soffice executable, introducing process execution as an additional capability beyond direct OOXML manipulation. Shelling out to a local program is not an obvious requirement from the stated skill purpose alone.
subprocess module calls execute external commands. Without careful input validation, this enables command injection.
with tempfile.TemporaryDirectory() as temp_dir:
try:
result = subprocess.run(
[
"soffice",
"--headless",
The skill manifest describes a presentation-focused capability for working with .pptx files, but this script's module docstring explicitly states support for Office files including .docx and .xlsx. That indicates the code is built to process Word and Excel documents in addition to presentations, which is broader than the declared skill behavior.
The script calls ZipFile.extractall on an untrusted Office archive without validating member paths. A crafted ZIP can use directory traversal entries such as ../ to overwrite files outside the intended output directory, which is especially risky in an agent/tooling context that processes user-supplied documents and writes to disk automatically.
The manifest is specific to presentation creation, editing, and analysis, but this code includes logic that only applies to .docx files by suggesting an RSID for tracked changes. That is a document-editing feature unrelated to presentation handling and shows behavior outside the stated purpose.
subprocess module calls execute external commands. Without careful input validation, this enables command injection.
modified_file.write_text(modified_text, encoding="utf-8")
# Try character-level diff first for precise differences
result = subprocess.run(
[
"git",
"diff",
No suspicious patterns detected.