☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]
[ VENDOR STATS ]
CVSS: 8.8 CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H 🐛 CWE-22
👁️
Common Weakness Enumeration - Identifies the specific category of software weakness or flaw.

CVE-2026-15815

CVE-2026-15815 Remote Code Execution in Grafana
📅 PUBLISHED: 2026-09-17 00:00 UTC 🔄 UPDATED: 2026-09-22 09:08 UTC
[ ZERO-DAY / UNPATCHED ] [ DEFENSE PATCH ↓ ]
💣 PoC: None
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.87%
👁️
0.87% probability
21.6× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
🥷 MITRE: T1195.002
👁️
MITRE ATT&CK Tactic - Describes the strategy hackers use to execute this attack.
VULNERABLE: Insufficient data — no specific version range provided by any tracked source
CVSS VECTOR BREAKDOWN 8.8
AV: N Attack Vector Network
AC: L Attack Complexity Low
PR: N Privileges Required None
UI: R User Interaction Required
S: U Scope Unchanged
C: H Confidentiality High
I: H Integrity High
A: H Availability High
8.8
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2026-15815 is a path traversal vulnerability (CWE-22) in Grafana OSS and Grafana Enterprise affecting the plugin archive extraction routine. The extraction logic fails to safely resolve symbolic links, allowing a crafted plugin archive to chain relative symlink entries and write arbitrary files — including an executable backend binary — outside the intended plugin installation directory. Because archives are extracted before signature verification, a valid plugin signature does not prevent the write, and the dropped binary executes with the privileges of the Grafana server process, yielding remote code execution. This is an unpatched vulnerability at the time of reporting (patch confidence 0/4).

⚡ 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

Technical Analysis

The vulnerability resides in the plugin archive extraction path shared by Grafana OSS and Grafana Enterprise. The core defect is twofold:

  1. Unsafe symbolic link resolution (CWE-22 / Zip-Slip-style traversal). When Grafana extracts a plugin archive, it does not safely resolve symbolic link entries contained within the archive. An attacker can construct an archive in which a relative symbolic link entry points outside the plugin installation directory (for example, a symlink whose target traverses upward using relative path components). By chaining multiple relative symlink entries, the attacker can progressively walk the write location out of the intended installation root and then write arbitrary files to attacker-chosen paths. Because the link targets are resolved relative to previously created entries, a single guard against absolute paths is insufficient — the traversal is composed step-by-step.

  2. Signature verification ordering flaw. Plugin archives are extracted before their signature is verified. This ordering means that even a plugin archive carrying a valid plugin signature will still be extracted and its symlink entries processed. Consequently, an operator who installs a plugin "that appears legitimate" — i.e., one with an intact valid signature — is still exposed. The signature check, even where present and correct, is not a mitigating control against this write primitive because it runs too late in the pipeline.

The combined effect is a write-arbitrary-file primitive. The description explicitly states that a crafted archive can write "an executable backend binary outside that directory." Because Grafana plugin backends are executed as binaries, the attacker places an executable in a location that Grafana will subsequently execute. The dropped executable "runs with the privileges of the Grafana server process, resulting in remote code execution."

The attack surface is the plugin installation workflow. Three delivery vectors are explicitly enumerated in the advisory:

  • grafana-cli — the command-line plugin installer.
  • The GF_INSTALL_PLUGINS environment variable — auto-installation at startup/container provisioning.
  • Preinstall configuration — declarative plugin pre-provisioning.

All three funnel an attacker-supplied archive into the same vulnerable extraction code. Grafana Enterprise is affected "because it includes the same plugin extraction code as Grafana OSS" — the impact is identical across the two distributions.

No version range, commit, or upstream patch reference was supplied by any tracked source, so the precise affected release window cannot be enumerated here. The description is sufficient to characterize the vulnerability class (path traversal via unsafe symlink resolution during archive extraction) and the mechanism (extract-before-verify + symlink chaining + backend binary execution) without inventing function names, endpoints, or code paths.


Exploitation Scenarios

No public proof-of-concept, Nuclei template, or exploit code is available for CVE-2026-15815 as of the data snapshot. The following attack chain is derived strictly from the vulnerability class and the mechanism described in the advisory.

1. Reconnaissance / target identification. The attacker identifies a Grafana OSS or Grafana Enterprise deployment that installs plugins from attacker-influenced sources. Relevant conditions: systems using grafana-cli for plugin installation, containers or hosts that set GF_INSTALL_PLUGINS, or deployments that consume plugins via preinstall configuration. The attacker needs a path by which the crafted archive reaches one of these installation mechanisms — e.g., impersonating or compromising a plugin source, or supplying an archive through any channel the operator treats as a plugin supply path. Note that a valid signature on the archive does not disqualify the target, because extraction precedes verification.

2. Triggering the flaw (unsafe symlink resolution). The attacker crafts a plugin archive containing relative symbolic link entries arranged so that each link resolves relative to entries previously created during extraction. By chaining these relative symlinks, the effective write location is walked outside the plugin installation directory. Since the same extraction routine handles all plugin installs regardless of source (CLI, environment variable, or preinstall), triggering the flaw requires only that the crafted archive be extracted — a normal, expected operation.

