Hugo: XSS via unescaped code-fence language in default code block renderer
Date: 2026-06
Affected: go/github.com/gohugoio/hugo
Attack vector: xss
Category: vulnerability-disclosure
Severity: Medium
CWE: CWE-79

Hugo's default code-block renderer wrote the Markdown code-fence language / info-string into the `<code class="language-…" data-lang="…">` wrapper without HTML escaping. A fence info-string containing a quote and a `<script>` payload breaks out of the attribute and injects a live script element. This is not an issue if you fully trust every file under /content and every content adapter you load.


Mitigations:

Architectural layers (MAESTRO):