FreeCAD is a free and open-source multiplatform 3D parametric modeler. Prior to 1.1.2, src/App/PropertyPythonObject.cpp in PropertyPythonObject::Restore() passes the attacker-controlled module attribute from serialized PropertyPythonObject XML directly to PyImportImportModule() while restoring a crafted FCStd document, which executes module-level Python code, and the legacy pickle branch also imports an attacker-controlled module and invokes its class constructor through PyObjectCallObject(). This issue is fixed in version 1.1.2.
{
"binaries": [
{
"binary_name": "freecad",
"binary_version": "0.18.4+dfsg2-1ubuntu4"
},
{
"binary_name": "freecad-common",
"binary_version": "0.18.4+dfsg2-1ubuntu4"
},
{
"binary_name": "freecad-python3",
"binary_version": "0.18.4+dfsg2-1ubuntu4"
},
{
"binary_name": "freecad-runtime",
"binary_version": "0.18.4+dfsg2-1ubuntu4"
},
{
"binary_name": "libfreecad-python3-0.18",
"binary_version": "0.18.4+dfsg2-1ubuntu4"
}
]
}
{
"binaries": [
{
"binary_name": "freecad",
"binary_version": "0.19.2+dfsg1-3ubuntu1"
},
{
"binary_name": "freecad-common",
"binary_version": "0.19.2+dfsg1-3ubuntu1"
},
{
"binary_name": "freecad-python3",
"binary_version": "0.19.2+dfsg1-3ubuntu1"
},
{
"binary_name": "libfreecad-python3-0.19",
"binary_version": "0.19.2+dfsg1-3ubuntu1"
}
]
}