3. Payload / execution method. Inside the crafted archive, the attacker includes an executable backend binary and places it, via the symlink chain, at a location outside the plugin install directory. Because the archive is extracted before the signature is checked, the write occurs even if the archive carries a legitimate-looking signature. The written binary is then executed by Grafana as a plugin backend process — the advisory states it "runs with the privileges of the Grafana server process."

4. Post-exploitation impact. Execution with Grafana server privileges yields remote code execution. From that position, the attacker inherits whatever filesystem, network, and secret access the Grafana process holds — including the ability to read Grafana configuration and modify application data. The disclosed CVSS vector (AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H) reflects high confidentiality, integrity, and availability impact confined to the Grafana scope, with a user-interaction requirement consistent with the operator needing to install the plugin.

Caveat: no specific file paths, function names, or archive-entry names are available in the source data; the above describes the attack at the vulnerability-class level as required. No threat actor campaign or in-the-wild exploitation has been reported for this CVE.


Impact Assessment

CVE-2026-15815 carries a CVSS 3.1 base score of 8.8 (HIGH) with the vector CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H.

  • Attack Vector (N — Network): The archive can be delivered remotely; no adjacent or local access is required to supply the malicious plugin.
  • Attack Complexity (L — Low): No specialized conditions or race windows are described; crafting the symlink chain and supplying the archive is straightforward.
  • Privileges Required (N — None): The attacker needs no authenticated account on the target Grafana instance to construct the payload.
  • User Interaction (R — Required): An operator must install the plugin — via grafana-cli, GF_INSTALL_PLUGINS, or preinstall configuration. This is the single barrier.
  • Scope (U — Unchanged): Impact is confined to the Grafana process and its host resources.
  • Confidentiality / Integrity / Availability (H/H/H): All three are rated High, consistent with arbitrary code execution as the Grafana server user.

Business impact. Grafana is widely deployed as a central observability and dashboarding platform and frequently holds credentials to data sources, alerting integrations, and authentication systems. A successful exploit grants the attacker the privileges of the Grafana service account, enabling data exfiltration (C:H), tampering with dashboards, data sources, and stored secrets (I:H), and disruption of monitoring/alerting (A:H). Because monitoring platforms are often trusted implicitly by downstream systems, compromise can have a blast radius beyond the Grafana host itself.

Affected systems. Grafana OSS and Grafana Enterprise (which shares the plugin extraction code). Any deployment that installs plugins through the three enumerated vectors is in scope. The absence of a vendor-supplied version range from tracked sources limits the ability to scope affected releases precisely; operators should treat all currently deployed versions that use the affected extraction routine as potentially vulnerable until the vendor publishes an advisory.

Blast radius. Highest for internet-exposed or containerized Grafana deployments that auto-install plugins (e.g., via GF_INSTALL_PLUGINS), because plugin provisioning is automated and the malicious archive is extracted without review. Supply-chain exposure is significant: the description explicitly warns that a valid plugin signature does not prevent the write, eroding the primary trust control in the plugin ecosystem.

EPSS: Not yet scored by FIRST.org at the time of writing; no EPSS value is provided or fabricated here. CISA KEV: Not listed.


Detection Guidance

Detection should focus on plugin installation events, archive extraction creating symbolic links, and unexpected process execution by the Grafana service account.

Sigma Rule

title: Grafana Plugin Archive Extraction with Symlink Traversal (CVE-2026-15815)
id: 8f3c1a2e-1581-5a15-9b0c-0a1b2c3d4e5f
status: experimental
description: Detects Grafana plugin install/extraction activity that may indicate exploitation of CVE-2026-15815 via symlink-based path traversal.
references:
  - https://nvd.nist.gov/vuln/detail/CVE-2026-15815
author: valtersit.com
date: 2026/01/01
tags:
  - attack.t1195.002
  - cve.2026.15815
logsource:
  category: process_creation
  product: linux
detection:
  selection_grafana_cli:
    Image|endswith:
      - '/grafana-cli'
      - '/grafana'
    CommandLine|contains:
      - 'plugins install'
      - 'install'
  selection_env:
    CommandLine|contains:
      - 'GF_INSTALL_PLUGINS'
  condition: selection_grafana_cli or selection_env
falsepositives:
  - Legitimate administrative plugin installations
level: medium

YARA Rule

rule CVE_2026_15815_Grafana_Plugin_Symlink_Traversal
{
    meta:
        description = "Detects plugin archives that chain relative symlinks to escape the Grafana plugin directory (CVE-2026-15815)"
        author = "valtersit.com"
        reference = "https://nvd.nist.gov/vuln/detail/CVE-2026-15815"
        date = "2026-01-01"
        severity = "high"

    strings:
        // ZIP central directory symlink external attribute marker
        $zip_symlink = { 41 0D 00 00 }        // unix mode stored in external attrs (S_IFLNK context)
        $link_hdr   = "PK\x03\x04"

    condition:
        $link_hdr at 0 and
        #zip_symlink > 0 and
        filesize < 100MB
}

