GGUF's free-text metadata fields — general.description, general.author, general.name, general.tags — exist to be shown to humans: model cards, hub listings, local UIs that surface "about this model" panels. Nothing in the format restricts what characters go in them, and nothing requires a downstream renderer to escape them before dropping them into HTML.
This specimen sets general.description to a friendly one-line summary followed by an inline <script> tag that reads document.cookie and sends it to an external host. A parser that only cares about tokenizing weights will pass this straight through untouched. A web UI that renders the description as-is executes it.
llmscan scans every string value under the general.* free-text keys for HTML/JS injection patterns — <script>, javascript:, on*= handlers, <iframe> — before the model ever gets in front of a browser, and flags it HIGH rather than treating metadata as inherently safe text.
See the real report
This isn't a mockup — the screenshot above is cropped from a real, cached scan report.
GGUF's free-text metadata fields — general.description, general.author, general.name, general.tags — exist to be shown to humans: model cards, hub listings, local UIs that surface "about this model" panels. Nothing in the format restricts what characters go in them, and nothing requires a downstream renderer to escape them before dropping them into HTML.
This specimen sets general.description to a friendly one-line summary followed by an inline <script> tag that reads document.cookie and sends it to an external host. A parser that only cares about tokenizing weights will pass this straight through untouched. A web UI that renders the description as-is executes it.
llmscan scans every string value under the general.* free-text keys for HTML/JS injection patterns — <script>, javascript:, on*= handlers, <iframe> — before the model ever gets in front of a browser, and flags it HIGH rather than treating metadata as inherently safe text.