Executive brief
Snipe-IT is an open-source asset management system used by organizations to track IT hardware, software licenses, and other inventory. A vulnerability allows authenticated attackers to upload malicious XML documents that execute arbitrary JavaScript in the browser when other authorized users view the files through the API. An attacker with file-upload permissions can steal sensitive asset data, perform unauthorized actions as victims, or compromise administrator accounts.
Technical details
The vulnerability is a stored cross-site scripting (XSS) flaw in the uploaded-files API controller. The root cause is that XML files are allowed as valid upload extensions and the API's show() method honors the ?inline=true parameter for all file types without applying the safe-inline allowlist check that the web controller uses. When an XML document containing an xml-stylesheet processing instruction references an attacker-controlled XSLT stylesheet (also uploaded via the API), the browser processes the stylesheet and executes injected JavaScript. Attack preconditions: authenticated account with file-upload permissions on a supported object, victim authentication, and victim interaction with the malicious XML file URL. The default CSP policy (script-src 'unsafe-inline' 'unsafe-eval') does not mitigate the injected script. The fix adds StorageHelper::allowSafeInline() validation to the API controller's response path.
Affected products
- Snipe-IT Snipe-IT up to v8.6.3
Timeline
- 2026-09-24: disclosed
- 2026-09-24: patched: Fixed in commit e929b31f0b183c5810bd2b833c1f6f643cbe5284