Miggo Logo

CVE-2025-46827: Graylog Allows Session Takeover via Insufficient HTML Sanitization

8

CVSS Score
3.1

Basic Information

EPSS Score
0.10898%
Published
5/7/2025
Updated
5/13/2025
KEV Status
No
Technology
TechnologyJava

Technical Details

CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:U/C:H/I:H/A:H
Package NameEcosystemVulnerable VersionsFirst Patched Version
org.graylog2:graylog2-servermaven<= 6.0.136.0.14
org.graylog2:graylog2-servermaven>= 6.1.0, <= 6.1.96.1.10

Vulnerability Intelligence
Miggo AIMiggo AI

Miggo AIRoot Cause Analysis

The vulnerability allows session takeover via insufficient HTML sanitization, specifically in the 'Event Definition Remediation Step field'. The analysis of the patches shows two main areas of concern:

  1. Backend DTOs: Methods like org.graylog.events.processor.EventDefinitionDto.remediationSteps() (and similarly description() in content pack DTOs) were patched to add @JsonSerialize(converter = HTMLSanitizerConverter.class). This indicates that previously, these methods returned raw strings which, when serialized to JSON for the frontend, would include any malicious HTML/JavaScript. This unsanitized data is the core of the vulnerability on the backend side.
  2. Frontend Components: The Markdown.tsx component, likely used for rendering these fields, had its sanitization logic (using DOMPurify and marked) strengthened. This implies its previous sanitization was insufficient. Additionally, markdown editor components like MDBaseEditor.tsx (and its consumers Editor.tsx, EditorModal.tsx) had sanitization added/enhanced for input events like onBlur and onPaste.

The exploitation occurs when an attacker submits HTML in a field like 'Remediation Steps', which is then stored and later rendered to a victim. The identified backend functions are responsible for providing this data for serialization without prior sanitization. The identified frontend component (Markdown) is responsible for rendering this data, and its previous state allowed script execution. The editor component (MDBaseEditor) was involved in the input phase.

Vulnerable functions

Only Mi**o us*rs **n s** t*is s**tion

WAF Protection Rules

WAF Rule

### Imp**t It is possi*l* to o*t*in us*r s*ssion *ooki*s *y su*mittin* *n *TML *orm *s p*rt o* *n *v*nt ***inition R*m**i*tion St*p *i*l*. *or t*is *tt**k to su*****, t** *tt**k*r n***s * us*r ***ount wit* p*rmissions to *r**t* *v*nt ***initions, w*

Reasoning

T** vuln*r**ility *llows s*ssion t*k*ov*r vi* insu**i*i*nt *TML s*nitiz*tion, sp**i*i**lly in t** '*v*nt ***inition R*m**i*tion St*p *i*l*'. T** *n*lysis o* t** p*t***s s*ows two m*in *r**s o* *on**rn: *. ***k*n* *TOs: M*t*o*s lik* `or*.*r*ylo*.*v*nt