Medium severity · published Aug 19, 2026
CVE-2026-61607
Grav API Plugin: Stored XSS via SVG Upload - API Media Pipeline Bypasses Sanitizer
4.6
CVSS
0.3%
EPSS
No
On KEV
Description
Grav API Plugin is a RESTful API for Grav CMS that provides full headless access to your site's content. Prior to 1.0.2, the Grav API plugin POST /api/v1/media pipeline in HandlesMediaUploads::processUploadedFile() validates an SVG filename extension but does not invoke Security::sanitizeSVG(). An attacker with api.media.write permission can store an SVG containing JavaScript, and the server returns the file as Content-Type: image/svg+xml so the script executes when a victim opens it, allowing session data theft and authenticated actions. This issue is fixed in version 1.0.2.
CVSS vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:U/C:L/I:L/A:N
Attack vector
Network
Complexity
Low
Privileges
Low
User interaction
Required
Confidentiality
Low
Integrity
Low
Availability
None
Scope
Unchanged
Exploitation
Is it being used?
Exploit prediction (EPSS)0.3% · higher than 21% of CVEs
Exploited in the wildNo evidence yet
CISA KEVNot listed
Ransomware campaign useNot known
Affected products
Which versions
GR
grav-plugin-api · getgrav
< 1.0.2 · source: vendor
Affected product
GR
grav-plugin-api
getgrav
More from grav-plugin-api
9.8
CVE-2026-112779
Grav API Plugin before 1.0.42 Cache Exhaustion and Page Permission Bypass
9.4
CVE-2026-62668
Grav API Plugin: Webhook SSRF via Unrestricted cURL Protocols
8.8
CVE-2026-62666
Grav API Plugin: non-super api.users.write manager -> super-admin via createApiKey (incomplete fix of CVE-2026-59190); + 2FA strip of super
8.8
CVE-2026-72833
Grav 1.0.6 through 1.0.11 Privilege Escalation via Scoped API Keys
8.8
CVE-2026-42843
grav-plugin-api: Grav API Privilege Escalation to Super Admin