T09 · Insecure Skill Coding Practices
- Location
SKILL.md:97- Finding
Authentication Credentials and Verification Codes Requested Through Discord
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This job-application automation is mostly purpose-aligned, but it needs review because it auto-submits personal data and tells the agent to request login secrets through Discord.
Review this skill before installing. It should not ask for passwords or verification codes in Discord; complete authentication directly on the official sites instead. Use review-only or per-application approval if possible, limit where personal data is submitted, restrict access to the local resume and tracking files, and harden the LaTeX generation script before using untrusted or agent-generated resume content.
SKILL.md:97Authentication Credentials and Verification Codes Requested Through Discord
scripts/tailor_resume.py:66LaTeX Command Injection Through Unescaped Backslashes in Resume Data
scripts/tailor_resume.py:205Path Traversal and Arbitrary File Overwrite Through Unsanitized Output Arguments
The skill stores structured resume data, generated tailored resumes, logs, and application history on disk, but does not warn about local persistence of sensitive personal and employment information. In this job-application context, those files can reveal identity data, work history, target employers, and job-search activity, increasing exposure if the host is shared, backed up insecurely, or later accessed by other tools/users.
The skill automates submission of highly sensitive personal candidate data, including contact details and tailored resumes, to multiple third-party job platforms without any explicit user warning or consent language about external transmission. In this context, the omission is meaningful because the workflow is designed to repeatedly upload PII to external services and could cause privacy, compliance, or reputational harm if the user is unaware or the configuration is mis-scoped.
subprocess module calls execute external commands. Without careful input validation, this enables command injection.
def compile_pdf(tex_path: str, output_dir: str) -> str:
"""Compile LaTeX to PDF. Returns path to PDF or raises."""
result = subprocess.run(
["pdflatex", "-interaction=nonstopmode", "-output-directory", output_dir, tex_path],
capture_output=True, text=True, timeout=30
)
The file encodes an explicit religion-based exclusion rule: a job was skipped because the company is associated with lending and marked 'HARAM'. This creates a non-neutral decision policy based on a protected religious criterion without any indication of explicit user opt-in, which can lead an agent to make discriminatory filtering decisions and mishandle sensitive belief data in future automation.
The cron schedule is specified only in Central Time (CT), which imposes a locale-specific operating assumption in natural language. The file does not indicate that the timezone is configurable, user-selected, or justified as a region-specific requirement.
The JSON includes direct personal contact information such as full name, email, phone number, website, and city-level address in a broadly reusable data file with no evident access controls or scoping. While common in a resume context, this still creates a privacy exposure risk because any consumer of the file can extract and redistribute the data for spam, phishing, profiling, or unwanted contact.
No suspicious patterns detected.