title: Unauthenticated, stored XSS in display of alarm reduction-key
description: Unauthenticated, stored cross-site scripting in the display of alarm reduction keys in multiple versions of OpenNMS Horizon and Meridian could allow an attacker access to confidential session information. Users
should upgrade to Meridian 2023.1.0 or newer, or Horizon 31.0.4. Meridian and
Horizon installation instructions state that they are intended for installation
within an organization's private networks and should not be directly accessible
from the Internet.
problem types: CWE-79 Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')
affected:
{
defaultStatus: unknown
modules: Alarm detail
platforms: [Windows, Linux, MacOS]
product: Horizon
repo: https://github.com/OpenNMS
vendor: The OpenNMS Group
versions:
lessThan: 31.0.4, status: affected, version: 26.1.0, versionType: git
}
{
defaultStatus: unaffected
modules: Alarm detail
platforms: [Windows, MacOS, Linux]
product: Meridian
repo: https://github.com/OpenNMS
vendor: The OpenNMS Group
versions:
lessThan: 2020.1.32, status: affected, version: 2020.1.0, versionType: git
lessThan: 2021.1.24, status: affected, version: 2021.1.0, versionType: git
lessThan: 2022.1.13, status: affected, version: 2022.1.0, versionType: git
status: unaffected, version: 2023.1.0
}
metrics:
cvssV3_1: [
attackComplexity: LOW
attackVector: ADJACENT_NETWORK
availabilityImpact: NONE
baseScore: 6.7
baseSeverity: MEDIUM
confidentialityImpact: HIGH
integrityImpact: HIGH
privilegesRequired: LOW
scope: UNCHANGED
userInteraction: REQUIRED
vectorString: CVSS:3.1/AV:A/AC:L/PR:L/UI:R/S:U/C:H/I:H/A:N
version: 3.1
]
format: CVSS
scenarios: GENERAL
solutions:
https://github.com/OpenNMS/opennms/pull/5506/files Upgrade to a newer version of Meridian or Horizon. Or change the details.jsp file as follows:
Change:
<th class="col-md-1">Reduction&nbsp;Key</th>
<td class="col-md-11" colspan="3">
<% if (alarm.getReductionKey() != null) {%>
<%=alarm.getReductionKey()%>
<% } else {%>
&nbsp;
<% }%>
To:
<th class="col-md-1">Reduction&nbsp;Key</th>
<td class="col-md-11" colspan="3">
<% if (alarm.getReductionKey() != null) {%>
<%=WebSecurityUtils.sanitizeString(alarm.getReductionKey())%>
<% } else {%>
&nbsp;
<% }%>
https://github.com/OpenNMS/opennms/pull/5506/files
https://github.com/OpenNMS/opennms/pull/5506/files
