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.
Published: 2026-05-19
Score: 6.1 Medium
EPSS: < 1% Very Low
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

Template::Plugin::HTML versions through 3.102 do not escape single quotes within the html_filter function. When attribute values are enclosed in single quotes, an attacker can inject limited HTML and JavaScript, such as inserting an onclick handler that repeatedly alerts a value. The injected script can execute in the context of the web page, allowing defacement or theft of user credentials, but the injection is constrained because angle brackets, ampersands and double‑quotes remain escaped. This weakness is reflected in CWE‑79, an input validation failure that enables client‑side script execution.

Affected Systems

Any installation of Template::Plugin::HTML for Perl with a version of 3.102 or earlier. The vulnerability becomes relevant for applications that use this plugin to render user‑supplied data into web pages, including custom web frameworks or content management systems that integrate the plugin. No specific product family beyond the Perl module is listed, so any system employing the affected code is at risk.

Risk and Exploitability

The vulnerability can be exploited by any actor who can supply data that is passed through the html_filter into a template rendered with single‑quoted attributes. The required conditions are minimal: untrusted data reaching the template, use of single‑quoted attributes, and no additional sanitization of single quotes. Because the attack surface is the template rendering engine, an attacker with the ability to influence template input can create a cross‑site scripting flaw. The CVSS score is 6.1, the EPSS score is less than 1%, and the issue is not listed in CISA KEV, indicating limited publicly documented exploitation at this time. However, the nature of XSS makes it suitable for phishing or credential theft, so it should be considered a high risk for exposed web applications.

Generated by OpenCVE AI on May 20, 2026 at 15:23 UTC.

Remediation

Vendor Workaround

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


OpenCVE Recommended Actions

  • Upgrade Template::Plugin::HTML to the latest release, which fixes the single‑quote escaping bug
  • If an upgrade is not possible, adjust all template attribute values to be enclosed in double quotes rather than single quotes, satisfying the provided workaround
  • Additionally, implement server‑side validation to escape single quotes or strip suspicious input before rendering

Generated by OpenCVE AI on May 20, 2026 at 15:23 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Wed, 20 May 2026 14:30:00 +0000

Type Values Removed Values Added
Metrics cvssV3_1

{'score': 6.1, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N'}

ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'none', 'Technical Impact': 'partial'}, 'version': '2.0.3'}


Wed, 20 May 2026 11:45:00 +0000

Type Values Removed Values Added
First Time appeared Toddr
Toddr template::plugin::html
Vendors & Products Toddr
Toddr template::plugin::html

Wed, 20 May 2026 00:30:00 +0000

Type Values Removed Values Added
References

Tue, 19 May 2026 22:00:00 +0000

Type Values Removed Values Added
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.
Title Template::Plugin::HTML versions through 3.102 for Perl allows HTML and JavaScript to be injected
Weaknesses CWE-79
References

Subscriptions

Toddr Template::plugin::html
cve-icon MITRE

Status: PUBLISHED

Assigner: CPANSec

Published:

Updated: 2026-05-20T13:45:31.562Z

Reserved: 2026-03-28T19:35:11.737Z

Link: CVE-2026-5090

cve-icon Vulnrichment

Updated: 2026-05-19T23:25:21.832Z

cve-icon NVD

Status : Deferred

Published: 2026-05-19T22:16:39.003

Modified: 2026-05-20T14:17:02.610

Link: CVE-2026-5090

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-05-20T15:30:33Z

Weaknesses