CVE-2020-28595 in PrusaSlicerinfo

Summary

by MITRE • 02/11/2021

An out-of-bounds write vulnerability exists in the Obj.cpp load_obj() functionality of Prusa Research PrusaSlicer 2.2.0 and Master (commit 4b040b856). A specially crafted obj file can lead to code execution. An attacker can provide a malicious file to trigger this vulnerability.

Be aware that VulDB is the high quality source for vulnerability data.

Analysis

by VulDB Data Team • 02/27/2021

The vulnerability CVE-2020-28595 represents a critical out-of-bounds write flaw within the PrusaSlicer 2.2.0 software suite, specifically within the Obj.cpp file's load_obj() function. This issue arises from inadequate input validation when processing .obj file formats, which are commonly used for 3D model exchange in additive manufacturing workflows. The vulnerability exists in the master branch at commit 4b040b856, indicating it was present in the development version prior to the stable release, making it particularly concerning for users who may have been testing newer builds.

The technical implementation of this vulnerability stems from improper bounds checking during the parsing of wavefront .obj files, where the software fails to validate array indices against buffer limits when reading vertex data. This flaw allows an attacker to craft a malicious .obj file that contains malformed data structures, specifically designed to cause memory corruption during the loading process. When the load_obj() function attempts to write data beyond the allocated memory boundaries, it triggers an out-of-bounds write condition that can be exploited to execute arbitrary code on the victim's system. The vulnerability is classified as a CWE-787: Out-of-bounds Write, which directly maps to the broader category of memory safety issues that have historically led to remote code execution exploits.

The operational impact of this vulnerability extends beyond simple software corruption, as it provides attackers with a potential pathway for remote code execution within the context of 3D printing workflows. PrusaSlicer is widely used in both professional and personal environments, making this vulnerability particularly dangerous as it could be exploited through various attack vectors including email attachments, web downloads, or malicious file sharing. The implications are significant for 3D printing environments where users may unknowingly open malicious files, potentially compromising entire print operations or even allowing attackers to gain control of the host system. This vulnerability specifically targets the pre-printing workflow where users import 3D models, making it a critical point of attack in the 3D printing pipeline.

Mitigation strategies for CVE-2020-28595 should prioritize immediate software updates to versions that contain fixed implementations of the load_obj() function with proper bounds checking. Users should implement strict file validation procedures, including scanning all imported .obj files through antivirus solutions before use, and consider employing sandboxed environments for model import operations. Network-level protections should include implementing file type restrictions and content filtering to prevent malicious .obj files from reaching end-user systems. From an ATT&CK framework perspective, this vulnerability aligns with T1203: Exploitation for Client Execution, as it enables attackers to execute code through legitimate software applications. Organizations should also consider implementing principle of least privilege access controls for 3D printing systems and establishing secure file handling protocols that prevent unauthorized file imports, particularly in enterprise environments where 3D printing infrastructure may be integrated into broader manufacturing or design workflows.

Reservation

11/13/2020

Disclosure

02/11/2021

Moderation

accepted

CPE

ready

EPSS

0.01467

KEV

no

Activities

very low

Sources

Do you want to use VulDB in your project?

Use the official API to access entries easily!