CVE-2026-65011
Executive Summary
CVE-2026-65011 is a Medium severity authorization bypass vulnerability in Graylog2 Server, a popular log management and SIEM platform. The flaw resides in the POST /events/definitions/{definitionId}/duplicate endpoint, which fails to perform a per-entity permission check. This allows an authenticated user with the low-privilege eventdefinitions:create capability to clone any event definition, including those they do not own or have explicit read access to.
The business impact is significant for organizations using Graylog2 for security monitoring and incident response. An attacker with a low-privileged account can exfiltrate sensitive information embedded within event definitions, such as detection queries, aggregation thresholds, grouping fields, schedules, and notification bindings. This information can reveal the organization's detection strategies, internal network topology, and critical asset configurations, enabling the attacker to bypass security controls and plan more targeted attacks.
The urgency is assessed as Medium due to the CVSS score of 4.3 and an EPSS probability of 0.0%. While the vulnerability requires authentication, the low privileges needed and the potential for information disclosure make it a credible threat, especially in multi-tenant environments or where least-privilege principles are not strictly enforced. As of the publication date, no patch is available, and no public proof-of-concept or active exploitation has been confirmed.
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
CVSS Breakdown & Threat Level
- CVSS Score: 4.3 (Medium)
- Vector: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N
Metric Decomposition:
- AV:N (Network): The vulnerable endpoint is accessible over the network via HTTP.
- AC:L (Low): No special conditions or race conditions are required to exploit the flaw. The attacker simply sends a crafted HTTP request.
- PR:L (Low): The attacker must be authenticated and possess the
eventdefinitions:createcapability, which is a low-privilege role. - UI:N (None): No user interaction is required. The attacker can execute the exploit programmatically.
- S:U (Unchanged): The exploitation does not affect other components or the broader system's security posture.
- C:L (Low): The vulnerability leads to the disclosure of information contained within event definitions. This is a limited, but potentially sensitive, data breach.
- I:N (None): There is no impact on data integrity.
- A:N (None): There is no impact on system availability.
Qualitative Severity: Medium. This rating reflects the requirement for authentication and the limited scope of the impact (confidentiality only). However, the potential for information disclosure that can enable further attacks should not be underestimated.
EPSS Interpretation: The EPSS probability of 0.0% indicates that, as of the report date, there is no observed exploitation in the wild. This is common for newly published vulnerabilities. The score is likely to increase as analysis tools and proof-of-concept code become available.
Historical Comparison: This vulnerability is similar to CWE-862 (Missing Authorization) flaws found in other web applications with role-based access control, such as Jenkins (CVE-2024-23897) or GitLab (CVE-2023-5009). These vulnerabilities often allow low-privileged users to access or modify resources they should not have permission to.
Temporal/Environmental Considerations: The lack of a patch and the absence of a public exploit currently keep the temporal score low. In an environment where Graylog2 is used to store highly sensitive detection rules (e.g., for a SOC or MSSP), the environmental severity should be raised to High due to the criticality of the exposed information.
Technical Deep Dive & Attack Mechanics
Step-by-Step Exploitation:
- Authentication: The attacker authenticates to the Graylog2 web interface or API with a user account that has the
eventdefinitions:createcapability. This is a standard permission for users who need to create alerts. - Identify Target: The attacker needs to know the
definitionIdof a target event definition. This could be obtained through other information disclosure vulnerabilities, brute-forcing UUIDs, or social engineering. In some configurations, a list of event definitions might be accessible. - Craft Request: The attacker sends a
POSTrequest to the endpoint/api/events/definitions/{targetDefinitionId}/duplicate. The request body may contain a new name for the cloned definition. - Server-Side Processing: The server receives the request. The vulnerable code path checks if the user has the
eventdefinitions:createpermission globally, but it fails to verify if the user has read or owner permissions on the specific{targetDefinitionId}. - Clone Creation: The server creates a new event definition that is an exact copy of the target, including all its sensitive fields (queries, thresholds, notification bindings).
- Information Retrieval: The attacker can now view the cloned event definition, which they own, and read all the sensitive information from the original.
Root Cause Analysis: The developer mistake is a classic case of Missing Function-Level Access Control. The duplicate function likely calls a generic "create" service that only checks for the eventdefinitions:create permission, without first calling an authorization check to ensure the user has read access to the source definition.
Attack Surface:
- Interface: The Graylog2 REST API on the default HTTP port (9000).
- Protocol: HTTP/HTTPS.
- Endpoint:
POST /api/events/definitions/{definitionId}/duplicate
Pre-conditions:
- Network access to the Graylog2 API.
- A valid user account with the
eventdefinitions:createpermission. - Knowledge of a valid
definitionIdto target.
Attack Variants:
- Mass Enumeration: An attacker could script the duplication of all event definitions by iterating through a list of known or guessed UUIDs.
- Privilege Escalation via Notification: If a cloned definition contains a notification binding that executes a script or sends data to an external system, the attacker could modify the clone to exfiltrate data to their own server.
Why Standard Defenses May Fail:
- WAF/IDS: A standard Web Application Firewall (WAF) or Intrusion Detection System (IDS) will likely see this as a legitimate API call. The request structure is valid, and the user is authenticated. Without deep application-level context (knowing which user owns which definition), network-level defenses cannot distinguish between a legitimate clone and a malicious one.
Vulnerable vs. Patched Code Analysis
Since no patch is available, the following is a hypothetical analysis based on the vulnerability description.
Vulnerable Code (Pseudocode):
// Vulnerable endpoint handler
@POST
@Path("/events/definitions/{definitionId}/duplicate")
public Response duplicateEventDefinition(@PathParam("definitionId") String definitionId, @Auth User user) {
// Only checks if user has the 'create' permission globally
if (!user.hasPermission("eventdefinitions:create")) {
return Response.status(403).build();
}
EventDefinition originalDefinition = eventDefinitionService.get(definitionId);
EventDefinition clonedDefinition = eventDefinitionService.duplicate(originalDefinition, user);
return Response.ok(clonedDefinition).build();
}
Patched Code (Hypothetical):
// Patched endpoint handler
@POST
@Path("/events/definitions/{definitionId}/duplicate")
public Response duplicateEventDefinition(@PathParam("definitionId") String definitionId, @Auth User user) {
// Check for global 'create' permission
if (!user.hasPermission("eventdefinitions:create")) {
return Response.status(403).build();
}
EventDefinition originalDefinition = eventDefinitionService.get(definitionId);
// NEW: Check for per-entity 'read' permission on the specific definition
if (!user.hasPermission("eventdefinitions:read:" + definitionId)) {
return Response.status(403).build();
}
EventDefinition clonedDefinition = eventDefinitionService.duplicate(originalDefinition, user);
return Response.ok(clonedDefinition).build();
}
Fix Analysis: The fix adds a second authorization check that verifies the user has a read permission on the specific definitionId being duplicated. This ensures that a user can only clone definitions they are allowed to see.
Regression Considerations: The patch must ensure that the new permission check does not break legitimate use cases, such as administrators cloning definitions for other users. The permission model should be flexible enough to allow for delegated administration.
Timeline & Disclosure History
- CVE Publication Date: 2026-07-22T17:16:58.837
- Estimated Discovery: The vulnerability was likely discovered through internal security research or a bug bounty program prior to the CVE publication date.
- Disclosure Process: The CVE was published by a CNA (likely MITRE or the vendor themselves). The lack of a GitHub Security Advisory or OSV entry suggests the disclosure may not have been fully coordinated with the vendor, or the vendor has not yet released a patch.
- Known Exploitation: No known active exploitation as of 2026-07-22.
- CISA KEV: Not listed.
Threat Intelligence Context
- Threat Actor Profile: This vulnerability is most likely to be exploited by insider threats or low-skilled attackers who have gained access to a low-privileged account. APT groups might use it as a secondary step in a larger intrusion to map out the victim's detection capabilities.
- Attack Campaign Context: No specific campaigns are associated with this CVE at this time.
- Geographic Targeting: No specific geographic targeting is expected.
- Industry Verticals Most at Risk: Any organization using Graylog2 for security monitoring is at risk. This includes MSSPs (Managed Security Service Providers), financial institutions, government agencies, and large enterprises that rely on Graylog2 for their SOC operations.
- Connection to Similar Vulnerabilities: This is a classic example of an IDOR (Insecure Direct Object Reference) or Missing Function-Level Access Control vulnerability, which is consistently found in web applications with complex permission models.
Exploitation & Lab Setup
Red Team Section
Lab Setup:
- Environment: Use Docker to spin up a vulnerable Graylog2 instance.
docker run --name graylog -d -p 9000:9000 -p 12201:12201 graylog/graylog:4.3.0 - Prerequisites:
- Access to the Graylog2 web UI at
http://localhost:9000. - Create a low-privilege user with only the
eventdefinitions:createpermission. - As an admin, create a sensitive event definition (e.g., one that queries for "admin logins" or "failed SSH attempts").
- Access to the Graylog2 web UI at
Exploitation Walkthrough:
- Login: Log in as the low-privilege user.
- Identify Target: As an attacker, you would need to find a
definitionId. For this lab, you can find it by inspecting the URL when viewing an event definition as an admin. Let's assume the target ID is5f8c9a2e1c8d8a1b2c3d4e5f. - Craft Exploit: Use
curlto duplicate the definition.curl -X POST \ 'http://localhost:9000/api/events/definitions/5f8c9a2e1c8d8a1b2c3d4e5f/duplicate' \ -H 'X-Requested-By: cli' \ -H 'Authorization: Basic <base64_encoded_low_priv_credentials>' \ -H 'Content-Type: application/json' \ -d '{"title": "Cloned Sensitive Definition"}' - Expected Output: The API will return a JSON object representing the newly cloned event definition, including all the sensitive fields from the original.
- Post-Exploitation: The attacker can now view the cloned definition in the Graylog2 UI and read the detection query, thresholds, and notification details. This information can be used to:
- Understand what the SOC is monitoring.
- Craft attacks that avoid detection.
- Target the systems or users mentioned in the notification bindings.
Blue Team Section
Detection:
- Log Entries: Monitor Graylog2's own server logs for
POSTrequests to the/events/definitions/*/duplicateendpoint. Look for patterns where a user duplicates a definition they did not create. - Network Traffic: Look for API calls to the duplicate endpoint from IP addresses that are not associated with known administrators.
- Endpoint Behavioral Indicators: Monitor for the creation of new event definitions by users who typically do not create them.
Indicators of Compromise (IOCs)
No confirmed IOCs available — the following patterns are illustrative of exploitation attempts:
- HTTP Request Pattern:
- Method:
POST - Path:
/api/events/definitions/{uuid}/duplicate - Header:
X-Requested-By: cli(common for API calls)
- Method:
- Log Entry (Graylog2 Server Log):
[INFO] [EventDefinitionResource] User 'attacker_user' duplicated event definition '5f8c9a2e...'
- Process Execution: No specific process anomalies are expected, as the exploitation occurs through the normal web application flow.
Detection Engineering
YARA Rule
rule CVE_2026_65011_Graylog2_Duplicate_Exploit {
meta:
description = "Detects HTTP requests targeting the vulnerable Graylog2 event definition duplicate endpoint"
author = "Valters IT Hub"
date = "2026-07-22"
reference = "https://www.valtersit.com/cve/cve-2026-65011"
strings:
$http_method = "POST"
$uri_pattern = "/events/definitions/"
$uri_suffix = "/duplicate"
$api_header = "X-Requested-By"
condition:
$http_method at 0 and $uri_pattern and $uri_suffix and $api_header
}
Sigma Rule (SIEM)
title: CVE-2026-65011 Graylog2 Event Definition Duplicate Exploitation
id: bec8d274-52ed-435d-837c-775f43b92627
status: experimental
description: Detects HTTP POST requests to the Graylog2 API endpoint for duplicating event definitions, which may indicate exploitation of CVE-2026-65011.
author: Valters IT Hub
date: 2026-07-22
references:
- https://www.valtersit.com/cve/cve-2026-65011
logsource:
category: webserver
product: graylog
detection:
selection:
cs-method: POST
cs-uri-query|contains:
- "/events/definitions/"
- "/duplicate"
condition: selection
falsepositives:
- Legitimate administrative activity where an admin duplicates a definition for another user.
level: high
Suricata IDS Rule
alert http $HOME_NET any -> $EXTERNAL_NET any (
msg:"CVE-2026-65011 Graylog2 Event Definition Duplicate Exploitation";
flow:to_server,established;
http.method; content:"POST";
http.uri; content:"/events/definitions/"; distance:0;
http.uri; content:"/duplicate"; distance:0;
classtype:attempted-recon;
sid:10000001;
rev:1;
)
Elastic (EQL) Query
sequence by process.entity_id
[network where process.name == "java" and destination.port == 9000 and network.protocol == "http"]
[http where http.request.method == "POST" and http.request.uri == "/api/events/definitions/*/duplicate"]
Splunk SPL Query
index=graylog sourcetype=graylog_server
method=POST uri="/api/events/definitions/*/duplicate"
| stats count by user, uri, src_ip
| where count > 1
Wazuh Rule
<group name="graylog,">
<rule id="100001" level="12">
<decoded_as>json</decoded_as>
<field name="method">POST</field>
<field name="uri">\.*/events/definitions/.*/duplicate</field>
<description>Graylog2: Potential exploitation of CVE-2026-65011 - Event definition duplication by user $(user)</description>
<group>authentication_failures,pci_dss_6.5,gdpr_32,</group>
</rule>
</group>
Remediation & Mitigation
Immediate Actions (0-24 hours)
- No Patch Available: Since no patch is available, the primary mitigation is to restrict access to the Graylog2 API.
- Network-Level Mitigation: Implement a firewall rule to block access to the Graylog2 API (port 9000) from untrusted networks. Use a VPN or bastion host for administrative access.
- WAF Rule: Create a custom WAF rule to block
POSTrequests to the/api/events/definitions/*/duplicateendpoint from non-admin users. This can be done by inspecting the user's role or group in the request headers (if available) or by IP whitelisting. - Access Control Hardening: Review and revoke the
eventdefinitions:createpermission from any user who does not explicitly need it. This reduces the attack surface.
Short-term (1-7 days)
- Configuration Hardening: Enable multi-factor authentication (MFA) for all Graylog2 users to make it harder for attackers to compromise low-privilege accounts.
- Monitoring Implementation: Implement the detection rules provided in this report to monitor for any exploitation attempts.
- Vulnerability Scanning: Use a vulnerability scanner to identify all instances of Graylog2 in your environment and flag them as vulnerable.
Long-term
- Architecture Changes: Consider isolating the Graylog2 management interface on a separate, highly restricted network segment.
- Security Control Improvements: Implement a robust Identity and Access Management (IAM) solution that can enforce fine-grained, per-entity permissions.
- Developer Training: Ensure that all developers are trained on the OWASP Top 10, specifically on A01 (Broken Access Control), to prevent similar flaws in future code.
Validation
- Manual Check: As an administrator, attempt to duplicate an event definition using a low-privilege test account. If the duplication succeeds, the system is vulnerable.
- Patch Verification: Once a patch is released, verify the Graylog2 version by checking the
Aboutpage in the UI or by runningcurl http://localhost:9000/api/system | jq '.version'.
References & Resources
- NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-65011
- CVE.org: https://www.cve.org/CVERecord?id=CVE-2026-65011
- Vendor advisory: See vendor security page
- OSV: https://osv.dev/vulnerability/CVE-2026-65011 (if applicable)
- Related CWE: https://cwe.mitre.org/data/definitions/862.html
- MITRE ATT&CK: https://attack.mitre.org/techniques/T1213/
Report generated by Valters IT Hub Neural Engine v25 | 2026-07-22 | https://www.valtersit.com/cve/cve-2026-65011