{"id":"PYSEC-2026-1607","summary":"MaterialX Null Pointer Dereference in MaterialXCore Shader Generation due to Unchecked implGraphOutput","details":"### Summary\n\nWhen parsing shader nodes in a MTLX file, the MaterialXCore code accesses a potentially null pointer, which can lead to crashes with maliciously crafted files.\n\n### Details\n\nIn `source/MaterialXCore/Material.cpp`, the following code extracts the output nodes for a given implementation graph:\n\n```cpp\n   InterfaceElementPtr impl = materialNodeDef-\u003egetImplementation();\n            if (impl && impl-\u003eisA\u003cNodeGraph\u003e())\n            {\n                NodeGraphPtr implGraph = impl-\u003easA\u003cNodeGraph\u003e();\n                for (OutputPtr defOutput : materialNodeDef-\u003egetOutputs())\n                {\n                    if (defOutput-\u003egetType() == MATERIAL_TYPE_STRING)\n                    {\n                        OutputPtr implGraphOutput = implGraph-\u003egetOutput(defOutput-\u003egetName());\n                        for (GraphIterator it = implGraphOutput-\u003etraverseGraph().begin(); it != GraphIterator::end(); ++it)\n                        {\n                            ElementPtr upstreamElem = it.getUpstreamElement();\n                            if (!upstreamElem)\n                            {\n                                it.setPruneSubgraph(true);\n                                continue;\n                            }\n                            NodePtr upstreamNode = upstreamElem-\u003easA\u003cNode\u003e();\n                            if (upstreamNode && upstream\n```\n\nHowever, when defining the `implGraphOutput` variable by getting the output node, the code doesn't check whether its value is null before accessing its iterator `traverseGraph()`. This leads to a potential null pointer dereference.\n\n### PoC\n\nPlease download `nullptr_implgraph.mtlx` from the following link:\n\nhttps://github.com/ShielderSec/poc/tree/main/CVE-2025-53011\n\n`build/bin/MaterialXView --material nullptr_implgraph.mtlx`\n\n### Impact\n\nAn attacker could intentionally crash a target program that uses MaterialX by sending a malicious MTLX file.","aliases":["CVE-2025-53011","GHSA-7qw8-3vmf-gj32"],"modified":"2026-07-07T17:46:15.486563719Z","published":"2026-07-07T16:02:59.500150Z","references":[{"type":"WEB","url":"https://github.com/AcademySoftwareFoundation/MaterialX/security/advisories/GHSA-7qw8-3vmf-gj32"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2025-53011"},{"type":"WEB","url":"https://github.com/AcademySoftwareFoundation/MaterialX/commit/7ac1c71de5187dc29793292b5a8dc6d784192ecf"},{"type":"PACKAGE","url":"https://github.com/AcademySoftwareFoundation/MaterialX"},{"type":"WEB","url":"https://github.com/AcademySoftwareFoundation/MaterialX/releases/tag/v1.39.3"},{"type":"WEB","url":"https://github.com/ShielderSec/poc/tree/main/CVE-2025-53011"},{"type":"PACKAGE","url":"https://pypi.org/project/materialx"},{"type":"ADVISORY","url":"https://github.com/advisories/GHSA-7qw8-3vmf-gj32"}],"affected":[{"package":{"name":"materialx","ecosystem":"PyPI","purl":"pkg:pypi/materialx"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"1.39.2"},{"fixed":"1.39.3"}]}],"versions":["1.39.2"],"database_specific":{"source":"https://github.com/pypa/advisory-database/blob/main/vulns/materialx/PYSEC-2026-1607.yaml"}}],"schema_version":"1.7.5","severity":[{"type":"CVSS_V4","score":"CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N/E:P"}]}