CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



CVE-2026-55841

CVE-2026-55841: Log Evasion and Tampering in Graylog FortiGate Syslog Parser

Alon Barad
Alon Barad
Software Engineer

Aug 29, 2026·7 min read·1 visit

Executive Summary (TL;DR)

Unauthenticated attackers can inject specially crafted syslog packets containing specific key-value structures to strip or overwrite top-level log metadata like source IP addresses, timestamps, and routing info, enabling comprehensive defense evasion.

A high-severity log evasion and tampering vulnerability in Graylog's FortiGate key-value syslog parser allows unauthenticated remote attackers to modify, delete, or overwrite critical security log fields, potentially bypassing security controls and monitoring systems.

Vulnerability Overview

Graylog Server and Graylog Forwarder utilize specialized syslog codecs to ingest and parse log messages from a wide array of network security infrastructure. Among these, the FortiGate syslog parser is responsible for decoding key-value formatted diagnostic and audit data emitted by FortiGate enterprise firewalls. The integrity of this ingestion process is vital to downstream security operations, including automated threat detection, incident response workflows, and compliance-driven log retention.

A serious security vulnerability, tracked as CVE-2026-55841 (and GHSA-gqr6-r77p-c2pj), exists within Graylog's FortiGate parser components, specifically GLFortiGateSyslogEvent.java and SyslogCodec.java. The vulnerability is classified under CWE-138 (Improper Neutralization of Special Elements). It occurs because the ingestion parser mishandles field-like text nested within quoted values, enabling unauthenticated remote senders to systematically strip or corrupt critical log fields.

The attack surface is exposed through any active TCP or UDP syslog input configured with the FortiGate codec. Since syslog listeners typically operate without transport-layer authentication, any remote attacker who can transmit network traffic to the logging port, or route traffic containing crafted URL parameters through a monitored firewall, can trigger the vulnerability. The resultant parser misbehavior can render security alerts non-functional and blind security teams to ongoing attacks.

Root Cause Analysis

The technical root cause of CVE-2026-55841 consists of two distinct parsing vulnerabilities involving naive regular expression post-processing and improper boundary tokenization. To understand the implementation flaw, it is necessary to examine how Graylog handled equals signs (=) nested inside legitimate field values, such as HTTP query parameters. Because the underlying third-party parser, syslog4j (v0.9.61), would erroneously parse parameters inside url="/index.php?param=value" as standalone top-level fields, Graylog developers implemented a custom cleanup routine in GLFortiGateSyslogEvent.getFields().

