CVE-2026-7765
Executive Summary
CVE-2026-7765 is an incorrect authorization vulnerability in the Checkmk monitoring solution, specifically within the User Messages dashboard widget. The flaw allows an unauthenticated attacker who possesses a valid public dashboard share token to read the personal messages of the dashboard creator. This occurs because the message-fetching endpoints incorrectly return the dashboard creator's messages instead of the viewer's messages. The vulnerability affects Checkmk versions prior to 2.5.0p5. The CVSS score is 0.0 (pending analysis), but based on the description, the impact is limited to unauthorized disclosure of personal messages, with no impact on integrity or availability.
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
Checkmk is a proprietary monitoring solution, not distributed via NPM, PyPI, Go, or Ruby. Therefore, no supply chain package security analysis is applicable.
CVSS Breakdown & Threat Level
- Attack Vector (AV): Network (N) – The vulnerability can be exploited remotely over the network.
- Attack Complexity (AC): Low (L) – No special conditions are required; the attacker only needs a valid public dashboard share token.
- Privileges Required (PR): None (N) – No authentication is required to exploit the vulnerability.
- User Interaction (UI): None (N) – The victim does not need to perform any action.
- Scope (S): Unchanged (U) – The vulnerable component and the impacted component are the same.
- Confidentiality (C): Low (L) – Only personal messages are disclosed, not system-level data.
- Integrity (I): None (N) – No data modification is possible.
- Availability (A): None (N) – No denial of service impact.
Threat Level: Medium (due to low confidentiality impact and requirement of a valid share token).
Deep Dive & Mechanics
The vulnerability resides in the User Messages dashboard widget's backend endpoints. When a dashboard is shared publicly via a share token, the widget is designed to display messages intended for the viewer. However, due to incorrect authorization logic, the endpoint responsible for fetching messages returns the messages of the dashboard creator (the user who created the shared dashboard) instead of the viewer.
Root Cause: The authorization check fails to properly scope the message retrieval to the viewer's identity. Instead, it uses the dashboard creator's identity when processing the request, leading to unauthorized disclosure.
Attack Vector: An attacker must first obtain a valid public dashboard share token. This token is typically a UUID or similar identifier that is generated when a user shares a dashboard publicly. Once the token is obtained, the attacker can send crafted HTTP requests to the message-fetching endpoint (e.g., /checkmk/api/1.0/dashboard/{token}/messages) to retrieve the creator's personal messages.
Impact: The attacker can read personal messages intended for the dashboard creator. These messages could contain sensitive information, such as internal communications, alerts, or credentials.
Vulnerable vs. Patched Code
Vulnerable Code (Checkmk < 2.5.0p5): The vulnerable code likely resides in the backend handler for the message-fetching endpoint. A simplified pseudocode example:
def get_messages(dashboard_token):
dashboard = get_dashboard_by_token(dashboard_token)
# Incorrectly uses dashboard creator's ID
messages = fetch_messages_for_user(dashboard.creator_id)
return messages
Patched Code (Checkmk >= 2.5.0p5): The patched code correctly identifies the viewer (or the user associated with the request context) and fetches messages for that user:
def get_messages(dashboard_token, request_user):
dashboard = get_dashboard_by_token(dashboard_token)
# Correctly uses the viewer's ID
messages = fetch_messages_for_user(request_user.id)
return messages
The patch ensures that the message-fetching endpoint respects the viewer's identity, even when accessed via a public share token.
Exploitation & Lab Setup
Red Team (Attacker) Perspective
Prerequisites:
- A valid public dashboard share token from a Checkmk instance (version < 2.5.0p5).
- Network access to the Checkmk server.
Exploitation Steps:
- Obtain a public dashboard share token (e.g., via social engineering, OSINT, or by finding it in a public repository).
- Send a GET request to the message-fetching endpoint:
GET /checkmk/api/1.0/dashboard/{token}/messages HTTP/1.1 Host: target-checkmk-server - The response will contain the personal messages of the dashboard creator.
Example cURL command:
curl -X GET "https://target-checkmk-server/checkmk/api/1.0/dashboard/abc123-def456-ghi789/messages"
Expected Output:
{
"messages": [
{"id": 1, "text": "Sensitive internal message", "timestamp": "2026-01-01T00:00:00Z"},
{"id": 2, "text": "Another message", "timestamp": "2026-01-02T00:00:00Z"}
]
}
Blue Team (Defender) Perspective
Detection:
- Monitor for unusual access to dashboard API endpoints, especially those containing
/dashboard/{token}/messages. - Look for requests where the
Refererheader does not match the expected dashboard page. - Alert on multiple failed attempts to access different share tokens (brute-force detection).
Hunting:
- Search logs for requests to
/checkmk/api/1.0/dashboard/*/messagesfrom IP addresses not associated with legitimate users. - Correlate with dashboard share token creation events to identify potential token leakage.
Mitigation:
- Immediately upgrade to Checkmk 2.5.0p5 or later.
- If upgrade is not possible, disable public dashboard sharing or restrict access to the API endpoint via firewall rules.
Indicators of Compromise (IOCs)
- Network IOCs:
- HTTP requests to
/checkmk/api/1.0/dashboard/{token}/messageswhere{token}is a valid share token. - Unusual
User-Agentstrings or missingRefererheaders in such requests.
- HTTP requests to
- Log IOCs:
- Checkmk access logs showing repeated 200 responses for the message-fetching endpoint from unknown IPs.
- Dashboard share token creation events followed by unauthorized access attempts.
- File IOCs:
- None (the vulnerability is server-side and does not leave files on the client).
Detection Engineering
YARA Rule
rule CVE_2026_7765_Checkmk_Messages_Exposure {
meta:
description = "Detects requests to Checkmk User Messages endpoint with a share token"
author = "Valters IT"
date = "2026-01-01"
reference = "CVE-2026-7765"
strings:
$endpoint = "/checkmk/api/1.0/dashboard/"
$messages = "/messages"
condition:
$endpoint at 0 and $messages at (filesize - 9)
}
Sigma Rule
title: Checkmk User Messages Unauthorized Access
id: 12345678-1234-1234-1234-123456789abc
status: experimental
description: Detects attempts to exploit CVE-2026-7765 by accessing the User Messages endpoint with a share token.
author: Valters IT
date: 2026/01/01
logsource:
category: webserver
product: apache
service: access
detection:
selection:
cs-uri-stem|contains: "/checkmk/api/1.0/dashboard/"
cs-uri-stem|endswith: "/messages"
condition: selection
falsepositives:
- Legitimate dashboard sharing by authorized users
level: medium
Suricata Rule
alert http any any -> any any (msg:"CVE-2026-7765 Checkmk User Messages Exposure"; flow:to_server; content:"/checkmk/api/1.0/dashboard/"; http_uri; content:"/messages"; http_uri; classtype:attempted-recon; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Upgrade Checkmk to version 2.5.0p5 or later. This is the only complete fix.
- Disable public dashboard sharing if upgrade is not immediately possible.
- Restrict network access to the Checkmk API endpoint using firewall rules or WAF policies.
Long-Term Measures:
- Implement strict authorization checks for all API endpoints, especially those involving shared resources.
- Conduct a security audit of all dashboard-related functionality.
- Monitor for similar vulnerabilities in future Checkmk releases.
Workarounds:
- If upgrade is delayed, consider removing the User Messages widget from all public dashboards.
- Use a reverse proxy to block requests to
/checkmk/api/1.0/dashboard/*/messagesunless they come from trusted IPs.
Valters IT