Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate with upload permission
-
DeliveryUpload SVG payload as photo.jpg
-
ExploitExtension check skips SVG sanitization
-
ExecutionVictim opens attachment inline
-
ImpactScript runs in Part-DB origin, exfiltrates session cookie
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Output encoding, context-aware escaping
MITRE ATT&CK
2 techniques across 2 tactics: Initial Access, Execution The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires an authenticated Part-DB account that holds attachment-upload permission; the advisory states even low-privilege users suffice, so no admin access is needed to plant the payload. Exploitation further requires a victim user to open the malicious attachment inline at /attachment/{id}/view - that user interaction is the primary limiting factor, and the payload only affects whoever views it (impact escalates if that viewer is an administrator). No special or non-default configuration is needed: the flaw is in default handling of uploaded attachments in Part-DB-server versions <= 2.12.2, because sanitization is decided by the user-controlled filename extension (e.g. naming an SVG .jpg bypasses it entirely) and the inline response still sets Content-Type: image/svg+xml. |
| Impact | This is a stored cross-site scripting flaw (CWE-79, with the vendor also citing CWE-434 for the upload-type confusion) rated CVSS 5.4 via CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N. The CVSS signals are internally consistent with the documented mechanism: network-reachable (AV:N), low complexity (AC:L), requires an authenticated account with upload permission (PR:L), requires a victim to view the attachment (UI:R), and crosses a security scope (S:C) because the injected script runs in the Part-DB origin against other users' sessions. No EPSS score and no KEV status are present in the input, so there is no evidence of active exploitation; exploitation status is best described as a public PoC being published in the vendor's GHSA advisory rather than confirmed in-the-wild use. The vuln.today decision label is 'this_month' (not act_now/emergency), which aligns with a medium-severity, authentication-and-interaction-gated stored XSS rather than an unauthenticated RCE. The realistic concern is privilege escalation within an instance: a low-privilege user can plant a payload that fires when an administrator views the attachment, enabling session/cookie theft and potential account takeover - meaningful for multi-user deployments but not a mass-exploitable internet-facing issue. The CVSS confidentiality/integrity impacts are both Low and availability is None, so this is a real priority to patch for multi-user Part-DB instances but not a high-urgency emergency on the available signals. |
| Exploit ScenarioDerived | A low-privilege authenticated user uploads a file containing an SVG with an embedded <script> but names it photo.jpg; because sanitization is keyed off the user-controlled extension, the script-bearing SVG is stored unsanitized. When any other user - including an administrator - opens the attachment inline, the server returns Content-Type: image/svg+xml and the browser executes the script in the Part-DB origin, stealing the victim's session cookie. A working PoC (malicious SVG payload plus the upload curl command) is published in the vendor GHSA advisory. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 23, 2026
Stored cross-site scripting in Part-DB Server 2.12.2 and earlier allows an authenticated user with attachment-upload permission to plant a JavaScript-bearing SVG that executes in the Part-DB origin whenever another user opens the attachment inline at /attachment/{id}/view. Because sanitization is decided from the user-controlled filename extension, naming the SVG payload with a non-SVG extension such as .jpg skips the sanitizer entirely, while the response still carries Content-Type: image/svg+xml; this can lead to session hijacking or account takeover of whichever user - potentially an administrator - views the file. Rated CVSS 5.4 (CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N) with the vendor also citing CWE-434 alongside CWE-79; not listed in CISA KEV, and the advisory ships a public proof-of-concept reproduction (curl upload steps) rather than confirmed working exploit code; fixed in 2.12.3.
RemediationAI
Vendor-released patch: upgrade to Part-DB 2.12.3, which the release notes describe as containing security fixes and recommends applying immediately; it closes the sanitization bypass for SVGs uploaded with non-SVG extensions and additionally adds CSP headers to static files so an uploaded vulnerable file cannot execute script if one does slip through (https://github.com/Part-DB/Part-DB-server/releases/tag/v2.12.3). The full technical detail, including the affected code paths in AttachmentSubmitHandler.php, Attachment.php and AttachmentFileController.php, is in advisory GHSA-2vhp-c958-m47j (https://github.com/Part-DB/Part-DB-server/security/advisories/GHSA-2vhp-c958-m47j). The advisory's stated fix direction is content-based type detection using magic bytes (finfo_file()/mime_content_type()) with rejection of mismatched extension/type pairs, plus XML-aware SVG sanitization that strips <script> elements and event-handler attributes before saving; if you cannot upgrade immediately, removing attachment-upload permission from untrusted or low-privilege accounts reduces who can plant a payload but does not address the missing content-type check, and the trade-off is that those users can no longer attach files such as datasheets or images to parts.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Part-DB Server is a PHP/Symfony application for managing electronic component inventory, and the flaw sits in its attachment handling chain. In src/Services/Attachments/AttachmentSubmitHandler.php the uploader calls the SVG sanitizer only when the attachment's getExtension() equals "svg"; getExtension() in src/Entity/Attachments/Attachment.php derives that value from the user-supplied original_filename field (falling back to the internal path) rather than from the stored bytes, so an SVG saved as photo.jpg is never passed to the sanitizer. The serving side compounds this: forbidHTMLContentType() in src/Controller/AttachmentFileController.php rewrites only a text/html MIME type to text/plain and has no case for image/svg+xml, so the browser receives the SVG inline with its true MIME type and executes embedded <script> or event-handler content in the Part-DB origin. The result is CWE-79 stored XSS enabled by the upload-type confusion the vendor tracks as CWE-434; the underlying remediation direction described in the advisory is to detect real content type via magic bytes (PHP finfo_file()/mime_content_type()) and reject mismatches, plus XML-aware SVG sanitization.
Know when Part Db gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N
Authenticated uploader (PR:L) over the network (AV:N/AC:L); victim must view the attachment (UI:R); script executes cross-context in the origin (S:C) with limited C/I impact and no availability loss.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
1DescriptionCVE.org
Part-DB is an open source inventory management system for electronic components. Prior to version 2.12.3, Part-DB-server sanitizes SVG files based solely on the user-controlled filename extension rather than actual file content type. An authenticated attacker can upload a malicious SVG with JavaScript payload using a non-SVG extension (e.g., .jpg), bypassing sanitization entirely. When any user views the attachment inline, the browser receives Content-Type: image/svg+xml and executes the embedded script in the Part-DB origin. This issue has been patched in version 2.12.3.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.
OS Command Injection in GitHub repository part-db/part-db prior to 0.5.11. Rated critical severity (CVSS 9.8), this vuln
Authenticated file upload in Part-DB Server 2.12.0 and earlier lets any member of the default users group obtain remote
Password-reset link poisoning in Part-DB Server (through 2.13.2) lets an unauthenticated remote attacker who can reach t
Part-DB is an open source inventory management system for your electronic components. Rated medium severity (CVSS 6.1),
Stored HTML injection in Part-DB through 2.12.0 lets an authenticated user with edit rights on an entity store a crafted
Stored cross-user HTML injection in Part-DB's BOM validation results allows a user who can create or edit a Part name to
Authenticated users with attachment create/edit permissions can bypass the configured MAX_ATTACHMENT_FILE_SIZE limit in
Authenticated users holding the API access permission can bypass the configured maximum attachment file size in Part-DB
Spreadsheet formula injection in Part-DB through 2.13.1 lets an authenticated user who holds the '@parts.import' permiss
Part-DB is an open source inventory management system for electronic components. Rated medium severity (CVSS 5.7), this
EUVD-2026-108577
NVD
CVE.org
EPSS
GitHub
Exploit-DB