GitHub Advisoryadvisory · Packagist
GHSA-xvhc-gm7j-mhmc Shopware: Stored XSS via SVG file upload — no SVG sanitization
MEDIUM
Official page ↗
- Aliases
- CVE-2026-48015
- Ecosystem
- Packagist
- Packages
- shopware/core, shopware/platform
- Severity
- Moderate
- CVSS vector
- CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:N/A:N
- Weaknesses
- CWE-79
- Reviewed
- 2026-06-04
Affected packages
• Packagist shopware/core: >= 6.7.0.0, < 6.7.10.1 → fixed in 6.7.10.1
• Packagist shopware/core: < 6.6.10.18 → fixed in 6.6.10.18
• Packagist shopware/platform: >= 6.7.0.0, < 6.7.10.1 → fixed in 6.7.10.1
• Packagist shopware/platform: < 6.6.10.18 → fixed in 6.6.10.18
Description
SVG files are in the `allowed_extensions` whitelist and can be uploaded by any admin user via the media manager. There is zero SVG content sanitization anywhere in the upload pipeline. A malicious SVG with JavaScript (`onload`, ``, ``) executes in the context of the Shopware domain when accessed.
The Problem
In `src/Core/Framework/Resources/config/packages/shopware.yaml`, line 194:
```yaml
allowed_extensions: ["jpg", "jpeg", "png", "webp", "avif", "gif", "svg", ...]
```
SVG is whitelisted. The upload path (`MediaUploadController` → `FileSaver` → `TypeDetector`) recognizes SVG as `ImageType` with `VECTOR_GRAPHIC` flag, but no code strips JavaScript, event handlers, or external entity references from the SVG XML.
A search of the entire codebase for SVG sanitization returns — no `DOMPurify`, no `svg-sanitize`, no `strip_tags` on SVG content, nothing.
Impact
Stored XSS affecting all users who view the uploaded SVG. In an e-commerce context, this can lead to admin account takeover, customer data theft, or malicious plugin installation.
Suggested Fix
Either:
1. Remove SVG from `allowed_extensions` if SVG upload is not a core requirement
2. Sanitize SVG content on upload using a library like `enshrined/svg-sanitize` (strips scripts, event handlers, external references)
3. Serve SVGs with `Content-Disposition: attachment` to prevent inline rendering
4. Serve SVGs from a separate domain (like Nextcloud's `usercontent.apps.nextcloud.com`)
Option 2 is the most practical — `enshrined/svg-sanitize` is already used by WordPress and other PHP projects.
Regards & BG,
Keyvan Hardani
Related
Alias · CVE (1)
- CVE-2026-48015 Shopware is an open commerce platform. vulnerability
Weakness · CWE (1)
- CWE-79 Improper Neutralization of Input During Web Page Generation weakness