Miggo Logo

CVE-2025-10630: Grafana-Zabbix ReDoS vulnerability

4.3

CVSS Score
3.1

Basic Information

EPSS Score
0.17942%
Published
9/19/2025
Updated
9/19/2025
KEV Status
No
Technology
TechnologyGo

Technical Details

CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:L
Package NameEcosystemVulnerable VersionsFirst Patched Version
github.com/alexanderzobnin/grafana-zabbixgo< 6.0.06.0.0

Vulnerability Intelligence
Miggo AIMiggo AI

Miggo AIRoot Cause Analysis

The vulnerability analysis began by examining the provided information, which indicated a ReDoS vulnerability in the grafana-zabbix plugin fixed in version 6.0.0. The vulnerable version range was specified as being below 6.0.0. To pinpoint the exact code changes that addressed the vulnerability, I compared the git tags for the last vulnerable version (5.2.1) and the first patched version (6.0.0). This comparison revealed a set of commits, among which 6a1d3b6abe7733eac1871cc4e50e36018176f172 stood out with the message "Add regex safety checks and tests for pathological patterns".

An in-depth analysis of this commit's diff showed significant changes in the pkg/zabbix/utils.go file, specifically within the parseFilter function. Prior to the patch, this function directly passed a user-controlled regex pattern to the regexp2.Compile function. This is the root cause of the ReDoS vulnerability. A malicious actor could craft a complex regex that would cause the compilation process to hang and consume excessive CPU resources.

The patch mitigates this vulnerability by introducing two key changes within parseFilter:

  1. It adds a call to a new function, isPathologicalRegex, which scans the input for known dangerous regex patterns.
  2. It replaces the direct, unbounded call to regexp2.Compile with a new wrapper function, safeRegexpCompile, which implements a 5-second timeout on the compilation process.

Based on this evidence, the zabbix.parseFilter function is confidently identified as the vulnerable function. During exploitation, this function would be on the stack trace as it processes the malicious, user-supplied regex, leading to the denial of service.

Vulnerable functions

zabbix.parseFilter
pkg/zabbix/utils.go
The `parseFilter` function is responsible for parsing a filter string which can contain a regular expression provided by the user. Before the patch, this function would directly attempt to compile the user-provided regex pattern using `regexp2.Compile`. A malicious user could provide a computationally expensive, or "pathological", regular expression (e.g., `/(a+)+/`) that would cause the regex engine to enter a state of catastrophic backtracking, consuming 100% of the CPU and leading to a Regular Expression Denial of Service (ReDoS). The function was vulnerable because it lacked input validation on the regex pattern and did not have a timeout mechanism for the compilation process.

WAF Protection Rules

WAF Rule

*r***n* is *n op*n-sour** pl*t*orm *or monitorin* *n* o*s*rv**ility. *r***n*-Z***ix is * plu*in *or *r***n* *llowin* to visu*liz* monitorin* **t* *rom Z***ix *n* *r**t* **s**o*r*s *or *n*lyzin* m*tri*s *n* r**ltim* monitorin*.  V*rsions *.*.* *n* **

Reasoning

T** vuln*r**ility *n*lysis ****n *y *x*minin* t** provi*** in*orm*tion, w*i** in*i**t** * R**oS vuln*r**ility in t** `*r***n*-z***ix` plu*in *ix** in v*rsion *.*.*. T** vuln*r**l* v*rsion r*n** w*s sp**i*i** *s **in* **low *.*.*. To pinpoint t** *x**