You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The f (face) element in an OBJ file refers to previously specified vertices by index. A bounds check is missing, allowing a face to be created with invalid vertex indices. This leads to an out of bounds read at TriangleMesh.cpp:59 due to points being a NULL pointer. As the offset is controlled by the input file, this can be leveraged to read a value from an arbitrary location in memory.
Impact
Information disclosure. This type of bug can be used to bypass automatic security mechanisms such as stack protectors and pointer encryption.
Proposed mitigation
It appears that the tinyobj parser has identified that the vertex indices are invalid, so all that's missing is a check before calling the TriangleMesh constructor at IO.cpp:146.
Summary
An out-of-bounds read in the OBJ file parsing leads to segmentation fault and potential information disclosure.
Vulnerable versions
Step to reproduce
oob_face.obj
):slic3r --info oob_face.obj
Screenshot
Example file
oob_face.zip
Cause
The
f
(face) element in an OBJ file refers to previously specified vertices by index. A bounds check is missing, allowing a face to be created with invalid vertex indices. This leads to an out of bounds read at TriangleMesh.cpp:59 due topoints
being a NULL pointer. As the offset is controlled by the input file, this can be leveraged to read a value from an arbitrary location in memory.Impact
Information disclosure. This type of bug can be used to bypass automatic security mechanisms such as stack protectors and pointer encryption.
Proposed mitigation
It appears that the
tinyobj
parser has identified that the vertex indices are invalid, so all that's missing is a check before calling theTriangleMesh
constructor at IO.cpp:146.System information
The text was updated successfully, but these errors were encountered: