Goal Reached Thanks to every supporter — we hit 100%!

Goal: 1000 CNY · Raised: 1359 CNY

100%

CVE-2026-61456— Grav before 1.0.3 Stored XSS via SVG Upload API

Quick assessment

Affected
getgrav grav
Exploitation
No confirmed in-the-wild exploitation; assess based on exposure
Recommended action
Check the vendor advisory and references for a fixed version. If immediate upgrade is impossible, restrict exposure and increase monitoring.

getgrav Grav是getgrav个人开发者开源的一套可扩展的内容管理系统。 getgrav Grav 1.0.3之前版本存在跨站脚本漏洞,该漏洞源于未能对通过POST /api/v1/media端点上传的SVG文件进行清理,可能导致经过身份验证的攻击者上传包含任意JavaScript的SVG文件,当管理员在浏览器中打开该文件时,嵌入的脚本会在其会话环境中执行,导致Cookie窃取和会话劫持。

CVSS 4.6 · Medium EPSS 0.24% · P13

Affected Version Matrix 2

VendorProduct Version RangeStatus
getgrav grav < 1.0.3 affected
1.0.3 unaffected
Get alerts for future matching vulnerabilities Log in to subscribe

I. Basic Information for CVE-2026-61456

Vulnerability Information

Have questions about the vulnerability? See if Shenlong's analysis helps!
View Shenlong Deep Dive ↗

Although we use advanced large model technology, its output may still contain inaccurate or outdated information.Shenlong tries to ensure data accuracy, but please verify and judge based on the actual situation.

Vulnerability Title
Grav before 1.0.3 Stored XSS via SVG Upload API
Source: CVE Program / CVE List V5
Vulnerability Description
The Grav API plugin (getgrav/grav-plugin-api) before 1.0.3 fails to sanitize SVG files uploaded through the POST /api/v1/media endpoint. The HandlesMediaUploads::processUploadedFile() method validates only the file extension and never invokes Security::sanitizeSVG(), so an authenticated attacker with the api.media.write permission can upload an SVG containing arbitrary JavaScript. The file is stored unmodified and served with Content-Type: image/svg+xml; when an administrator opens it in a browser (directly or via <object>/<iframe>), the embedded script executes in their session context, enabling cookie theft and session hijacking.
Source: CVE Program / CVE List V5
CVSS Information
CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:U/C:L/I:L/A:N
Source: CVE Program / CVE List V5
Vulnerability Type
在Web页面生成时对输入的转义处理不恰当(跨站脚本)
Source: CVE Program / CVE List V5
Vulnerability Title
getgrav Grav 跨站脚本漏洞
Source: CNNVD (China National Vulnerability Database)
Vulnerability Description
getgrav Grav是getgrav个人开发者开源的一套可扩展的内容管理系统。 getgrav Grav 1.0.3之前版本存在跨站脚本漏洞,该漏洞源于未能对通过POST /api/v1/media端点上传的SVG文件进行清理,可能导致经过身份验证的攻击者上传包含任意JavaScript的SVG文件,当管理员在浏览器中打开该文件时,嵌入的脚本会在其会话环境中执行,导致Cookie窃取和会话劫持。
Source: CNNVD (China National Vulnerability Database)
CVSS Information
N/A
Source: CNNVD (China National Vulnerability Database)
Vulnerability Type
N/A
Source: CNNVD (China National Vulnerability Database)

Affected Products

Vendor Product Affected Versions CPE Subscribe
getgrav grav 0 ~ 1.0.3 -

II. Public POCs for CVE-2026-61456

# POC Description Source Link Shenlong Link
AI-Generated POC Premium

No public POC found.

Login to generate AI POC

III. Intelligence Information for CVE-2026-61456

请登录查看更多情报信息。

Vendor Advisories for CVE-2026-61456 (2)

Same Patch Batch · getgrav · 2026-07-10 · 10 CVEs total

CVE-2026-55885 6.8 MEDIUM Grav: Admin Backup Zip File Exposes Account Credentials and Configuration Secrets
CVE-2026-61450 6.5 MEDIUM Grav before 2.0.2 Config Exfiltration via offsetGet Filter
CVE-2026-61455 6.5 MEDIUM Grav before 2.0.1 Decompression Bomb via ZipArchiver
CVE-2026-55890 4.8 MEDIUM Grav: Stored CSS injection via Markdown image ?style=… reaches MediaObjectTrait::style()
CVE-2026-53653 Grav: Unauthenticated denial of service via unbounded image derivative dimensions
CVE-2026-58493 grav-plugin-database: DSN Parameter Injection via Unsanitized Configuration Values in Conn
CVE-2026-58492 grav-plugin-database: SQL Injection in PDO::tableExists() due to Unsanitized Table Name In
CVE-2026-59193 Grav CMS — Improper Handling of Highly Compressed Data in Installer::unZip()
CVE-2026-59190 Grav Admin Plugin — IDOR Privilege Escalation via saveUser()

IV. Related Vulnerabilities

V. Comments for CVE-2026-61456

No comments yet


Leave a comment