{"id":"CVE-2026-54615","url":"https://www.cyber-defence.io/tools/cve/CVE-2026-54615","generatedAt":"2026-10-28T08:11:20.100Z","title":"This is a stored cross-site-scripting / HTML-injection defect caused by a single missed sanitizer in one sibling branch.","description":"Part-DB is an open source inventory management system for electronic components. Prior to version 2.12.1, LogEntryExtraFormatter builds the HTML shown in the \"Extra\" column of the activity-log table (/log) and in element history tables. Every branch of LogEntryExtraFormatter::getInternalFormat() runs user-controlled strings through htmlspecialchars() before placing them into the HTML it returns — except the CollectionElementDeleted branch, which interpolates getOldName() (and getCollectionName()) into a sprintf() template with no escaping. The returned string is emitted by LogEntryExtraColumn::render() and inserted as raw HTML into the DataTables cell (the bundle does not escape column output; sibling columns call htmlspecialchars() themselves). CollectionElementDeleted.getOldName() is the name of a deleted collection sub-element — a part Parameter, Attachment, PartLot, Orderdetail, etc. — all freely set by any user with edit rights on the owning element. A low-privileged content editor can therefore store an HTML/script payload as the name of such a sub-element, delete it (which writes the log entry), and have that markup parsed as live DOM in the browser of a higher-privileged victim (an administrator/auditor with system.show_logs, or any user viewing that element's history). This is a stored cross-site-scripting / HTML-injection defect caused by a single missed sanitizer in one sibling branch. CSP policies block inline javascript execution under normal conditions. This issue has been patched in version 2.12.1.","published":"2026-10-23T04:18:17.000Z","lastModified":"2026-10-23T19:36:32.000Z","status":"Deferred","sourceIdentifier":"security-advisories@github.com","cvss":{"version":"4.0","score":6,"severity":"MEDIUM","vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:N/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/M"},"cwe":["CWE-79"],"affected":[],"epss":{"score":0.00372,"percentile":0.30994,"date":"2026-10-27","history":[{"date":"2026-10-23","score":0.00297,"percentile":0.21259}]},"kev":{"listed":false},"exploits":{"count":0,"verified":false,"firstPublished":null,"source":"Exploit-DB (https://gitlab.com/exploit-database/exploitdb)","entries":[]},"verdict":{"level":"low","text":"Lower severity and a low EPSS score (0.37%). Track it; it rarely justifies an emergency change on its own."},"changes":[{"kind":"new","label":"New CVE","at":"2026-10-23T04:18:17.000Z","detail":{"score":"6.0","severity":"MEDIUM","publishedAt":"2026-10-23T04:18:16.833Z"},"summary":"New CVE, medium severity (CVSS 6.0)."}],"references":[{"url":"https://github.com/Part-DB/Part-DB-server/releases/tag/v2.12.1","source":"security-advisories@github.com"},{"url":"https://github.com/Part-DB/Part-DB-server/security/advisories/GHSA-gp89-jfq9-x8r9","source":"security-advisories@github.com"}],"sources":{"nvd":"https://nvd.nist.gov/vuln/detail/CVE-2026-54615","epss":"https://www.first.org/epss/","kev":"https://www.cisa.gov/known-exploited-vulnerabilities-catalog","exploitdb":"https://www.exploit-db.com/"},"licence":"CC BY 4.0 — link back to the CVE Explorer if you publish the results; upstream data remains subject to its own terms."}