Back to skill

Security audit

Resume Generator Clean

Security checks for vulnerabilities and agentic risk

Overview

This skill is a local resume generator whose file access and document-conversion behavior mostly match its stated purpose, with dependency hygiene risks users should manage.

Install in a virtual environment, pin or audit dependencies before use, and avoid converting untrusted HTML or Markdown because PDF/HTML renderers can process local resources. The skill does not show hidden credential access or exfiltration in the provided artifacts.

Vulnerability Patterns
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
Findings (9)

Unpinned Dependencies

Low
Category
Supply Chain
Content
reportlab>=3.6.0
PyYAML>=5.4.0
python-docx>=0.8.11
beautifulsoup4>=4.9.0
Confidence
95% confidence
Finding
The dependency is specified with a lower-bound only, which allows installation of any newer version and makes builds non-reproducible. This increases supply-chain risk and can unintentionally pull in vulnerable or breaking releases over time, though the line itself is not an exploit mechanism.

Unpinned Dependencies

Low
Category
Supply Chain
Content
reportlab>=3.6.0
PyYAML>=5.4.0
python-docx>=0.8.11
beautifulsoup4>=4.9.0
lxml>=4.6.0
Confidence
95% confidence
Finding
Using PyYAML with only a minimum version allows uncontrolled upgrades and prevents reproducible installs. In a package that may process user-supplied structured content, this can increase exposure to newly introduced or unresolved dependency issues.

Unpinned Dependencies

Low
Category
Supply Chain
Content
reportlab>=3.6.0
PyYAML>=5.4.0
python-docx>=0.8.11
beautifulsoup4>=4.9.0
lxml>=4.6.0
Confidence
94% confidence
Finding
An unpinned python-docx version creates supply-chain and reproducibility risk because environments may resolve to different versions. While not directly exploitable by itself, it weakens dependency hygiene and can expose the skill to vulnerable releases.

Unpinned Dependencies

Low
Category
Supply Chain
Content
reportlab>=3.6.0
PyYAML>=5.4.0
python-docx>=0.8.11
beautifulsoup4>=4.9.0
lxml>=4.6.0

# Optional: For better HTML to PDF quality
Confidence
94% confidence
Finding
Specifying beautifulsoup4 as >=4.9.0 leaves future resolution open-ended and can introduce inconsistent or vulnerable transitive dependency states. This is a software supply-chain weakness rather than a direct code execution issue.

Unpinned Dependencies

Low
Category
Supply Chain
Content
PyYAML>=5.4.0
python-docx>=0.8.11
beautifulsoup4>=4.9.0
lxml>=4.6.0

# Optional: For better HTML to PDF quality
# weasyprint>=53.0
Confidence
95% confidence
Finding
Leaving lxml unpinned means package resolution may select versions with known parser or sanitizer issues. Given this skill handles HTML/Markdown input, dependency drift here is more concerning than in a purely internal tool.

Known Vulnerable Dependency: reportlab — 6 advisory(ies): CVE-2023-33733 (Reportlab vulnerable to remote code execution); CVE-2020-28463 (Server-side Request Forgery (SSRF) via img tags in reportlab); CVE-2019-19450 (ReportLab vulnerable to remote code execution via paraparser) +3 more

Critical
Category
Supply Chain
Confidence
98% confidence
Finding
The requirement allows reportlab>=3.6.0, which can include versions affected by serious issues such as remote code execution and SSRF. In a resume generator that may render user-controlled Markdown/HTML into PDFs, a vulnerable reportlab version materially increases the risk of code execution or outbound request abuse during document generation.

Known Vulnerable Dependency: PyYAML — 8 advisory(ies): CVE-2019-20477 (Deserialization of Untrusted Data in PyYAML); CVE-2020-1747 (Improper Input Validation in PyYAML); CVE-2020-14343 (Improper Input Validation in PyYAML) +5 more

Critical
Category
Supply Chain
Confidence
97% confidence
Finding
PyYAML has a history of unsafe deserialization issues, and the requirement permits potentially vulnerable versions. If this skill ever loads YAML from user input, templates, config files, or imported resume data with unsafe loaders, it could lead to code execution or other unexpected object construction.

Known Vulnerable Dependency: python-docx — 2 advisory(ies): CVE-2016-5851 (Improper Restriction of XML External Entity Reference in python-docx); CVE-2016-5851 (python-docx before 0.8.6 allows context-dependent attackers to conduct XML Exter)

High
Category
Supply Chain
Confidence
93% confidence
Finding
The allowed python-docx version range includes releases historically affected by XML external entity behavior. In a tool that imports or manipulates document content, vulnerable XML parsing could enable file disclosure, network access, or parser abuse when handling crafted DOCX files.

Known Vulnerable Dependency: lxml — 10 advisory(ies): CVE-2021-43818 (lxml's HTML Cleaner allows crafted and SVG embedded scripts to pass through); CVE-2014-3146 (lxml Cross-site Scripting Via Control Characters); CVE-2021-28957 (lxml vulnerable to Cross-Site Scripting ) +7 more

High
Category
Supply Chain
Confidence
96% confidence
Finding
lxml has multiple historical parser and sanitizer-related vulnerabilities, and this skill explicitly supports HTML input, making the dependency especially security-relevant. If vulnerable versions are installed, crafted HTML/XML/SVG content may trigger XSS-like sanitizer bypasses, parser abuse, or unsafe processing in downstream renderers.

Static analysis

No suspicious patterns detected.