CVE-2025-58746 Overview
A critical Cross-Site Scripting (XSS) vulnerability has been identified in the Volkov Labs Business Links panel for Grafana that enables privilege escalation from Editor to Administrator. The Business Links panel provides an interface for navigating using external links, internal dashboards, time pickers, and dropdown menus. Prior to version 2.4.0, the plugin fails to properly sanitize user input in the [Layout] → [Link] → [URL] field, allowing malicious actors with Editor privileges to inject arbitrary JavaScript code and escalate their privileges to Administrator level.
Critical Impact
Attackers with Editor privileges can exploit this stored XSS vulnerability to escalate to Administrator privileges, enabling complete control over the Grafana instance including user management, data source configuration, and dashboard manipulation.
Affected Products
- Volkov Labs Business Links Panel for Grafana versions prior to 2.4.0
- Grafana instances utilizing the vulnerable Business Links plugin
- Organizations using Grafana with multi-user Editor role assignments
Discovery Timeline
- 2025-09-08 - CVE-2025-58746 published to NVD
- 2025-09-09 - Last updated in NVD database
Technical Details for CVE-2025-58746
Vulnerability Analysis
This vulnerability is classified as CWE-79 (Improper Neutralization of Input During Web Page Generation), commonly known as Cross-Site Scripting (XSS). The flaw exists in the Link Editor component of the Business Links panel where user-supplied URL values are not properly sanitized before being rendered in the browser context.
When an Editor-level user configures a link within the Business Links panel, the URL field accepts arbitrary input without validation. This input is later executed in the browser context of any user viewing the affected dashboard, including Administrators. By crafting a malicious JavaScript payload, an attacker can hijack an Administrator's session, steal authentication tokens, or directly execute administrative API calls using the victim's elevated privileges.
The attack is particularly dangerous because it leverages Grafana's trusted plugin ecosystem. Users with Editor privileges are generally considered semi-trusted, but this vulnerability breaks that trust model by allowing horizontal movement to Administrator-level access.
Root Cause
The root cause of this vulnerability is the absence of URL sanitization in the LinkEditor component. The plugin directly processes user-supplied URL values without leveraging Grafana's built-in sanitization utilities. The vulnerable code path allows JavaScript URIs (such as javascript:) and other malicious payloads to be stored and subsequently executed.
Attack Vector
The attack requires network access and low privileges (Editor role). An attacker with Editor access creates or modifies a dashboard containing the Business Links panel. By inserting a malicious JavaScript payload into the URL field of a link configuration, the attacker creates a stored XSS condition. When an Administrator views the compromised dashboard, the malicious script executes in their browser session, allowing the attacker to perform actions with Administrator privileges including creating new admin accounts, modifying security settings, or exfiltrating sensitive data.
The security patch introduces proper URL sanitization by importing and utilizing Grafana's textUtil sanitization functions:
-import { DataFrame, IconName, SelectableValue } from '@grafana/data';
+import { DataFrame, IconName, SelectableValue, textUtil } from '@grafana/data';
import {
getAvailableIcons,
InlineField,
Source: GitHub Commit Record
Detection Methods for CVE-2025-58746
Indicators of Compromise
- Unexpected JavaScript code or javascript: URI schemes in Business Links panel configurations
- Dashboard JSON exports containing suspicious URL patterns with encoded script content
- Anomalous administrative actions performed by users without Administrator role assignments
- Browser console errors or unexpected script execution when viewing dashboards with Business Links panels
Detection Strategies
- Audit Grafana dashboard configurations for Business Links panels containing suspicious URL values
- Monitor Grafana audit logs for privilege escalation events or unexpected role changes
- Implement Content Security Policy (CSP) headers to detect and block inline script execution
- Review recent dashboard modifications by Editor-level users for anomalous link configurations
Monitoring Recommendations
- Enable and monitor Grafana's built-in audit logging for administrative API calls
- Deploy browser-based XSS detection and reporting mechanisms
- Configure alerts for new Administrator account creation or role modifications
- Implement periodic scanning of dashboard JSON configurations for malicious patterns
How to Mitigate CVE-2025-58746
Immediate Actions Required
- Upgrade the Volkov Labs Business Links panel to version 2.4.0 or later immediately
- Audit all existing dashboards using the Business Links panel for suspicious URL configurations
- Review Grafana audit logs for any signs of privilege escalation or unauthorized administrative actions
- Consider temporarily disabling the Business Links plugin if immediate upgrade is not possible
Patch Information
The vulnerability has been remediated in version 2.4.0 of the Volkov Labs Business Links panel. The fix implements proper URL sanitization using Grafana's built-in textUtil functions to prevent JavaScript injection through the URL field. Organizations should update to this version or later as soon as possible.
For detailed patch information, refer to the GitHub Security Advisory GHSA-93qj-gv4p-mf53 and the commit implementing the fix.
Workarounds
- Restrict Editor role assignments to only trusted personnel until the patch is applied
- Implement strict Content Security Policy headers to mitigate XSS impact
- Temporarily uninstall or disable the Business Links plugin if patching is delayed
- Use Grafana's folder-level permissions to limit which users can modify dashboards containing the vulnerable plugin
# Configuration example
# Verify Business Links plugin version in Grafana CLI
grafana-cli plugins ls | grep business-links
# Update the plugin to patched version
grafana-cli plugins update volkovlabs-business-links
# Restart Grafana service after update
sudo systemctl restart grafana-server
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

