Description
Grav plugin-api before 1.0.15 contains a script injection vulnerability where the SVG sanitizer only checks for the exact extension 'svg', allowing .svgz and .xhtml files to bypass sanitization and be stored unsanitized. Attackers with api.media.write permission can upload files containing executable script payloads that execute in the site origin when accessed by administrators or visitors.
Published: 2026-08-18
Score: 5.1 Medium
EPSS: n/a
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

Grav plugin‑api before version 1.0.15 fails to properly sanitize uploaded files. The sanitizer only checks for the exact 'svg' extension, allowing files with extensions such as '.svgz' or '.xhtml' to bypass filtering. An attacker who can write media through the API can embed executable script payloads in these files. When an administrator or any visitor accesses the uploaded resource, the script runs in the site’s origin, allowing the attacker to execute arbitrary JavaScript in the victim’s browser context.

Affected Systems

The vulnerability affects Grav installations that use the plugin‑api module older than 1.0.15. All users of getgrav and the Grav core that rely on this plugin should verify the plugin version; any release earlier than 1.0.15 remains at risk.

Risk and Exploitability

The CVSS score of 5.1 indicates medium severity. The EPSS score is not available, and the issue is not listed in CISA KEV. Exploitation requires the attacker to possess api.media.write permission to upload a file via the API. Once the file is uploaded, browsing the file triggers the embedded script. Because the attack leverages file‑upload permissions, the exploitation path hinges on configuration and permission management rather than an easy public vector.

Generated by OpenCVE AI on August 18, 2026 at 12:51 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade plugin-api to version 1.0.15 or later, which implements proper file extension checks and sanitization.
  • Restrict the api.media.write permission to trusted users only and enforce least privilege on roles that can upload media files.
  • Configure upload handling to reject or block files with extensions .svgz, .xhtml, or any non‑svg extensions before they are stored or served by the site.

Generated by OpenCVE AI on August 18, 2026 at 12:51 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Tue, 18 Aug 2026 11:30:00 +0000

Type Values Removed Values Added
Description Grav plugin-api before 1.0.15 contains a script injection vulnerability where the SVG sanitizer only checks for the exact extension 'svg', allowing .svgz and .xhtml files to bypass sanitization and be stored unsanitized. Attackers with api.media.write permission can upload files containing executable script payloads that execute in the site origin when accessed by administrators or visitors.
Title Grav plugin-api before 1.0.15 Script Injection via SVG
First Time appeared Getgrav
Getgrav grav
Weaknesses CWE-79
CPEs cpe:2.3:a:getgrav:grav:*:*:*:*:*:*:*:*
Vendors & Products Getgrav
Getgrav grav
References
Metrics cvssV3_1

{'score': 4.6, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:U/C:L/I:L/A:N'}

cvssV4_0

{'score': 5.1, 'vector': 'CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:P/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N'}


cve-icon MITRE

Status: PUBLISHED

Assigner: VulnCheck

Published:

Updated: 2026-08-18T11:19:38.977Z

Reserved: 2026-08-17T10:48:45.738Z

Link: CVE-2026-74908

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-08-18T12:19:31.190

Modified: 2026-08-18T12:19:31.190

Link: CVE-2026-74908

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-08-18T13:30:13Z

Weaknesses
  • CWE-79

    Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')