CVE-2026-5090
Template::Plugin::HTML versions before 3.103 for Perl allows HTML and JavaScript to be injected
Template::Plugin::HTML versions before 3.103 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.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- None
- User interaction
- Required
What an attacker can affect
- Confidentiality
- Low
- Integrity
- Low
- Availability
- None
Exploit likelihood
What each source reports
CVE List Score used
6.1
Template::Plugin::HTML versions before 3.103 for Perl allows HTML and JavaScript to be injected
Template::Plugin::HTML versions before 3.103 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.
- Record
CVE-2026-5090- CVSS 3.1
- 6.1 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N - Weakness
- CWE-79
- Updated
- 2026-11-02
EUVDEUVD-2026-30995
6.1
Template::Plugin::HTML versions before 3.103 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.
- Record
EUVD-2026-30995- CVSS 3.1
- 6.1 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N - Updated
- 2026-11-02
GitHub AdvisoriesGHSA-xhg9-j279-j625
6.1
Template::Plugin::HTML versions through 3.102 for Perl allows HTML and JavaScript to be injected....
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.
- Record
GHSA-xhg9-j279-j625- CVSS 3.1
- 6.1 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N - Weakness
- CWE-79
- Updated
- 2026-11-02
NVD
6.1
Template::Plugin::HTML versions before 3.103 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.
- Record
CVE-2026-5090- CVSS 3.1
- 6.1 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N - Weakness
- CWE-79
- Updated
- 2026-11-02
OSV
6.1
Template::Plugin::HTML versions before 3.103 for Perl allows HTML and JavaScript to be injected
Template::Plugin::HTML versions before 3.103 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.
- Record
CVE-2026-5090- CVSS 3.1
- 6.1 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N - Weakness
- CWE-79
- Updated
- 2026-11-02
OSVDEBIAN-CVE-2026-5090
6.1
Template::Plugin::HTML versions before 3.103 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.
- Record
DEBIAN-CVE-2026-5090- CVSS 3.1
- 6.1 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N - Updated
- 2026-11-02
OSVUBUNTU-CVE-2026-5090
6.1
Template::Plugin::HTML versions before 3.103 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.
- Record
UBUNTU-CVE-2026-5090- CVSS 3.1
- 6.1 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N - Updated
- 2026-11-02
OSVMGASA-2026-0166 No score
Updated perl-Template-Toolkit packages fix security vulnerability
Template::Plugin::HTML versions through 3.102 for Perl allows HTML and JavaScript to be injected. (CVE-2026-5090)
- Record
MGASA-2026-0166- Updated
- 2026-11-02
OSVUSN-8377-1 No score
libtemplate-perl vulnerability
It was discovered that Template-Toolkit did not properly escape single quotes in the html_filter function of Template::Plugin::HTML. An attacker could possibly use this issue to inject arbitrary HTML and JavaScript into generated output.
- Record
USN-8377-1- Updated
- 2026-11-02
Affected packages
| Package | Affected | Fixed |
|---|---|---|
libtemplate-perlDebian:12 |
All versions, plus listed versions 2.27-13.102-13.102-23.102-33.106-1 |
None known |
libtemplate-perlDebian:13 |
All versions, plus listed versions 2.27-13.102-13.102-23.102-33.106-1 |
None known |
libtemplate-perlDebian:14 |
before 3.102-3, plus listed versions 2.27-13.102-13.102-2 |
3.102-3 |
perl-Template-ToolkitMageia:9 |
before 3.101.0-1.1.mga9 | 3.101.0-1.1.mga9 |
libtemplate-perlUbuntu:16.04:LTS |
All versions, plus listed versions 2.24-1.2build12.24-1.2build2 |
None known |
libtemplate-perlUbuntu:18.04:LTS |
All versions, plus listed versions 2.24-1.2build52.27-1 |
None known |
libtemplate-perlUbuntu:20.04:LTS |
All versions, plus listed versions 2.27-1build12.27-1build2 |
None known |
libtemplate-perlUbuntu:22.04:LTS |
before 2.27-1ubuntu0.22.04.1, plus listed versions 2.27-1build42.27-1build5 |
2.27-1ubuntu0.22.04.1 |
libtemplate-perlUbuntu:24.04:LTS |
before 2.27-1ubuntu0.24.04.1, plus listed versions 2.27-1build72.27-1build82.27-1build92.27-1build10 |
2.27-1ubuntu0.24.04.1 |
libtemplate-perlUbuntu:25.10 |
before 2.27-1ubuntu0.25.10.1, plus listed versions 2.27-1build11 |
2.27-1ubuntu0.25.10.1 |
libtemplate-perlUbuntu:26.04:LTS |
before 3.102-1ubuntu0.1, plus listed versions 2.27-1build113.102-1 |
3.102-1ubuntu0.1 |
History
| Recorded | Changed | Sources |
|---|---|---|
| first indexed | CVE List, EUVD, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2026-5090 is a medium vulnerability (CVSS 6.1) in libtemplate-perl, published May 19, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.29%, the 21st percentile. Fixed in libtemplate-perl 3.102-3.
References
github.com/abw/Template2/issues/327
github.com/cpan-authors/Template2/commit/ca539f49f6ffd1c2b7d9ef4f48f6b88292418734.patch
metacpan.org/release/TODDR/Template-Toolkit-3.103/changes
openwall.com/lists/oss-security/2026/05/19/40
nvd.nist.gov/vuln/detail/CVE-2026-5090
github.com/abw/Template2/pull/337/changes/11c78a7a771d4af505efeb754a0b8775689c2eae
Show 12 moreShow less
github.com/advisories/GHSA-xhg9-j279-j625
cpan.org/modules
github.com/CVEProject/cvelistV5/tree/main/cves/2026/5xxx/CVE-2026-5090.json
github.com/abw/Template2
security-tracker.debian.org/tracker/CVE-2026-5090
advisories.mageia.org/MGASA-2026-0166.html
bugs.mageia.org/show_bug.cgi?id=35554
ubuntu.com/security/CVE-2026-5090
cve.org/CVERecord?id=CVE-2026-5090
lists.security.metacpan.org/cve-announce/msg/40218729
github.com/cpan-authors/Template2/pull/337
ubuntu.com/security/notices/USN-8377-1