CVE-2026-61607 PUBLISHED

Grav API Plugin: Stored XSS via SVG Upload - API Media Pipeline Bypasses Sanitizer

Assigner: GitHub_M
Reserved: 10.07.2026 Published: 19.08.2026 Updated: 19.08.2026

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.

Metrics

CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:U/C:L/I:L/A:N
CVSS Score: 4.6

Product Status

Vendor getgrav
Product grav-plugin-api
Versions
  • Version < 1.0.2 is affected

References

Problem Types

  • CWE-79: Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting') CWE