T09 · Insecure Skill Coding Practices
- Location
templates/export/resume.html:112- Finding
Unescaped User-Controlled Data in Generated HTML Resume
- Content
View full analysis
Professional Summary
{{summary}}
Experience
{{job_title}} {{start_date}} – {{end_date}}{{company}} {{location}}- {{bullet}} ``` ### Technical Analysis The HTML template places resume data into HTML text nodes, an HTML attribute, and URL attributes without specifying context-aware output encoding: - `{{name}}`, `{{summary}}`, `{{company}}`, and similar fields are inserted into text contexts. - `{{template_class}}` is inserted into a quoted HTML attribute. - `{{linkedin}}` and `{{portfolio}}` are inserted into `href` attributes. Neither the template nor `prompts/export.md` requires HTML escaping, attribute escaping, URL parsing, or an allowed-scheme policy. If an integration performs direct placeholder substitution, crafted resume content can terminate the intended context and introduce arbitrary HTML. A malicious link can also use an unsafe scheme such as ...[truncated 1688 chars]
- Remediation
View remediation
