CVE-2026-5090: Template::Plugin::HTML versions through 3.102 for Perl allows HTML and JavaScript to be injected Robert Rothenberg 19 May 2026 21:31 UTC

========================================================================
CVE-2026-5090                                        CPAN Security Group
========================================================================

         CVE ID:  CVE-2026-5090
   Distribution:  Template-Toolkit
       Versions:  through 3.102

       MetaCPAN:  https://metacpan.org/dist/Template-Toolkit
       VCS Repo:  https://github.com/abw/Template2

Template::Plugin::HTML versions through 3.102 for Perl allows HTML and
JavaScript to be injected

Description
-----------
Template::Plugin::HTML versions through 3.102 for Perl allows HTML and
JavaScript to be injected.

The html_filter function did not escape single quotes. HTML attributes
inside of single quotes could be have code injected.  For example, the
variable "var" in

     <a id='ref' title='[% var | html %]'>

would not be properly escaped. An attacker could insert some limited
HTML and JavaScript, for example,

     var = " ' onclick='while (true) { alert(1) }'"

Note that arbitrary HTML and JavaScript would be difficult to inject,
because angle brackets, ampersands and double-quotes would still be
escaped.

Problem types
-------------
- CWE-79 Improper Neutralization of Input During Web Page Generation

Workarounds
-----------
Attribute values in templates that contain escaped HTML should use
double quotes instead of single quotes.

References
----------
https://github.com/abw/Template2/issues/327
https://github.com/abw/Template2/pull/337/changes/11c78a7a771d4af505efeb754a0b8775689c2eae

Timeline
--------
- 2024-12-01: Issue reported in GitHub.
- 2026-02-21: Pull request submitted.
- 2026-03-22: Pull request merged.
- 2026-03-22: Issue reported to CPANSec.
- 2026-03-28: CVE assigned.