This cleanup filter scanned all parsed field values using two static regular expressions: KV_PATTERN (compiled as (\w+)=([^\s\"]*)) and QUOTED_KV_PATTERN (compiled as (\w+)=\"([^\"]*)\"). If a field value contained an equals sign, the parser collected the key names of any nested parameters into a temporary set called removalKeys. After iterating over all fields, the method invoked removalKeys.forEach(fields::remove). Because this removal process is global and context-insensitive, if the cleanup routine matched any key-value structure within a URL or message string, it deleted the corresponding authentic top-level fields of that name from the entire log entry.

Simultaneously, the second flaw lies in the syslog4j (v0.9.61) tokenizer itself, which failed to correctly handle backslash-escaped quotes (\") within quoted field values. When the tokenizer encountered an escaped quote inside a string, it treated the escape sequence as the terminal boundary of the current field. This allowed any trailing substring inside the quotes to spill out and be parsed as new, standalone top-level fields. Consequently, an attacker could force the parser to overwrite existing security fields (such as srcip) with malicious payloads.

Code-Level Vulnerability Analysis

The flawed processing logic in GLFortiGateSyslogEvent.getFields() illustrates how the global removal mechanism was constructed. The custom wrapper class iterated over the parsed fields and matched nested key structures inside legitimate values, as shown in the vulnerable code path:

// VULNERABLE COMPONENT: GLFortiGateSyslogEvent.java
@Override
public Map<String, String> getFields() {
    Map<String, String> fields = new HashMap<>(super.getFields());
    Set<String> removalKeys = new HashSet<>();
    for (Map.Entry<String, String> entry : fields.entrySet()) {
        String value = entry.getValue();
        if (value != null && value.contains("=")) {
            Matcher matcher = KV_PATTERN.matcher(value);
            while (matcher.find()) {
                removalKeys.add(matcher.group(1)); // Erroneously collects the key name
            } 
            matcher = QUOTED_KV_PATTERN.matcher(value);
            while (matcher.find()) {
                removalKeys.add(matcher.group(1)); // Erroneously collects quoted key name
            }
        }
    }
    // Global destruction of all collected keys, regardless of origin
    removalKeys.forEach(fields::remove);
    return fields;
}

To resolve this vulnerability, Graylog engineers entirely deleted the custom wrapper class GLFortiGateSyslogEvent.java and upgraded the upstream syslog4j library to version 0.9.63 in the Maven configuration. The updated syslog4j parser implements a state-aware tokenizer capable of natively distinguishing nested values and escaped quotes. The corresponding patch in SyslogCodec.java removes reference to the custom wrapper and instantiates the clean FortiGateSyslogEvent directly:

// PATCHED COMPONENT: SyslogCodec.java
- import org.graylog2.inputs.codecs.GLFortiGateSyslogEvent;
+ import org.graylog2.syslog4j.server.impl.event.FortiGateSyslogEvent;
  ...
  } else if (FORTIGATE_PATTERN.matcher(msg).matches()) {
-     e = new GLFortiGateSyslogEvent(msg.trim(), defaultTimeZone);
+     e = new FortiGateSyslogEvent(msg.trim(), defaultTimeZone);
  }

By migrating tokenization directly to the native, state-based parser in syslog4j v0.9.63, the system no longer executes post-processing key-stripping loops. This ensures that parameters embedded inside quoted fields like URLs are correctly preserved without causing the collateral erasure of primary metadata fields.

Exploitation Methodology

An attacker can exploit CVE-2026-55841 through two primary attack vectors. The first is passive exploitation, which requires no direct communication with Graylog. An attacker can target a system situated behind a monitored FortiGate firewall and execute a network transaction—such as a crafted HTTP GET request—containing parameters named after critical log metadata fields. The firewall generates a syslog event containing the malicious string, which triggers the global cleanup vulnerability upon reaching Graylog, deleting the attacker's source IP address from the security index.

The second vector is active exploitation, where an attacker sends a spoofed UDP or TCP syslog packet directly to the Graylog input port. This method allows the attacker to manipulate the parsing topology of any ingested log fields. For instance, sending a message containing backslash-escaped quotes terminates the parsing string prematurely, causing the remaining string to overwrite adjacent fields.

The conceptual logic of this parsing exploitation is outlined below:

Because the cleanup parser does not validate whether the source of a deletion key is a nested URL query parameter or a primary syslog key, sending any text value containing srcip= or date= leads to the immediate destruction of those keys. No specialized exploitation frameworks are required to trigger this state; a simple netcat utility transmitting the payload over UDP is sufficient to bypass detection.

Impact Assessment

The impact of CVE-2026-55841 is characterized by a complete compromise of log integrity and audit reliability. By systematically stripping critical identifiers such as source IP addresses (srcip), destination IP addresses (dstip), and admin action states, an attacker can blind correlation engines, intrusion detection systems, and SIEM dashboards to active threats. Automated alerts built to flag brute-force attempts, data exfiltration, or unauthorized API access will fail to fire if the identifying fields are eliminated prior to indexing.

Furthermore, by targeting structural metadata fields such as date, time, and tz (timezone), attackers can cause Graylog to ingest records without temporal context. Because Elasticsearch and OpenSearch databases require precise timestamps to organize data indexes, log records lacking valid temporal metadata are either rejected outright as malformed or cataloged under arbitrary, incorrect dates. This provides attackers with a reliable mechanism to execute targeted log denial-of-service, rendering search queries during forensic investigations completely ineffective.

The vulnerability is assigned a CVSS v3.1 base score of 7.5, reflecting its low attack complexity, lack of privilege requirements, and severe integrity impact. While it does not allow direct remote code execution on the underlying server, its utility as an evasion mechanism for sophisticated actors makes it a high-risk security issue.

Remediation & Mitigation Guidance

Remediation of CVE-2026-55841 requires upgrading the affected Graylog deployments to the latest patched releases. Graylog Server installations must be upgraded to version 6.3.12, 7.0.7, or 7.1.2 or higher. Graylog Forwarder installations must be upgraded to version 7.3 or higher. These updates replace the custom post-processing filter with the secure, state-aware syslog4j v0.9.63 library.

If immediate software upgrades are not feasible, organizations should implement the following defensive workarounds:

  1. Network-Level Access Control Lists (ACLs): Restrict access to UDP and TCP syslog listener ports (typically port 514) using strict firewall rules. Ensure that only designated, trusted FortiGate devices or centralized syslog collectors can transmit traffic to the Graylog input ports.

  2. Alternative Pipeline Parsing: Temporarily disable the native FortiGate syslog input codec. Configure a raw syslog input receiver and develop manual extraction logic using secure Graylog Pipelines. The custom pipeline regexes must use strict extraction patterns and avoid global recursive deletion operations.

Official Patches

GraylogOfficial GHSA Security Advisory
GraylogFix Pull Request for 6.3.12
GraylogFix Pull Request for 7.0.7
GraylogFix Pull Request for 7.1.2
GraylogFix Pull Request for Forwarder 7.3.0

Fix Analysis (1)

Technical Appendix

CVSS Score
7.5/ 10
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N

Affected Systems

Graylog ServerGraylog ForwarderFortiGate Syslog Ingestion Pipeline

Affected Versions Detail

Product
Affected Versions
Fixed Version
Graylog Server
Graylog
< 6.3.126.3.12
Graylog Server
Graylog
>= 7.0.0-alpha.1, < 7.0.77.0.7
Graylog Server
Graylog
>= 7.1.0-alpha.1, < 7.1.27.1.2
Graylog Forwarder
Graylog
< 7.3.07.3.0
AttributeDetail
CWE IDCWE-138: Improper Neutralization of Special Elements
Attack VectorNetwork (AV:N)
CVSS v3.1 Score7.5 (High)
EPSS ScoreN/A (Published 2026)
Exploit MaturityPoC / Conceptual
KEV StatusNot Listed
ImpactLog Tampering, Evasion of Security Monitoring, Data Loss

MITRE ATT&CK Mapping

T1562.001Impair Defenses: Disable or Modify Tools
Defense Evasion
T1070Indicator Removal
Defense Evasion
CWE-138
Improper Neutralization of Special Elements

The software receives input from an upstream component, but it does not neutralize or incorrectly neutralizes special elements that are sent to a downstream component, which alters the structured interpretation of the input.

Vulnerability Timeline

Security fixes implemented in graylog2-server codebase
2026-05-19
Complete public disclosure of GHSA-gqr6-r77p-c2pj and CVE-2026-55841 assigned
2026-08-28

References & Sources

  • [1]GHSA-gqr6-r77p-c2pj
  • [2]CVE Record
  • [3]NVD Details

Attack Flow Diagram

Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.

More Reports

•about 2 hours ago•CVE-2026-55867
5.3

CVE-2026-55867: Insecure Direct Object Reference in Graylog Access-Token Revocation

An Insecure Direct Object Reference (IDOR) vulnerability exists within the access-token revocation endpoint of Graylog. Authenticated users can exploit this flaw to delete access tokens belonging to other users, including high-privileged administrator accounts, thereby disrupting active integrations and API access.

Alon Barad
Alon Barad
2 views•7 min read
•about 3 hours ago•CVE-2026-55873
4.3

CVE-2026-55873: Improper Authorization in SeaweedFS S3Tables and Iceberg REST Management APIs

An improper authorization vulnerability in SeaweedFS versions 4.08 through 4.33 allows authenticated, low-privileged users to bypass directory isolation and perform unauthorized metadata operations within S3Tables and Iceberg REST interfaces. The vulnerability arises from an automatic collapse of account-less static identities to the default administrative principal, combined with a fail-open default policy configuration and self-referential authorization parameters in the table bucket listing routines. Together, these logical flaws expose administrative configurations and namespace architectures to unprivileged actors. The issue is resolved in version 4.34 by enforcing capability-based access checks, isolating fallback modes, and performing granular access verification on target buckets.

Alon Barad
Alon Barad
2 views•6 min read
•about 4 hours ago•CVE-2026-55874
7.7

CVE-2026-55874: Cross-Bucket Path Traversal in SeaweedFS S3 API Gateway

A critical path traversal vulnerability (CVE-2026-55874) in the SeaweedFS S3 API Gateway prior to version 4.34 allows authenticated remote attackers with write access to at least one bucket to bypass isolation. By supplying crafted directory traversal sequences in the X-Amz-Copy-Source header, an attacker can read objects from arbitrary buckets on the same deployment.

Amit Schendel
Amit Schendel
2 views•7 min read
•about 5 hours ago•CVE-2026-55779
5.4

CVE-2026-55779: Stored Cross-Site Scripting (XSS) in Silverstripe Archive Admin Restore

A Stored Cross-Site Scripting (XSS) vulnerability exists in the silverstripe/versioned package prior to version 3.2.1. When an administrator restores an archived page containing a crafted Title or URLSegment, the generated restoration message is rendered as CAST_HTML without proper sanitization. This allows malicious JavaScript to execute in the administrator's browser session, compromising the confidentiality and integrity of the CMS dashboard.

Amit Schendel
Amit Schendel
2 views•6 min read
•about 6 hours ago•CVE-2026-55784
7.5

CVE-2026-55784: Concurrent Request Context Overwrite in free5GC AUSF

A concurrency synchronization flaw (race condition) exists in the Authentication Server Function (AUSF) of the free5GC 5G core network implementation. In versions 1.4.4 and earlier, authentication contexts are stored in a global sync.Map keyed solely by the Subscriber Permanent Identifier (SUPI). If multiple concurrent authentication requests are received for the same SUPI, the active security parameters (such as keys and expected responses) are unconditionally overwritten, resulting in authentication failures for the legitimate user.

Alon Barad
Alon Barad
2 views•6 min read
•about 7 hours ago•CVE-2026-55785
3.7

CVE-2026-55785: Non-Constant-Time Cryptographic Comparison and Sensitive Information Leakage in free5GC AUSF

free5GC is an open-source implementation of the 5G core network. Prior to version 1.4.5, the Authentication Server Function (AUSF) component of free5GC performs cryptographic comparisons within its Service-Based Interface (SBI) handling logic using non-constant-time helpers. These comparison utilities return immediately upon encountering a mismatching character, creating a covert timing channel. Concurrently, the AUSF writes the expected validation vector to standard output logs at the INFO level, exposing sensitive cryptographic material to unauthorized processes or logging agents.

Amit Schendel
Amit Schendel
3 views•5 min read