Preface
OctoPrint is an open source 3D printer controller application that provides a web interface for connected printers. It displays printer status and key parameters, and supports scheduling print jobs and controlling the printer remotely.
Description
Numen Security Labs vulnerability researchers have discovered in OctoPrint version less than or equal to 1.9.2 that print job execution is configured with a specially crafted GCODE language script that would allow arbitrary code to be executed during the rendering of that script.
CVE ID
CVE-2023–41047
Affected Versions
< 1.9.3
Analysis
src/octoprint/server/api/settings.py#getSettings()
Counterparts
Passing the gcode to the loadScript
function of the s object
The s object comes from
src/octoprint/settings/__init__.py#loadScript()
Render using the template.render
function.
The template
object comes from the _get_script_template
function.
The vulnerability is triggered by an insecure rendering of gcode, where no security measures are taken in OctoPrint, leading to this issue.
Fixes
Version 1.9.3 adds a security sandbox
Timeline
- 2023–8–31 Report vulnerabilities to the OctoPrint team
- 2023–8–31 Received a response from the OctoPrint team confirming the existence of the vulnerability
- 2023–10–10 Fixing security vulnerabilities and releasing OctoPrint 1.9.3
- 2023–10–10 Public CVE
Internet Influence
More than 20,000 exposed OctoPrints were found through fofa, shodan.
Reference
https://github.com/OctoPrint/OctoPrint/releases/tag/1.9.3
https://github.com/OctoPrint/OctoPrint/security/advisories/GHSA-fwfg-vprh-97ph
https://github.com/OctoPrint/OctoPrint/commit/d0072cff894509c77e243d6562245ad3079e17db