Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as low-priv Editor user
-
DeliveryStore HTML payload in Part name
-
ExploitVictim imports BOM CSV referencing Part ID
-
ExecutionPart name rendered via Twig |raw in validation page
-
ImpactPhishing/UI-redress on trusted Part-DB page
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 | Exploitation requires two authenticated users on the same Part-DB instance: an attacker holding permission to create or edit a Part name (reproduced with the non-admin Editor preset) who stores HTML markup in a Part name, and a victim holding permission to import a BOM into a Project. The payload fires only when the victim imports a BOM CSV that references the attacker-controlled Part ID AND the BOM validation result page renders an information message - the PoC deliberately includes an invalid quantity/designator row to force that validation result to render. Limiting factors: authenticated low-privilege access is needed (not remote-unauthenticated), the victim must actively perform a BOM import (user interaction), and the stored CSP reportedly blocks inline JavaScript so impact is confined to HTML injection (links, forms, tracking images, CSS-based UI redressing) rather than script execution or direct data compromise. Affected versions are <= 2.12.1; the only stated complete fix is updating to 2.12.2. |
| Impact | This is a cross-user stored HTML injection (CWE-79) in Part-DB with a CVSS 4.0 base score of 5.7 (medium). The input provides no CISA KEV listing and no EPSS probability, so exploitation status is: no public exploit identified as active exploitation, but a detailed public PoC reference exists in the GHSA advisory (step-by-step payload and CSV) - it is not packaged as a verified working exploit tool. The CVSS 4.0 vector tempers the raw concern: PR:L means the attacker must already hold an authenticated low-privileged account (reproduced with the non-admin Editor preset), UI:A means the victim must actively import a BOM, and AT:P reflects that a validation message must actually render (the PoC forces this with an intentionally invalid CSV row). Impact is integrity-only (VI:H in the supplied vector; VC:N/VA:N) and, critically, the reporter states the current Content Security Policy blocks inline JavaScript, so this is HTML injection for phishing/UI-redressing/tracking - not script execution or data theft. The vuln.today decision label is 'this_month', not act_now or emergency, consistent with a medium-severity issue that needs two cooperating-or-targeted user roles. Net: a real but moderate-priority issue - patch on a normal cycle rather than as an emergency, with higher relevance for multi-user Part-DB instances where low-trust Editor accounts exist. |
| Exploit ScenarioDerived | A low-privileged Editor user edits a Part name to contain HTML markup (for example a red, large 'Re-authenticate' link pointing to an attacker domain). Later, a different user imports a BOM CSV that references that Part ID into a Project, and the BOM validation result page renders the stored Part name through Twig's |raw filter, so the attacker's HTML appears inside the trusted Part-DB page and can be used for phishing or UI redressing. A detailed public PoC with the exact payload and CSV is included in the GHSA advisory; JavaScript is reportedly blocked by CSP, so the scenario is HTML/link/form injection rather than script execution. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 23, 2026
Stored cross-user HTML injection in Part-DB's BOM validation results allows a user who can create or edit a Part name to plant markup that is later rendered unescaped in a different user's browser. The malicious Part name is interpolated into translated validation messages and output through Twig's |raw filter, so it executes as HTML when the victim imports a BOM CSV that references the poisoned Part ID; the advisory reports that the current Content Security Policy blocks inline JavaScript, confining impact to injected links, forms, tracking images and CSS-based UI redressing inside a trusted page rather than script execution or direct data compromise. Exploitation requires two authenticated low-privilege accounts (the advisory reproduced it with the non-admin Editor preset) and victim-side interaction (performing a BOM import), and a public proof-of-concept with payload and reproduction steps is published in the GHSA. Part-DB through 2.12.1 is affected; version 2.12.2 contains the fix.
RemediationAI
Upgrade to Part-DB 2.12.2, the version the vendor states contains the security fix; the release notes at https://github.com/Part-DB/Part-DB-server/releases/tag/v2.12.2 mark it as containing security fixes and recommend updating immediately, with the changelog diff available at https://github.com/Part-DB/Part-DB-server/compare/v2.12.1...v2.12.2, and the advisory at https://github.com/Part-DB/Part-DB-server/security/advisories/GHSA-qqrh-jjhg-vv5r documents the flaw. No separate workaround is stated in the available sources, and updating is the only stated complete fix; the CSP noted in the advisory blocks inline JavaScript but does not prevent the HTML injection itself, so it should not be treated as a substitute for patching. For deployments that cannot update immediately or that maintain a fork, the advisory's suggested code change is to stop rendering validation messages with the raw filter in templates/projects/_bom_validation_results.html.twig (change {{ info|raw }} to {{ info }} or {{ info|e }}), or, if some messages must contain trusted HTML, to escape each user-controlled placeholder before interpolation with something like htmlspecialchars($existing_part->getName(), ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8'); that escaping approach should also be applied to other BOM validation placeholders such as CSV-derived designators, package fields and quantities. The trade-off of the escaping fix is that any intentionally HTML-formatted validation message must be handled explicitly, since all interpolated values will display as literal text.
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 is a PHP/Symfony application distributed as the Composer package composer/part-db/part-db-server, using Twig for templating and XLIFF translation catalogues (translations/messages.en.xlf) for its UI strings. The flaw is an output-encoding failure of the classic CWE-79 class: BOM validation messages built in src/Services/ImportExportSystem/BOMValidationService.php interpolate user-controlled Part names into translated placeholders such as partdb_link_success, and the result is emitted in templates/projects/_bom_validation_results.html.twig (with related rendering in templates/projects/import_bom_map_fields.html.twig) via {{ info|raw }}, which disables Twig's automatic contextual escaping. Because the tainted value is a normally benign Part name field rather than an intended rich-text field, the payload persists in the database and crosses a user boundary: the attacker never needs the victim to open the malicious Part, only to import a CSV whose Part-DB ID column points at it. The advisory notes that the deployed CSP blocks inline script and event handlers, so the practical primitive is arbitrary HTML injection (anchors, forms, external images, CSS overlays) within an authenticated page. Per the independent assessment the vector is network-reachable with low privileges (PR:L, authenticated) and requires victim interaction (UI:R), with scope change and low integrity impact on the rendered page.
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
CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:A/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N
PR:L because the attacker needs an authenticated Editor account to set the Part name; UI:R and S:C because a different victim must import a BOM to trigger cross-user rendering; CSP-limited HTML-only injection gives C:N/I:L/A:N.
Primary rating from Vendor (github).
CVSS VectorVendor: github
Lifecycle Timeline
1DescriptionCVE.org
Part-DB is an open source inventory management system for electronic components. Prior to version 2.12.2, Part-DB renders BOM validation information messages using Twig's |raw filter. These messages include translated placeholders populated with user-controlled Part names. A user who can edit a Part name can store HTML markup in the Part name. When another user imports a BOM CSV referencing that Part ID, the malicious Part name is rendered as HTML in the victim's BOM validation result page. This results in a cross-user stored HTML injection issue. JavaScript execution appears to be blocked by the current Content Security Policy, but arbitrary HTML links, forms, images, and CSS-based UI elements can still be injected into a trusted Part-DB page. This issue has been patched in version 2.12.2.
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-site scripting in Part-DB Server 2.12.2 and earlier allows an authenticated user with attachment-upload per
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-108576
NVD
CVE.org
EPSS
GitHub
Exploit-DB