GHSA-xfvg-8v67-j7wp: TypiCMS Core has Stored Cross-Site Scripting (XSS) via SVG File Upload
I. Summary
A Stored Cross-Site Scripting (XSS) vulnerability exists in the file upload module of TypiCMS. The application allows users with file upload permissions to upload SVG files. While there is a MIME type validation, the content of the SVG file is not sanitized. An attacker can upload a specially crafted SVG file containing malicious JavaScript code. When another user (such as an administrator) views or accesses this file through the application, the script executes in their browser, leading to a compromise of that user's session.
The issue is exacerbated by a bug in the SVG parsing logic, which can cause a 500 error if the uploaded SVG does not contain a viewBox attribute. However, this does not mitigate the XSS vulnerability, as an attacker can easily include a valid viewBox attribute in their malicious payload.
II. Vulnerability Details
- Vulnerability Type: Stored Cross-Site Scripting (XSS) (CWE-79)
- Affected Component: TypiCMS\Modules\Core\Http\Requests\FileFormRequest.php and TypiCMS\Modules\Core\Services\FileUploader.php.
- Affected Versions: <= 16.0.5
The vulnerability stems from two main points:
1. Permissive File Validation: The FileFormRequest explicitly whitelists svg as an allowed MIME type for uploads.
2. Lack of Content Sanitization: The FileUploader service saves the SVG file to the server without parsing and sanitizing its content to remove potentially malicious elements like <script> tags or on* event handlers.
When the default filesystem disk is set to public, the uploaded SVG file is stored in a publicly accessible directory, making it trivial to access the file via a direct URL and trigger the XSS payload.
III. Proof of Concept (PoC)
1. Create a Malicious SVG File:
Create a file named malicious.svg with the following content. The viewBox attribute is included to bypass the application's parsing bug.
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
<script>
// A simple PoC to demonstrate the vulnerability
alert('XS
Details
Original advisory: https://github.com/advisories/GHSA-xfvg-8v67-j7wp
Exploitation outlook
EPSS (FIRST.org) estimates each CVE’s probability of exploitation in the next 30 days — here is the CSIRTS.com read on those numbers.
- Low exploitation riskCVE-2026-276210.19% 30-day exploitation probability — currently an unlikely target, but scores change as exploit code circulates. Riskier than 9% of all scored CVEs.
Referenced CVEs
| CVE | CSIRTS overview | External |
|---|---|---|
| CVE-2026-27621 | coverage & exploitation status | NVD · CVE.org |
More from GitHub Security Advisories
- criticalGHSA-g936-7jqj-mwv8: TSDProxy: Internal proxy auth token forwarded to backend services enables management API …2026-07-10
- highGHSA-fpg8-7664-jc5q: melange: Incomplete package integrity verification allows data section substitution2026-07-10
- mediumGHSA-48rx-c7pg-q66r: Excon does not redact additional sensitive/risky headers when following redirects2026-07-10
- highGHSA-h4g2-xfmw-q2c9: Clauster: Non-loopback deployments can serve the dashboard unauthenticated when auth.enab…2026-07-10
- mediumGHSA-rqq5-2gf9-4w4q: Secure Headers: CSP directive injection via sandbox, plugin_types, and report_to when giv…2026-07-10