Back to skills
SKILL.md
1091 Security Audit 40f90ca4
FSecurity**Last Audited:** 2026-01-04 **Audited By:** Claude (Opus 4.5) + Human Review **Status:** Passed - No security issues found ---
- 9 stars
- 0 votes
- 0 copies
- 0 views
- Added October 11, 2026
Works with
Security analysis
35/100- Pipes output to a shell interpreter
- Performs destructive filesystem operations
- Downloads and executes remote scripts — classic supply chain attack
npx -y skills add tools-only/X-Skills --skill 1091-security-audit_40f90ca4 --agent claude-codeAre you the author of 1091 Security Audit 40f90ca4?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/tools-only-1091-security-audit-40f90ca4)# Security Audit Report
**Last Audited:** 2026-01-04
**Audited By:** Claude (Opus 4.5) + Human Review
**Status:** Passed - No security issues found
---
## Overview
This document provides a security audit of all scripts in this repository. All scripts have been reviewed for:
- Command injection vulnerabilities
- Dangerous shell commands (`rm -rf`, `sudo`, etc.)
- Unauthorized network calls / data exfiltration
- `eval()` / `exec()` misuse
- Credential harvesting
**Result:** All scripts are safe for use.
---
## Scripts by Skill
### create-visualization
| Script | Purpose | Safety Notes |
|--------|---------|--------------|
| `scripts/flowchart.py` | Generate flowchart diagrams using matplotlib | Pure visualization, no I/O beyond file save |
| `scripts/manim_physics.py` | Create physics animations (3Blue1Brown style) | Uses manim library only |
| `scripts/math_plots.py` | Plot mathematical functions | Uses matplotlib/numpy only |
| `scripts/physics_fbd.py` | Draw Free Body Diagrams | Pure visualization |
### deep-research
| Script | Purpose | Safety Notes |
|--------|---------|--------------|
| `scripts/validate_report.py` | Validate research report quality | Pure Python, no external calls |
### docx
| Script | Purpose | Safety Notes |
|--------|---------|--------------|
| `scripts/document.py` | Create/modify Word documents | Uses python-docx library |
| `scripts/utilities.py` | XML editing utilities for OOXML | Uses defusedxml (safe XML parser) |
| `ooxml/scripts/pack.py` | Pack directory into .docx file | subprocess: `soffice --headless` for validation only |
| `ooxml/scripts/unpack.py` | Unpack .docx to directory | Uses zipfile + defusedxml |
| `ooxml/scripts/validate.py` | Validate OOXML structure | Pure validation, no modifications |
| `ooxml/scripts/validation/redlining.py` | Validate tracked changes | subprocess: `git diff` for text comparison |
### pdf
| Script | Purpose | Safety Notes |
|--------|---------|--------------|
| `scripts/fill_pdf_form_with_annotations.py` | Fill PDF forms using annotations | Uses pypdf library only |
| `scripts/fill_fillable_fields.py` | Fill fillable PDF form fields | Uses pypdf library only |
| `scripts/extract_form_field_info.py` | Extract form field metadata | Read-only, uses pypdf |
### pptx
| Script | Purpose | Safety Notes |
|--------|---------|--------------|
| `scripts/replace.py` | Replace text in PowerPoint slides | Uses python-pptx library |
| `scripts/inventory.py` | Extract text inventory from slides | Read-only analysis |
| `scripts/thumbnail.py` | Generate slide thumbnail grids | subprocess: `soffice`, `pdftoppm` for image conversion |
| `scripts/html2pptx.js` | Convert HTML to PowerPoint slides | Uses playwright for rendering, pptxgenjs for output |
| `ooxml/scripts/pack.py` | Pack directory into .pptx file | subprocess: `soffice --headless` for validation |
| `ooxml/scripts/unpack.py` | Unpack .pptx to directory | Uses zipfile + defusedxml |
### xlsx
| Script | Purpose | Safety Notes |
|--------|---------|--------------|
| `recalc.py` | Recalculate Excel formulas | subprocess: `soffice --headless` to run LibreOffice macro |
### skill-creator
| Script | Purpose | Safety Notes |
|--------|---------|--------------|
| `scripts/init_skill.py` | Initialize new skill directory structure | Creates files/folders only, no execution |
---
## Subprocess Calls Analysis
All subprocess calls use **array-based commands** (not `shell=True`), preventing command injection:
```python
# Safe pattern used throughout (no shell injection possible)
subprocess.run(['soffice', '--headless', '--convert-to', 'pdf', filename])
# NOT used (would be vulnerable)
subprocess.run(f'soffice --headless {filename}', shell=True) # NEVER USED
```
| Script | Command | Purpose |
|--------|---------|---------|
| `xlsx/recalc.py` | `soffice --headless` | Recalculate Excel formulas via LibreOffice |
| `pptx/scripts/thumbnail.py` | `soffice`, `pdftoppm` | Convert PPTX to images |
| `docx/ooxml/scripts/pack.py` | `soffice --headless` | Validate document structure |
| `pptx/ooxml/scripts/pack.py` | `soffice --headless` | Validate document structure |
| `docx/.../redlining.py` | `git diff` | Compare text changes |
| `pptx/.../redlining.py` | `git diff` | Compare text changes |
---
## What We Verified Does NOT Exist
- No `eval()` or `exec()` with user input
- No `rm -rf` or destructive file operations
- No `curl | bash` or remote code execution
- No hardcoded credentials or API keys
- No network calls that exfiltrate data
- No obfuscated or encrypted code
---
## External Dependencies
All scripts use well-known, trusted libraries:
| Library | Used By | Purpose |
|---------|---------|---------|
| `defusedxml` | docx, pptx | Safe XML parsing (prevents XXE attacks) |
| `pypdf` | pdf | PDF manipulation |
| `python-docx` | docx | Word document handling |
| `python-pptx` | pptx | PowerPoint handling |
| `openpyxl` | xlsx | Excel file handling |
| `matplotlib` | create-visualization | Chart/diagram generation |
| `manim` | create-visualization | Animation rendering |
| `playwright` | pptx | Browser automation for HTML rendering |
| `pptxgenjs` | pptx | PowerPoint generation (Node.js) |
---
## How to Verify
You can verify this audit yourself:
```bash
# Search for potentially dangerous patterns
grep -r "eval\|exec\|subprocess.*shell=True\|rm -rf\|curl.*\|" --include="*.py" .
# Check all subprocess calls
grep -r "subprocess" --include="*.py" -A 3 .
# Verify no network calls in Python scripts
grep -r "requests\|urllib\|http.client" --include="*.py" .
```
---
## Disclaimer
This audit covers the scripts as of the audit date. Always review code before running it in sensitive environments. If you find any security issues, please report them via GitHub Issues.
Attribution
Comments
Loading comments…
Newsletter
Get the weekly list of safe new skills, and the ones we pulled.