CVE-2026-9765
Executive Summary
CVE-2026-9765 is an unpatched broken access control vulnerability (CWE-284) affecting Grafana, a widely deployed open-source observability and data visualization platform. The flaw permits an authenticated attacker with low-privileged access to bypass authorization mechanisms and modify high-integrity resources while causing limited availability impact, scored at CVSS 7.1 (High). Although the CVE record notes this may be a cloud-only issue, the absence of any vendor patch or advisory across all tracked sources means all Grafana deployments remain exposed until official remediation is published. This vulnerability is not currently listed on CISA's Known Exploited Vulnerabilities catalog, and EPSS estimates a low exploitation probability (0.29%) at present, but the public availability of PoC material elevates the urgency for monitoring and mitigation.
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
Technical Analysis
CVE-2026-9765 resides in Grafana's access control framework, specifically within the authorization layer that governs user-to-resource and user-to-operation permissions. The vulnerability falls under CWE-284 (Improper Access Control), indicating that the application fails to enforce, or improperly enforces, intended access restrictions on certain API endpoints or UI actions. The attack vector is network-based (AV:N), requires low attack complexity (AC:L), and demands only low-privilege authentication (PR:L) with no user interaction (UI:N).
The core mechanism involves a broken authorization check that fails to validate the complete context of a user's permissions against the target resource. In Grafana's architecture, this typically manifests in endpoints that handle folder permissions, dashboard sharing, data source queries, or service account management. The vulnerability likely stems from a missing or incomplete ownership check — for example, the code may verify that a user is authenticated but fail to verify that the user is a member of the specific organization or team that owns the target resource. Alternatively, the flaw could involve a race condition or a case-insensitive/unicode-normalization discrepancy in the permission comparison logic, allowing a user to craft resource identifiers that bypass the canonical validation path.
The CVSS vector — CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:L — reveals important characteristics. The confidentiality impact is None (C:N), meaning the flaw does not directly expose sensitive data reads. The integrity impact is High (I:H), enabling an attacker to modify arbitrary resources, including dashboards, alert rules, data source configurations, or user roles. The availability impact is Low (A:L), suggesting an attacker could degrade service, for instance by corrupting dashboards or alert definitions, though not perform a full denial-of-service. The scope is Unchanged (S:U), meaning the compromise is confined to the Grafana application itself, not breaching adjacent backend systems.
Because the CVE notes this may be "cloud-only," it is plausible the vulnerability is specific to Grafana Cloud's multi-tenant architecture, where tenant isolation boundaries are enforced by a distributed authorization service. In such environments, a flaw could exist in the shared authorization middleware that incorrectly resolves tenant context for certain API calls, allowing a user in tenant A to send a request that is evaluated in tenant B's context. This would enable cross-tenant resource modification without direct access to tenant B's credentials.
The attack surface extends to all Grafana provisioning APIs, folder and dashboard permission endpoints, and user/team management interfaces. Given the lack of patch data (patch confidence 0/4), no fixed version exists. Affected versions are listed as empty, reinforcing the unpatched status of the entire product line.
Exploitation Scenarios
The following attack chain describes a realistic exploitation pathway for an authenticated low-privilege user abusing the broken access control flaw.
Step 1 — Reconnaissance and Target Identification: The attacker begins by authenticating to the target Grafana instance using valid low-privilege credentials (e.g., a "Viewer" role) obtained through phishing, credential stuffing, or legitimate but restricted access. The attacker enumerates API endpoints, focusing on those that handle folder permissions. A typical enumeration command is:
curl -k -H "Authorization: Bearer <viewer_token>" "https://target.grafana.example/api/folders"
This returns a list of folders. Importantly, in a properly secured instance, a viewer should only see folders they have permission to access. The attacker documents the folder IDs visible in the response — any folder IDs not owned by their organization or team are potential targets for the authorization bypass.
Step 2 — Triggering the Authorization Bypass: The attacker crafts a request to modify permissions on a folder they do not own. The endpoint /api/folders/{folder_uid}/permissions accepts HTTP POST requests with a JSON payload describing the permission changes. The attacker targets a folder UID belonging to another team or organization. The malicious request omits or alters the ownership/scope parameter that the broken access control check fails to validate:
curl -k -X POST \
"https://target.grafana.example/api/folders/other_team_folder_uid/permissions" \
-H "Authorization: Bearer <viewer_token>" \
-H "Content-Type: application/json" \
-d '{"items":[{"role":"Editor","permission":2}]}'
If the endpoint lacks a check tying the folder's parent organization to the user's organization, the server processes the request and updates the target folder's permission mapping.
Step 3 — Payload and Execution: Having modified permissions, the attacker elevates their own privileges or grants themselves administrative capabilities on the compromised folder. They issue a subsequent request to add their account as an administrator of the folder:
curl -k -X POST \
"https://target.grafana.example/api/folders/other_team_folder_uid/permissions" \
-H "Authorization: Bearer <viewer_token>" \
-H "Content-Type: application/json" \
-d '{"items":[{"userId":<attacker_id>,"permission":4}]}'
Permission level 4 (Admin) grants full control over dashboards within the folder, including editing panels and modifying underlying query definitions.
Step 4 — Post-Exploitation Impact: The attacker now modifies dashboards in the compromised folder to inject malicious queries against connected data sources. For example, they alter a dashboard panel's query to execute an arbitrary command against a Prometheus or InfluxDB data source if the data source allows query-based command injection. Alternatively, they replace dashboard JSON with a template that, when viewed by other users, triggers client-side JavaScript for session hijacking (if the dashboard rendering pipeline fails to sanitize certain fields). They could also corrupt alert rules, causing the organization to miss critical infrastructure alerts, or copy sensitive dashboard configuration data to their own folders for further analysis. The availability impact (A:L) manifests if the attacker deliberately corrupts dashboards, rendering them unusable and forcing administrative cleanup.
Impact Assessment
The business impact of CVE-2026-9765 is significant for any organization relying on Grafana for operational visibility. The CVSS subscore for integrity (High) indicates that an attacker can alter the trustworthiness of monitoring data and configuration. In a SOC context, a compromised dashboard could display false health metrics, leading analysts to misjudge system status; corrupted alert rules could suppress notifications for active security incidents. For organizations using Grafana to manage infrastructure-as-code or to provision temporary dashboards for incident response, the integrity breach could undermine compliance and audit trails.
Affected systems include all Grafana environments, with the caveat that cloud-based or managed Grafana instances may be at elevated risk given the "cloud-only" note. The blast radius is broad: if the vulnerability allows cross-organization or cross-tenant access in a managed multi-tenant deployment, a single compromised low-privilege account could affect data across many customer organizations. In self-hosted deployments, the blast radius is confined to the single Grafana instance but still spans all folders, teams, and data sources configured within it.
The confidentiality impact is rated None, indicating this flaw is primarily a data-integrity and availability concern rather than a data-exfiltration vector. However, integrity compromises can indirectly lead to confidentiality breaches — for example, by modifying a dashboard to include a malicious iframe that exfiltrates a viewing user's session cookie.
There is no known exploitation in the wild as of this report (CISA KEV: NO). The EPSS score of 0.00287 (21st percentile) suggests that threat actors are not actively targeting this vulnerability, likely due to the recency of disclosure and the absence of a working public exploit chain. Nonetheless, the public availability of PoC material lowers the barrier for adoption by less sophisticated attackers.
Detection Guidance
Sigma Rule
title: Grafana Unauthorized Folder Permission Modification
id: 2f9d7e6a-5b1c-4a8e-9d3f-1c2b8a7e6f5d
status: experimental
description: Detects attempts to modify Grafana folder permissions where the requesting user has low privileges, indicating potential CVE-2026-9765 exploitation.
logsource:
product: grafana
service: server
detection:
selection:
http.request.method: 'POST'
http.url:
- '*api/folders/*/permissions'
- '*api/dashboards/*/permissions'
filter_known_users:
grafana.role: 'Admin'
condition: selection and not filter_known_users
level: high
tags:
- attack.t1190
- cve.2026-9765
- cwe.284
fields:
- client.ip
- user.username
- http.url
- http.status_code
falsepositives:
- Legitimate admin API automation scripts
- Service accounts with editor-level permissions
YARA Rule
rule Grafana_Broken_Access_Control_Perms_Bypass
{
meta:
author = "ValtersIt Threat Intel"
description = "Detects JSON payloads targeting Grafana folder permission endpoints with unusual privilege grants"
cve = "CVE-2026-9765"
date = "2026-02-15"
strings:
$perm_endpoint = "/api/folders/" ascii wide
$perm_endpoint2 = "/permissions" ascii wide
$perm_high = "\"permission\":4" ascii wide
$perm_admin = "permission" ascii wide
$role_editor = "\"role\":\"Editor\"" ascii wide
condition:
uint16(0) == 0x5b7b or uint16(0) == 0x7b0a and
all of ($perm_*) and
#perm_endpoint > 0 and #perm_endpoint2 > 0
}
Suricata IDS Rule
alert http any any -> any any (msg:"CVE-2026-9765 Potential Grafana Broken Access Control POST to Folder Permissions"; flow:established,to_server; http.method; content:"POST"; http.uri; content:"/api/folders/"; http.uri; content:"/permissions"; http.request_body; content:""permission""; http.request_body; content:"4"; http.request_body; nocase; content:""userId""; sid:2026976501; rev:1; reference:cve,2026-9765; reference:url,valtersit.com/cve-2026-9765; classtype:attempted-admin; metadata:attack_target Web_Server;
Elastic Detection
sequence by source.ip, user.name
[network where network.protocol == "http" and
http.request.method == "POST" and
url.path like "*/api/folders/*/permissions"]
[file where file.name == "access.log" and
process.name == "grafana-server"]
Splunk SPL Query
index=grafana sourcetype=grafana_web
| where like(url, "%/api/folders/%/permissions%")
| eval is_suspicious = if(match(role, "Viewer") OR match(role, "Editor"), 1, 0)
| where is_suspicious == 1
| stats count by src_ip, user, url, http_status
| sort - count
| rename src_ip as Attacker_IP, user as Username, url as Endpoint
Wazuh OSSEC Rule
<rule id="595164" level="12">
<decoded>api_folders_permissions</decoded>
<match>POST /api/folders/</match>
<regex>permissions</regex>
<group>grafana, access_control, CVE-2026-9765,</group>
<description>Grafana: Attempt to modify folder permissions via API with potentially insufficient privilege</description>
</rule>
Mitigation & Patch Guidance
Patch Confidence: 0/4 — UNPATCHED. No patch evidence from any tracked source.
Immediate Mitigations (Days 0–7)
- Restrict API Access: Place the Grafana API behind a reverse proxy that enforces IP allowlisting. Only whitelist trusted administrative networks or jump hosts that require API access.
- Disable Folder Permission API: If possible, use Grafana's feature flag system to disable the folder permission REST API entirely, forcing all permission management through the UI with strict RBAC enforcement. Refer to Grafana's
[security]and[rbac]configuration sections. - Audit Existing Permissions: Immediately review all folder and dashboard permission settings across the instance. Look for any permissions granted to "Viewer" or "Editor" roles on folders outside the organization's expected scope. Revoke any anomalies.
- Enable Audit Logging: Turn on detailed API request logging to the access log file. Record full request bodies where feasible to capture permission-manipulation attempts for later forensic analysis.
- Monitor for Suspicious POST Requests: Deploy the detection rules above in your SIEM/SOC stack. Alert on any non-admin user hitting
/api/folders/{uid}/permissions.
Patch / Upgrade Steps
Currently, no patched version exists. Monitor the following channels daily:
- Grafana GitHub Security Advisories:
https://github.com/grafana/grafana/security/advisories - Grafana security blog:
https://grafana.com/blog/category/security/ - NVD:
https://nvd.nist.gov/vuln/detail/CVE-2026-9765
When a patched version is released (expected to be a minor or patch release, e.g., 11.1.x or similar), upgrade all Grafana instances immediately. Verify the upgrade is compatible with your existing dashboards and data source plugins before rolling out.
Long-Term Hardening
- Adopt Least-Privilege RBAC: Implement Grafana's fine-grained RBAC to ensure no anonymous or default "Viewer" role has write access to any folder. Assign users to organizations with minimal permissions.
- Implement Network Segmentation: Isolate Grafana instances from the general corporate network. Use a dedicated VLAN or cloud VPC with strict egress rules to backend data sources.
- Enforce MFA: Require multi-factor authentication for all Grafana accounts, particularly those with Editor or Admin roles. This reduces the risk of credential theft leading to the low-privilege account required for exploitation.
- Security Patching Process: Establish a weekly automated scan for new Grafana releases and CVEs. Given the 0/4 confidence in patch availability, proactive vendor monitoring is essential.
- Regular Penetration Testing: Include Grafana in quarterly penetration tests, specifically test authorization pathways for cross-tenant or cross-organization access, mirroring the CVE-2026-9765 attack class.
References
- NVD — CVE-2026-9765:
https://nvd.nist.gov/vuln/detail/CVE-2026-9765 - MITRE CVE Record:
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2026-9765 - Grafana Security Advisories:
https://github.com/grafana/grafana/security/advisories - FIRST EPSS Score for CVE-2026-9765:
https://www.first.org/epss/search?cve=CVE-2026-9765 - CISA Known Exploited Vulnerabilities Catalog:
https://www.cisa.gov/known-exploited-vulnerabilities-catalog
Threat Actor Campaigns: As of this writing, no known threat actor groups have publicly claimed or demonstrated exploitation of CVE-2026-9765 in the wild. The vulnerability is not included in the CISA KEV list, and EPSS places it in the lowest percentile of likely exploited CVEs. However, the public PoC material introduces a real risk of exploitation by opportunistic attackers, particularly those with established access to Grafana deployments via other means. Security teams are advised to treat this as a high-priority integrity risk despite the low current exploit activity.
💣 PoC CODE AVAILABLE
Exploit code for this CVE is tracked in our database.
Access poc_code via API Pro.