Back to skill

Security audit

Resume Assistant

Security checks for vulnerabilities and agentic risk

Overview

This is a coherent resume-assistant prompt package, with no hidden execution or persistence, but users should handle resume data and HTML exports carefully.

Before installing, assume resume content may be processed by your chosen agent or LLM provider and redact unnecessary personal details. Prefer explicit /resume commands for sensitive documents, confirm before exporting files, and ensure any HTML export implementation escapes user fields and blocks unsafe link schemes.

Vulnerability Patterns
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (1)

T09 · Insecure Skill Coding Practices

Warning
Location
templates/export/resume.html:113
Finding

Unescaped User-Controlled Data in Exported HTML Resume

Content
View full analysis

{{name}}

{{email}} · {{phone}} · {{location}}
LinkedIn · Portfolio

Professional Summary

{{summary}}

Experience

{{job_title}} {{start_date}} – {{end_date}}
{{company}} {{location}}
  • {{bullet}}

Education

{{degree}} in {{major}} {{graduation_date}}
{{university}}

Skills

Technical: {{technical_skills}} Tools: {{tools}} Languages: {{ ...[truncated 2898 chars]
Remediation
View remediation

javascript:alert(1) javascript:alert(1) ``` The tests should verify that injected markup is rendered as inert text and that unsafe links are rejected. ]]>

Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (28)

Hidden Instructions

High
Category
Prompt Injection
Confidence
70% confidence
Finding

Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.

Content

Scanner excerpt · templates/academic.md (reported line 78)May include surrounding context.

md
---

<!-- Template: Academic
     Style: Formal academic CV, multi-page supported
     Best for: Faculty, postdoc, research, PhD applications
     Font suggestion: Times New Roman 11pt or Garamond 11pt

Hidden Instructions

High
Category
Prompt Injection
Confidence
70% confidence
Finding

Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.

Content

Scanner excerpt · templates/minimal.md (reported line 33)May include surrounding context.

md
---

<!-- Template: Minimal
     Style: Ultra-clean, whitespace-focused, maximum content density
     Best for: Senior professionals, engineering, experienced candidates
     Font suggestion: System UI 11pt

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The README encourages very broad natural-language triggering using common phrases like 'Here's my resume, can you help?' and 'What's wrong with my resume?'. In agent environments that auto-route skills based on user text, this can cause unintended invocation and accidental processing of sensitive resume data without clear user confirmation.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The integration section shows resume content being sent to an API endpoint, but the README does not warn users that highly sensitive personal data may be transmitted to external services. Because resumes commonly contain contact details, employment history, and other PII, users may unknowingly expose private information to third-party processing.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · README.md (reported line 177)May include surrounding context.

Option 3: REST API

bash
curl -X POST https://your-agent-api.com/skills/resume-assistant/polish \
  -H "Content-Type: application/json" \
  -d '{
    "resume_content": "Your resume content...",

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · README_ZH.md (reported line 187)May include surrounding context.

Option 3: REST API

bash
curl -X POST https://your-agent-api.com/skills/resume-assistant/polish \
  -H "Content-Type: application/json" \
  -d '{
    "resume_content": "Your resume content...",

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The README encourages very broad natural-language triggering such as '帮我看看' or '这是我的简历,帮我看看', which can cause the agent to invoke this skill from ordinary conversation without strong user confirmation or parameter validation. In an agent environment with automatic routing, this increases the chance of unintended processing of sensitive resume data or accidental execution of export/customization flows.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill advertises activation through very broad natural-language phrases such as general resume-help requests, which overlap heavily with ordinary conversation. In an agent environment that auto-routes tools from user intent, this can cause unintended invocation on sensitive resume content or job descriptions without an explicit opt-in boundary.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · SKILL.md (reported line 202)May include surrounding context.

bash
# Polish a resume
curl -X POST https://your-agent-api.com/skills/resume-assistant/polish \
  -H "Content-Type: application/json" \
  -d '{
    "resume_content": "Your resume content...",

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The routing keywords are generic terms like 'fix', 'job', 'download', and 'evaluate', which are common across many agent tasks. In a multi-skill agent, this increases the chance that unrelated user requests are misrouted into this skill, potentially exposing private content or causing inappropriate transformations/exports.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The skill advertises very broad natural-language triggers such as '这是我的简历,帮我看看' and '帮我写一份…', with no explicit scoping or confirmation step. In an agent that auto-routes skills based on conversational text, this can cause accidental invocation on ordinary chat content or pasted documents, potentially leading to unintended processing of sensitive resume data or unwanted actions like export/customization flows.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · SKILL_ZH.md (reported line 211)May include surrounding context.

bash
# 简历润色
curl -X POST https://your-agent-api.com/skills/resume-assistant/polish \
  -H "Content-Type: application/json" \
  -d '{
    "resume_content": "你的简历内容...",

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The routing logic maps generic concepts like '润色/优化/修改', '求职/申请/匹配', and '导出/下载/转换' directly to commands without disambiguation rules. In a multi-skill agent, these broad intent buckets can overmatch unrelated user requests and trigger processing or transformation of user content that was not meant for this skill.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The skill advertises very broad natural-language triggers such as 'Here's my resume, can you help?' and 'What's wrong with my resume?', which can cause accidental or overbroad invocation in normal conversation. This increases the chance users will paste sensitive resume or job-description data without clearly understanding they are invoking a workflow that may process and transform personal information.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The usage guidance encourages users to submit resumes, job descriptions, employment history, education, and other potentially sensitive personal data, but it does not warn users about privacy considerations or recommend redacting unnecessary identifiers. In a resume-assistant context this omission is meaningful because the core workflow is built around collecting and processing high-value personal and professional information.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The manifest sets the optional "language" argument default to "en" for multiple commands, which means the skill will prefer English unless the user overrides it. Under the policy, forcing a specific language without explicit user choice can be a natural-language policy violation when no justification or opt-in is provided.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The natural-language triggers are broad phrases such as 'convert to', 'save as', 'create a resume for', and 'review my resume', which can match ordinary conversation and cause the skill to activate when the user did not explicitly intend to invoke it. In a resume assistant, unintended activation can lead to incorrect routing of user input, accidental processing of sensitive resume/job-description content, and confusion or policy bypass in multi-skill environments.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The manifest repeatedly states that resume language is only 'en' or 'zh' and defaults to English, while supported_languages is restricted to those two values. This is a language/locale policy concern because the skill appears to force a limited language set without user opt-in or a documented region-specific justification.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The natural-language triggers include generic phrases such as "convert to", "save as", "create a resume for", and "review my resume" that can match ordinary user utterances without clearly scoped command intent. This can cause unintended command routing or over-activation, especially where export/customize actions may process sensitive resume content or job descriptions unexpectedly.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
82% confidence
Finding

The documentation advertises export to Word, HTML, LaTeX, and PDF without warning that user-supplied resume content will be transformed into generated artifacts, potentially written to disk or passed through conversion tooling. While the README alone does not perform the export, omitting safety expectations can lead integrators to enable output generation on sensitive personal data without adequate consent, sanitization, or secure handling.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
78% confidence
Finding

文档明确仅“完整支持” en 和 zh,配置中 supported_languages 也只列出这两种语言,但未说明是否允许用户保留其他语言输入、获得降级支持,或该限制为何必要。对通用简历技能而言,这种语言范围限制若无明确用户选择或正当范围说明,可能构成语言/locale 政策问题。

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
86% confidence
Finding

This markdown file is entirely presented in Chinese and functions as a language-specific skill/example without indicating that the user can choose another language or that the scope is intentionally China/Chinese-locale only. Under the policy rule for natural-language violations, a fixed language can be an issue when no opt-in or justification is provided.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
88% confidence
Finding

The checklist includes a locale-specific requirement, 'For zh: proper spacing between Chinese and English/numbers,' which introduces a language-specific policy expectation inside a general resume-polishing prompt. Although the file accepts a {{language}} input, it does not explicitly frame this as an optional user choice or justify the locale constraint, so it can be read as enforcing a specific language convention.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
81% confidence
Finding

The prompt includes a required output/input language field ({{language}}), which can enforce a specific language or locale in the skill behavior. The file does not state that the user selected this language or that language choice is optional, so it presents a mild natural-language policy concern under locale-choice rules.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
75% confidence
Finding

The manifest advertises only "en" and "zh" in supported languages and provides conversation starters only in those languages. While not inherently unsafe, this can amount to a language/locale policy issue because the skill appears to constrain language support without an explicit opt-in or clear justification.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.