The vulnerability stemmed from how markdown parser components processed user input. Key observations:
- The patch removed lodash's escape() from content before markdown parsing in Bold/BoldEmphasis/Emphasis/Link renderers, leaving raw user input exposed
- Marked.js doesn't automatically escape HTML by default when generating output
- The original code's escape() usage before markdown parsing was incorrect (escaped too early, breaking markdown syntax), but its removal without compensating output encoding created XSS vectors
- The fix in Strikethrough.ts (adding escape()) demonstrates the pattern required for safety
These renderers directly incorporated user-controlled content into HTML without proper contextual escaping, meeting CWE-79 criteria.