Suricata IDS Rule

alert http any any -> any any (msg:"CVE-2026-15815 Grafana Malicious Plugin Archive Download (zip with symlink entries)"; flow:established,to_server; http.request_body; content:"PK|03 04|"; content:"./"; distance:0; pcre:"/(?:\.\.\/){2,}/"; reference:cve,2026-15815; reference:url,nvd.nist.gov/vuln/detail/CVE-2026-15815; classtype:attempted-admin; sid:2026158150; rev:1;)

Elastic Detection

process where event.action == "exec" and
  process.name in ("grafana-cli", "grafana", "grafana-server") and
  process.command_line : ("*plugins install*" or "*GF_INSTALL_PLUGINS*")

Splunk SPL Query

index=main (source="*grafana*" OR sourcetype="grafana*")
(plugin* OR install* OR "GF_INSTALL_PLUGINS")
| search ("plugins install" OR "GF_INSTALL_PLUGINS" OR "preinstall")
| stats count min(_time) as first_seen max(_time) as last_seen by host, user, plugin_id, cmd
| where count > 0

Wazuh OSSEC Rule

<group name="grafana,cve-2026-15815,">
  <rule id="100815" level="12">
    <decoded_as>json</decoded_as>
    <field name="plugin.id">\.\|/</field>
    <description>CVE-2026-15815: Grafana plugin install with suspicious path characters - possible symlink traversal</description>
    <mitre>
      <id>T1195.002</id>
    </mitre>
  </rule>

  <rule id="100816" level="10">
    <if_sid>100815</if_sid>
    <field name="action">install</field>
    <description>CVE-2026-15815: Grafana plugin installation event following suspicious archive extraction</description>
  </rule>
</group>

Mitigation & Patch Guidance

Patch confidence: 0/4 (UNPATCHED). No patch evidence exists from any tracked source. There is no vendor fix reference and no affected-version range to target.

1. Immediate mitigations (in absence of a patch):

  • Do not install plugins from untrusted or unverified sources. Because extraction occurs before signature verification, signature validity alone must not be treated as a safeguard. Restrict plugin installation to a vetted internal mirror or a curated allowlist.
  • Restrict use of the vulnerable installation vectors. Avoid setting GF_INSTALL_PLUGINS and avoid provisioning plugins via preinstall configuration in environments where archive provenance cannot be guaranteed. If plugins must be installed, prefer manual, reviewed installation with content inspection of the archive before extraction.
  • Inspect incoming plugin archives for symbolic link entries. Reject archives containing symlink records, especially relative symlinks whose targets traverse upward. Implement pre-install archive inspection as a gate.
  • Run Grafana with least privilege. Ensure the Grafana server process does not run as root and is confined with OS-level controls (container read-only root filesystem where feasible, restricted write paths, AppArmor/SELinux profiles, seccomp). This limits where the dropped backend binary can be written and whether it can execute.
  • Network restrictions. Do not expose Grafana's plugin-installation workflow to untrusted networks; restrict administrative access.

2. Patch / upgrade steps:

  • No patch is currently available. Monitor the Grafana security advisories page and the NVD entry for CVE-2026-15815 for the first vendor release that corrects the extraction logic (expected to enforce safe symlink resolution on extraction and to move signature verification ahead of extraction). Apply the fixed version as soon as it is published.
  • Until then, treat all plugin installation as an untrusted operation and validate archives out-of-band.

3. Long-term hardening:

  • Enforce plugin provenance with an internal artifact repository; verify plugin hashes against a trusted manifest before installation.
  • Adopt a policy that plugin signature verification must occur before any file extraction, and validate that vendor tooling enforces this ordering once a fix ships.
  • Implement file-integrity monitoring (FIM) over the Grafana plugin directory and its parent paths to detect out-of-directory writes and unexpected executable drops.
  • Establish alerting on process execution spawned by the Grafana service account, especially from paths outside the Grafana installation tree.
  • Maintain a software bill of materials (SBOM) for plugins and monitor upstream security feeds for revised advisories.

References

  1. NVD — CVE-2026-15815: https://nvd.nist.gov/vuln/detail/CVE-2026-15815
  2. MITRE CWE-22 — Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal'): https://cwe.mitre.org/data/definitions/22.html
  3. Grafana Security Advisories (vendor advisory portal — check for the corresponding GHSA/GLSA once published): https://grafana.com/security/security-advisories/
  4. MITRE ATT&CK T1195.002 — Compromise Software Supply Chain: https://attack.mitre.org/techniques/T1195/002/
  5. CISA Known Exploited Vulnerabilities Catalog (CVE-2026-15815 not currently listed — monitor for addition): https://www.cisa.gov/known-exploited-vulnerabilities-catalog

Threat actor / exploitation status: No public proof-of-concept, Nuclei template, exploit code, or in-the-wild exploitation evidence is available for CVE-2026-15815 at the time of this report. CISA KEV status is negative. EPSS has not yet been assigned. All tactical details above are derived from the advisory description and the associated vulnerability class.

◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2026-15815/ · 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.