{"id":"CVE-2026-61807","aliases":["EUVD-2026-62626","GHSA-c8qc-wf67-342w"],"status":"published","title":"Snipe-IT: Stored DOM XSS via table selected-count IDs","description":"Snipe-IT is an IT asset/license management system. Prior to 8.6.2, a stored manufacturer or supplier name passed as the table component $name becomes data-selected-count-id in resources/views/partials/bootstrap-table.blade.php. Client-side code reads the browser-decoded countId, uses it as a selector, concatenates countId.substring(1) into an HTML string, and passes the string to jQuery .after(). A crafted name can therefore execute JavaScript when an authenticated user views the manufacturer detail page or supplier detail page, potentially exposing data or actions available to that session. This issue is fixed in version 8.6.2.","severity":{"version":"4.0","score":6.3,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:P/VC:L/VI:L/VA:N/SC:H/SI:H/SA:N","level":"medium","assessor":"cna","from":"cve"},"epss":{"day":"2026-11-09","score":0.00212,"percentile":0.11597,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-79"],"published":"2026-08-19T18:22:21Z","modified":"2026-10-28T02:30:47Z","fixes":[{"ecosystem":"Packagist","package":"snipe/snipe-it","fixed_in":["8.6.2"],"sources":["ghsa","osv"]}],"affected":[{"source":"ghsa","ecosystem":"Packagist","package":"snipe/snipe-it","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"8.6.2"}]}]},{"source":"osv","ecosystem":"Packagist","package":"snipe/snipe-it","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"8.6.2"}]}],"versions":["3.2.0","v0.1.0","v0.1.1","v0.1.2","v0.2.0","v0.3.0-alpha","v0.3.10-alpha","v0.3.11-alpha","v0.3.7-alpha","v0.3.8-alpha","v0.3.9-alpha","v1.0","v1.1","v1.2.0","v1.2.1","v1.2.10","v1.2.11","v1.2.2","v1.2.3","v1.2.3-beta","v1.2.4","v1.2.4-beta","v1.2.5","v1.2.6","v1.2.6-beta","v1.2.6.1","v1.2.7","v1.2.7-beta","v1.2.8","v1.2.9","v2.0","v2.0-RC-1","v2.0-beta","v2.0.1","v2.0.2","v2.0.3","v2.0.4","v2.0.5","v2.0.6","v2.1.0","v2.1.1","v2.1.2","v3.0","v3.0-alpha","v3.0-alpha2","v3.0-beta.1","v3.0-beta.2","v3.0-beta.3","v3.0.0-beta","v3.1.0","v3.3.0","v3.3.0-beta","v3.4","v3.4.0-alpha","v3.4.0-beta","v3.5.0","v3.5.0-beta","v3.5.0-beta2","v3.5.1","v3.5.2","v3.6.0","v3.6.1","v3.6.2","v3.6.3","v3.6.4","v3.6.5","v3.6.6","v4-beta3","v4-beta4","v4.0","v4.0-alpha","v4.0-alpha-2","v4.0-beta","v4.0-beta2","v4.0-beta5","v4.0-beta6","v4.0.1","v4.0.10","v4.0.11","v4.0.12","v4.0.13","v4.0.14","v4.0.15","v4.0.2","v4.0.3","v4.0.4","v4.0.5","v4.0.6","v4.0.7","v4.0.8","v4.0.9","v4.1.0","v4.1.0-beta","v4.1.0-beta2","v4.1.1","v4.1.10","v4.1.11","v4.1.12","v4.1.13","v4.1.14","v4.1.2","v4.1.3","v4.1.4","v4.1.5","v4.1.6","v4.1.7","v4.1.8","v4.1.9","v4.2.0","v4.3.0","v4.4.0","v4.4.1","v4.5.0","v4.6.0","v4.6.1","v4.6.10","v4.6.11","v4.6.12","v4.6.13","v4.6.14","v4.6.15","v4.6.16","v4.6.17","v4.6.18","v4.6.2","v4.6.3","v4.6.4","v4.6.5","v4.6.6","v4.6.7","v4.6.8","v4.6.9","v4.7.0","v4.7.1","v4.7.2","v4.7.3","v4.7.4","v4.7.5","v4.7.6","v4.7.7","v4.7.8","v4.8.0","v4.9.0","v4.9.1","v4.9.2","v4.9.3","v4.9.4","v4.9.5","v5.0.0","v5.0.0-beta-1.0","v5.0.0-beta-1.1","v5.0.0-beta-2","v5.0.0-beta-3.0","v5.0.0-beta-4","v5.0.0-beta-5","v5.0.1","v5.0.10","v5.0.11","v5.0.12","v5.0.2","v5.0.3","v5.0.4","v5.0.5","v5.0.6","v5.0.7","v5.0.8","v5.0.9","v5.1.0","v5.1.1","v5.1.2","v5.1.3","v5.1.4","v5.1.5","v5.1.6","v5.1.7","v5.1.8","v5.2.0","v5.3.0","v5.3.1","v5.3.10","v5.3.2","v5.3.3","v5.3.4","v5.3.5","v5.3.6","v5.3.7","v5.3.8","v5.3.9","v5.4.0","v5.4.1","v5.4.2","v5.4.3","v5.4.4","v6.0.0","v6.0.0-RC-1","v6.0.0-RC-2","v6.0.0-RC-3","v6.0.0-RC-4","v6.0.0-RC-5","v6.0.0-RC-6","v6.0.0-RC-7","v6.0.0-RC-8","v6.0.1","v6.0.10","v6.0.11","v6.0.12","v6.0.13","v6.0.14","v6.0.2","v6.0.3","v6.0.4","v6.0.5","v6.0.6","v6.0.7","v6.0.8","v6.0.9","v6.1.0","v6.1.1","v6.1.2","v6.2.0","v6.2.1","v6.2.2","v6.2.3","v6.3.0","v6.3.1","v6.3.2","v6.3.3","v6.3.4","v6.4.0","v6.4.1","v6.4.2","v7.0.0","v7.0.1","v7.0.10","v7.0.11","v7.0.12","v7.0.13","v7.0.2","v7.0.3","v7.0.4","v7.0.5","v7.0.6","v7.0.7","v7.0.8","v7.0.9","v7.1.14","v7.1.15","v7.1.16","v7.1.17","v8.0.0","v8.0.1","v8.0.2","v8.0.3","v8.0.4","v8.1.0","v8.1.1","v8.1.15","v8.1.16","v8.1.17","v8.1.18","v8.1.2","v8.1.3","v8.1.4","v8.2.0","v8.2.1","v8.3.0","v8.3.1","v8.3.2","v8.3.3","v8.3.4","v8.3.5","v8.3.6","v8.3.7","v8.4.0","v8.4.1","v8.5.0","v8.6.0","v8.6.1"]}],"products":[{"vendor":"grokability","product":"snipe-it"},{"vendor":"grokability, inc.","product":"snipe-it"},{"vendor":"snipeitapp","product":"snipe-it"}],"references":[{"url":"https://github.com/grokability/snipe-it/security/advisories/GHSA-c8qc-wf67-342w","tags":["x_refsource_CONFIRM","Exploit","Patch","Vendor Advisory","advisory","web"]},{"url":"https://github.com/grokability/snipe-it/commit/d12ad3d53869443b96b663ba3ce2673ef343da71","tags":["x_refsource_MISC","Patch","fix","web"]},{"url":"https://github.com/grokability/snipe-it/releases/tag/v8.6.2","tags":["x_refsource_MISC","Release Notes","Patch","web"]},{"url":"https://github.com/advisories/GHSA-c8qc-wf67-342w"},{"url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/61xxx/CVE-2026-61807.json","tags":["advisory"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-61807","tags":["advisory"]},{"url":"https://github.com/grokability/snipe-it","tags":["package"]}],"sources":{"cve":[{"id":"CVE-2026-61807","title":"Snipe-IT: Stored DOM XSS via table selected-count IDs","description":"Snipe-IT is an IT asset/license management system. Prior to 8.6.2, a stored manufacturer or supplier name passed as the table component $name becomes data-selected-count-id in resources/views/partials/bootstrap-table.blade.php. Client-side code reads the browser-decoded countId, uses it as a selector, concatenates countId.substring(1) into an HTML string, and passes the string to jQuery .after(). A crafted name can therefore execute JavaScript when an authenticated user views the manufacturer detail page or supplier detail page, potentially exposing data or actions available to that session. This issue is fixed in version 8.6.2.","status":"published","published":"2026-08-19T18:22:21.559Z","modified":"2026-08-25T03:40:03.406Z","cvss":[{"version":"4.0","score":6.3,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:P/VC:L/VI:L/VA:N/SC:H/SI:H/SA:N","level":"medium","assessor":"cna"}],"cwes":["CWE-79"],"updated_at":"2026-11-02T14:19:53.786088Z"}],"euvd":[{"id":"EUVD-2026-62626","description":"Snipe-IT is an IT asset/license management system. Prior to 8.6.2, a stored manufacturer or supplier name passed as the table component $name becomes data-selected-count-id in resources/views/partials/bootstrap-table.blade.php. Client-side code reads the browser-decoded countId, uses it as a selector, concatenates countId.substring(1) into an HTML string, and passes the string to jQuery .after(). A crafted name can therefore execute JavaScript when an authenticated user views the manufacturer detail page or supplier detail page, potentially exposing data or actions available to that session. This issue is fixed in version 8.6.2.","status":"published","published":"2026-08-19T18:22:21Z","modified":"2026-08-25T03:40:03Z","cvss":[{"version":"4.0","score":6.3,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:P/VC:L/VI:L/VA:N/SC:H/SI:H/SA:N","level":"medium"}],"updated_at":"2026-11-02T18:01:33.760029Z"}],"ghsa":[{"id":"GHSA-c8qc-wf67-342w","title":"Snipe-IT: Stored DOM XSS via table selected-count IDs","description":"### Impact\nThe table component derives data-selected-count-id from the component $name value. On manufacturer and supplier detail pages, stored manufacturer or supplier names are passed into affected table components as that name value. The client-side JavaScript later reads the browser-decoded data-selected-count-id, uses it as a selector, and concatenates countId.substring(1) directly into an HTML string passed to jQuery .after().\n\nAffected commit:\n\n`b224cc636c6780386e3f73f03d1171f52ab4c37a`\n\nExample payload for a manufacturer or supplier name:\n`x[foo=\"\u003e\u003csvg/onload=alert(1)\u003e\"]\u003e`\n\nThe issue appears to involve the following flow:\n\nStored supplier/manufacturer name\n-\u003e table component data-selected-count-id\n-\u003e browser decodes the attribute\n-\u003e JavaScript reads countId\n-\u003e countId is used as a selector\n-\u003e countId.substring(1) is concatenated into HTML\n-\u003e jQuery .after() inserts attacker-controlled markup\n-\u003e JavaScript executes in the victim's browser\n\nPotential impact includes arbitrary JavaScript execution in the browser of an authenticated Snipe-IT user who views the affected supplier or manufacturer detail page. If the victim has elevated privileges, this may allow access to data or actions available to that user's session.\n\n### Patches\nPatched in https://github.com/grokability/snipe-it/commit/d12ad3d53869443b96b663ba3ce2673ef343da71","status":"published","published":"2026-08-19T19:32:32Z","modified":"2026-08-19T19:32:32Z","cvss":[{"version":"4.0","score":6.3,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:P/VC:L/VI:L/VA:N/SC:H/SI:H/SA:N","level":"medium"}],"cwes":["CWE-79"],"updated_at":"2026-11-02T14:41:03.602876Z"}],"nvd":[{"id":"CVE-2026-61807","description":"Snipe-IT is an IT asset/license management system. Prior to 8.6.2, a stored manufacturer or supplier name passed as the table component $name becomes data-selected-count-id in resources/views/partials/bootstrap-table.blade.php. Client-side code reads the browser-decoded countId, uses it as a selector, concatenates countId.substring(1) into an HTML string, and passes the string to jQuery .after(). A crafted name can therefore execute JavaScript when an authenticated user views the manufacturer detail page or supplier detail page, potentially exposing data or actions available to that session. This issue is fixed in version 8.6.2.","status":"published","published":"2026-08-19T19:17:21.433Z","modified":"2026-09-30T12:49:27.233Z","cvss":[{"version":"4.0","score":6.3,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:P/VC:L/VI:L/VA:N/SC:H/SI:H/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X","level":"medium","assessor":"secondary"},{"version":"3.1","score":6.1,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N","level":"medium","assessor":"primary"}],"cwes":["CWE-79"],"updated_at":"2026-11-02T14:12:39.962615Z"}],"osv":[{"id":"CVE-2026-61807","title":"Snipe-IT: Stored DOM XSS via table selected-count IDs","description":"Snipe-IT is an IT asset/license management system. Prior to 8.6.2, a stored manufacturer or supplier name passed as the table component $name becomes data-selected-count-id in resources/views/partials/bootstrap-table.blade.php. Client-side code reads the browser-decoded countId, uses it as a selector, concatenates countId.substring(1) into an HTML string, and passes the string to jQuery .after(). A crafted name can therefore execute JavaScript when an authenticated user views the manufacturer detail page or supplier detail page, potentially exposing data or actions available to that session. This issue is fixed in version 8.6.2.","status":"published","published":"2026-08-19T18:22:21.559Z","modified":"2026-10-28T02:30:47.908925534Z","cvss":[{"version":"4.0","score":6.3,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:P/VC:L/VI:L/VA:N/SC:H/SI:H/SA:N","level":"medium"}],"cwes":["CWE-79"],"updated_at":"2026-11-02T15:45:12.933503Z"},{"id":"GHSA-c8qc-wf67-342w","title":"Snipe-IT: Stored DOM XSS via table selected-count IDs","description":"### Impact\nThe table component derives data-selected-count-id from the component $name value. On manufacturer and supplier detail pages, stored manufacturer or supplier names are passed into affected table components as that name value. The client-side JavaScript later reads the browser-decoded data-selected-count-id, uses it as a selector, and concatenates countId.substring(1) directly into an HTML string passed to jQuery .after().\n\nAffected commit:\n\n`b224cc636c6780386e3f73f03d1171f52ab4c37a`\n\nExample payload for a manufacturer or supplier name:\n`x[foo=\"\u003e\u003csvg/onload=alert(1)\u003e\"]\u003e`\n\nThe issue appears to involve the following flow:\n\nStored supplier/manufacturer name\n-\u003e table component data-selected-count-id\n-\u003e browser decodes the attribute\n-\u003e JavaScript reads countId\n-\u003e countId is used as a selector\n-\u003e countId.substring(1) is concatenated into HTML\n-\u003e jQuery .after() inserts attacker-controlled markup\n-\u003e JavaScript executes in the victim's browser\n\nPotential impact includes arbitrary JavaScript execution in the browser of an authenticated Snipe-IT user who views the affected supplier or manufacturer detail page. If the victim has elevated privileges, this may allow access to data or actions available to that user's session.\n\n### Patches\nPatched in https://github.com/grokability/snipe-it/commit/d12ad3d53869443b96b663ba3ce2673ef343da71","status":"published","published":"2026-08-19T19:32:32Z","modified":"2026-08-19T19:56:08.736458Z","cvss":[{"version":"4.0","score":6.3,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:P/VC:L/VI:L/VA:N/SC:H/SI:H/SA:N","level":"medium"}],"cwes":["CWE-79"],"updated_at":"2026-11-02T15:46:44.927642Z"}]}}
