{"id":"CVE-2025-53011","aliases":["EUVD-2025-23385","GHSA-7qw8-3vmf-gj32","PYSEC-2026-1607"],"status":"published","title":"MaterialX is Vulnerable to NULL Pointer Dereference due to Unchecked implGraphOutput","description":"MaterialX is an open standard for the exchange of rich material and look-development content across applications and renderers. In version 1.39.2, when parsing shader nodes in a MTLX file, the MaterialXCore code accesses a potentially null pointer, which can lead to crashes with maliciously crafted files. An attacker could intentionally crash a target program that uses MaterialX by sending a malicious MTLX file. This is fixed in version 1.39.3.","severity":{"version":"4.0","score":2,"vector":"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","level":"low","assessor":"cna","from":"cve"},"epss":{"day":"2026-11-11","score":0.00612,"percentile":0.49761,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-476"],"published":"2025-07-31T18:31:23Z","modified":"2026-10-28T10:59:48Z","fixes":[{"ecosystem":"PyPI","package":"materialx","fixed_in":["1.39.3"],"sources":["ghsa","osv"]}],"affected":[{"source":"ghsa","ecosystem":"PyPI","package":"materialx","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"1.39.2"},{"last_affected":"1.39.2"},{"fixed":"1.39.3"}]}],"versions":["1.39.2"]},{"source":"osv","ecosystem":"PyPI","package":"materialx","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"1.39.2"},{"fixed":"1.39.3"}]}],"versions":["1.39.2"]},{"source":"osv","ecosystem":"PyPI","package":"materialx","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"1.39.2"},{"fixed":"1.39.3"}]}],"versions":["1.39.2"]}],"products":[{"vendor":"academysoftwarefoundation","product":"materialx"},{"vendor":"linuxfoundation","product":"materialx"}],"references":[{"url":"https://github.com/AcademySoftwareFoundation/MaterialX/security/advisories/GHSA-7qw8-3vmf-gj32","tags":["x_refsource_CONFIRM","Exploit","Vendor Advisory","advisory","web"]},{"url":"https://github.com/AcademySoftwareFoundation/MaterialX/commit/7ac1c71de5187dc29793292b5a8dc6d784192ecf","tags":["x_refsource_MISC","Patch","fix","web"]},{"url":"https://github.com/AcademySoftwareFoundation/MaterialX/releases/tag/v1.39.3","tags":["x_refsource_MISC","Release Notes","web"]},{"url":"https://github.com/ShielderSec/poc/tree/main/CVE-2025-53011","tags":["x_refsource_MISC","Exploit","web"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2025-53011","tags":["advisory"]},{"url":"https://github.com/advisories/GHSA-7qw8-3vmf-gj32","tags":["advisory"]},{"url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2025/53xxx/CVE-2025-53011.json","tags":["advisory"]},{"url":"https://github.com/AcademySoftwareFoundation/MaterialX","tags":["package"]},{"url":"https://pypi.org/project/materialx","tags":["package"]}],"sources":{"cve":[{"id":"CVE-2025-53011","title":"MaterialX is Vulnerable to NULL Pointer Dereference due to Unchecked implGraphOutput","description":"MaterialX is an open standard for the exchange of rich material and look-development content across applications and renderers. In version 1.39.2, when parsing shader nodes in a MTLX file, the MaterialXCore code accesses a potentially null pointer, which can lead to crashes with maliciously crafted files. An attacker could intentionally crash a target program that uses MaterialX by sending a malicious MTLX file. This is fixed in version 1.39.3.","status":"published","published":"2025-08-01T17:58:47.388Z","modified":"2025-08-01T18:16:36.719Z","cvss":[{"version":"4.0","score":2,"vector":"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","level":"low","assessor":"cna"}],"cwes":["CWE-476"],"updated_at":"2026-11-02T14:32:49.180768Z"}],"euvd":[{"id":"EUVD-2025-23385","description":"MaterialX is an open standard for the exchange of rich material and look-development content across applications and renderers. In version 1.39.2, when parsing shader nodes in a MTLX file, the MaterialXCore code accesses a potentially null pointer, which can lead to crashes with maliciously crafted files. An attacker could intentionally crash a target program that uses MaterialX by sending a malicious MTLX file. This is fixed in version 1.39.3.","status":"published","published":"2025-08-01T17:58:47Z","modified":"2025-08-01T18:16:36Z","cvss":[{"version":"4.0","score":2,"vector":"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","level":"low"}],"updated_at":"2026-11-02T20:32:02.018241Z"}],"ghsa":[{"id":"GHSA-7qw8-3vmf-gj32","title":"MaterialX Null Pointer Dereference in MaterialXCore Shader Generation due to Unchecked implGraphOutput","description":"### 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 \u0026\u0026 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 \u0026\u0026 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.","status":"published","published":"2025-07-31T18:31:23Z","modified":"2025-08-01T18:36:12Z","cvss":[{"version":"4.0","score":2,"vector":"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","level":"low"}],"cwes":["CWE-476"],"updated_at":"2026-11-02T14:38:52.85141Z"}],"nvd":[{"id":"CVE-2025-53011","description":"MaterialX is an open standard for the exchange of rich material and look-development content across applications and renderers. In version 1.39.2, when parsing shader nodes in a MTLX file, the MaterialXCore code accesses a potentially null pointer, which can lead to crashes with maliciously crafted files. An attacker could intentionally crash a target program that uses MaterialX by sending a malicious MTLX file. This is fixed in version 1.39.3.","status":"published","published":"2025-08-01T18:15:54.827Z","modified":"2026-06-17T09:37:28.403Z","cvss":[{"version":"4.0","score":2,"vector":"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/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X","level":"low","assessor":"secondary"},{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"high","assessor":"primary"}],"cwes":["CWE-476"],"updated_at":"2026-11-02T14:11:21.71471Z"}],"osv":[{"id":"CVE-2025-53011","title":"MaterialX is Vulnerable to NULL Pointer Dereference due to Unchecked implGraphOutput","description":"MaterialX is an open standard for the exchange of rich material and look-development content across applications and renderers. In version 1.39.2, when parsing shader nodes in a MTLX file, the MaterialXCore code accesses a potentially null pointer, which can lead to crashes with maliciously crafted files. An attacker could intentionally crash a target program that uses MaterialX by sending a malicious MTLX file. This is fixed in version 1.39.3.","status":"published","published":"2025-08-01T17:58:47.388Z","modified":"2026-10-28T10:59:48.788695912Z","cvss":[{"version":"4.0","score":2,"vector":"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","level":"low"}],"cwes":["CWE-476"],"updated_at":"2026-11-02T15:44:50.45326Z"},{"id":"GHSA-7qw8-3vmf-gj32","title":"MaterialX Null Pointer Dereference in MaterialXCore Shader Generation due to Unchecked implGraphOutput","description":"### 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 \u0026\u0026 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 \u0026\u0026 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.","status":"published","published":"2025-07-31T18:31:23Z","modified":"2026-07-07T17:56:41.450792856Z","cvss":[{"version":"4.0","score":2,"vector":"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","level":"low"}],"cwes":["CWE-476"],"updated_at":"2026-11-02T15:46:41.349637Z"},{"id":"PYSEC-2026-1607","title":"MaterialX Null Pointer Dereference in MaterialXCore Shader Generation due to Unchecked implGraphOutput","description":"### 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 \u0026\u0026 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 \u0026\u0026 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.","status":"published","published":"2026-07-07T16:02:59.50015Z","modified":"2026-07-07T17:46:15.486563719Z","cvss":[{"version":"4.0","score":2,"vector":"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","level":"low"}],"updated_at":"2026-11-02T15:52:55.06457Z"}]}}
