OctoPrint: Stored XSS via saved connection parametersGHSA-p623-mxf7-qxjm
Fix: OctoPrint/OctoPrint@0594957GHSA-p623-mxf7-qxjm is a Cross-site Scripting (XSS) vulnerability in octoprint. A fix is available for octoprint — see the affected versions and patch details below.
EPSS Exploitation Probability
Probability of exploitation in the next 30 days, from FIRST.org EPSS.
Real-World Exposure
octoprintReal-time download stats are indexed for npm and PyPI packages. This vulnerability affects PyPI packages — download data is not available via public APIs for these ecosystems.
Description
Impact
OctoPrint versions 2.0.0rc1 up until version 2.0.0rc6 are susceptible to cross-site scripting via a specially crafted default port or baudrate setting on the bundled Serial Connector plugin, supplied via the API as new defaults during a connect request.
Patches
The vulnerability is patched in 2.0.0rc7.
Workaround
Check config.yaml for Javascript fragments in printerConnection.preferred.parameters.port or printerConnection.preferred.parameters.baudrate. If found, remove them. You can check who of your users had access to your instance since you flashed 2.0.0rc1 or above via auth.log.
Credits
This vulnerability was discovered and responsibly disclosed to OctoPrint by "mahn-don".
Timeline
2026-10-14: Report received 2026-10-14: Report acknowledged 2026-10-14: Report verified 2026-10-14: Fix ready for 2.0.0rc7 2026-10-20: CVE requested
Affected Packages
| Ecosystem | Package | Vulnerable range | Fix |
|---|---|---|---|
| 🐍PyPI | octoprint | ≥ 2.0.0rc1&&< 2.0.0rc7 | 2.0.0rc7pip install --upgrade 'octoprint==2.0.0rc7' |
Detection & mitigation playbook
Open-source dependencyDetect
Scan your dependency tree (package-lock.json, pnpm-lock.yaml, requirements.txt, go.sum, etc.) for octoprint, including transitive dependencies — a direct dependency you never call can still pull in a vulnerable version.
Fix
Update octoprint to 2.0.0rc7 or later, then make sure no transitive (indirect) dependency still pins the vulnerable range — O3 confirms GHSA-p623-mxf7-qxjm is resolved across your whole dependency graph.
Workarounds
Escape or sanitise the affected output on the server side rather than relying on client-side filtering, and add a Content-Security-Policy that blocks inline script execution so injected markup cannot run even if it reaches the page.
Frequently Asked Questions
Is GHSA-p623-mxf7-qxjm in your dependencies?
Find it across PyPI, including transitive dependencies.