{"id":"CVE-2025-53010","aliases":["EUVD-2025-23384","GHSA-3jhf-gxhr-q4cx","PYSEC-2026-1606"],"status":"published","title":"MaterialX's unchecked nodeGraph-\u003egetOutput return is vulnerable to NULL Pointer Dereference","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 OpenEXR 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-09","score":0.0055,"percentile":0.46287,"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:11Z","modified":"2026-10-28T11:02:10Z","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-3jhf-gxhr-q4cx","tags":["x_refsource_CONFIRM","Exploit","Vendor Advisory","advisory","web"]},{"url":"https://github.com/AcademySoftwareFoundation/MaterialX/commit/e13344ba13326869d7820b444705f24d56fab73d","tags":["x_refsource_MISC","Patch","fix","web"]},{"url":"https://github.com/ShielderSec/poc/tree/main/CVE-2025-53010","tags":["x_refsource_MISC","Exploit","web"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2025-53010","tags":["advisory"]},{"url":"https://github.com/advisories/GHSA-3jhf-gxhr-q4cx","tags":["advisory"]},{"url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2025/53xxx/CVE-2025-53010.json","tags":["advisory"]},{"url":"https://github.com/AcademySoftwareFoundation/MaterialX","tags":["package"]},{"url":"https://pypi.org/project/materialx","tags":["package"]}],"sources":{"cve":[{"id":"CVE-2025-53010","title":"MaterialX's unchecked nodeGraph-\u003egetOutput return is vulnerable to NULL Pointer Dereference","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 OpenEXR by sending a malicious MTLX file. This is fixed in version 1.39.3.","status":"published","published":"2025-08-01T17:58:28.994Z","modified":"2025-08-01T18:19:33.225Z","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-23384","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 OpenEXR by sending a malicious MTLX file. This is fixed in version 1.39.3.","status":"published","published":"2025-08-01T17:58:28Z","modified":"2025-08-01T18:19:33Z","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-3jhf-gxhr-q4cx","title":"MaterialX Null Pointer Dereference in getShaderNodes due to Unchecked nodeGraph-\u003egetOutput return","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 `src/MaterialXCore/Material.cpp`, in function `getShaderNodes`, the following code fetches the output nodes for a given `nodegraph` input node:\n\n```cpp\n// SNIP...\n        else if (input-\u003ehasNodeGraphString())\n        {\n            // Check upstream nodegraph connected to the input.\n            // If no explicit output name given then scan all outputs on the nodegraph.\n            ElementPtr parent = materialNode-\u003egetParent();\n            NodeGraphPtr nodeGraph = parent-\u003egetChildOfType\u003cNodeGraph\u003e(input-\u003egetNodeGraphString());\n            if (!nodeGraph)\n            {\n                continue;\n            }\n            vector\u003cOutputPtr\u003e outputs;\n            if (input-\u003ehasOutputString())\n            {\n                outputs.push_back(nodeGraph-\u003egetOutput(input-\u003egetOutputString())); // \u003c--- null ptr is returned\n            }\n            else\n            {\n                outputs = nodeGraph-\u003egetOutputs();\n            }\n            for (OutputPtr output : outputs)\n            {\n                NodePtr upstreamNode = output-\u003egetConnectedNode(); // \u003c--- CRASHES HERE\n                if (upstreamNode \u0026\u0026 !shaderNodeSet.count(upstreamNode))\n                {\n                    if (!target.empty() \u0026\u0026 !upstreamNode-\u003egetNodeDef(target))\n                    {\n                        continue;\n                    }\n                    shaderNodeVec.push_back(upstreamNode);\n                    shaderNodeSet.insert(upstreamNode);\n                }\n            }\n        }\n    }\n// SNIP...\n```\n\nThe issues arise because the `nodeGraph-\u003egetOutput(input-\u003egetOutputString())` call can return a null pointer, therefore when trying to call `output-\u003egetConnectedNode()`, this results in a crash    .\n\n\n### PoC\n\nPlease download `nullptr_getshadernodes.mltx` from the following link:\n\nhttps://github.com/ShielderSec/poc/tree/main/CVE-2025-53010\n\n`build/bin/MaterialXView --material nullptr_getshadernodes.mtlx`\n\n\n### Impact\n\nAn attacker could intentionally crash a target program that uses OpenEXR by sending a malicious MTLX file.","status":"published","published":"2025-07-31T18:31:11Z","modified":"2025-08-01T18:36:04Z","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-53010","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 OpenEXR by sending a malicious MTLX file. This is fixed in version 1.39.3.","status":"published","published":"2025-08-01T18:15:54.63Z","modified":"2026-06-17T09:37:28.28Z","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-53010","title":"MaterialX's unchecked nodeGraph-\u003egetOutput return is vulnerable to NULL Pointer Dereference","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 OpenEXR by sending a malicious MTLX file. This is fixed in version 1.39.3.","status":"published","published":"2025-08-01T17:58:28.994Z","modified":"2026-10-28T11:02:10.551266916Z","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-3jhf-gxhr-q4cx","title":"MaterialX Null Pointer Dereference in getShaderNodes due to Unchecked nodeGraph-\u003egetOutput return","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 `src/MaterialXCore/Material.cpp`, in function `getShaderNodes`, the following code fetches the output nodes for a given `nodegraph` input node:\n\n```cpp\n// SNIP...\n        else if (input-\u003ehasNodeGraphString())\n        {\n            // Check upstream nodegraph connected to the input.\n            // If no explicit output name given then scan all outputs on the nodegraph.\n            ElementPtr parent = materialNode-\u003egetParent();\n            NodeGraphPtr nodeGraph = parent-\u003egetChildOfType\u003cNodeGraph\u003e(input-\u003egetNodeGraphString());\n            if (!nodeGraph)\n            {\n                continue;\n            }\n            vector\u003cOutputPtr\u003e outputs;\n            if (input-\u003ehasOutputString())\n            {\n                outputs.push_back(nodeGraph-\u003egetOutput(input-\u003egetOutputString())); // \u003c--- null ptr is returned\n            }\n            else\n            {\n                outputs = nodeGraph-\u003egetOutputs();\n            }\n            for (OutputPtr output : outputs)\n            {\n                NodePtr upstreamNode = output-\u003egetConnectedNode(); // \u003c--- CRASHES HERE\n                if (upstreamNode \u0026\u0026 !shaderNodeSet.count(upstreamNode))\n                {\n                    if (!target.empty() \u0026\u0026 !upstreamNode-\u003egetNodeDef(target))\n                    {\n                        continue;\n                    }\n                    shaderNodeVec.push_back(upstreamNode);\n                    shaderNodeSet.insert(upstreamNode);\n                }\n            }\n        }\n    }\n// SNIP...\n```\n\nThe issues arise because the `nodeGraph-\u003egetOutput(input-\u003egetOutputString())` call can return a null pointer, therefore when trying to call `output-\u003egetConnectedNode()`, this results in a crash    .\n\n\n### PoC\n\nPlease download `nullptr_getshadernodes.mltx` from the following link:\n\nhttps://github.com/ShielderSec/poc/tree/main/CVE-2025-53010\n\n`build/bin/MaterialXView --material nullptr_getshadernodes.mtlx`\n\n\n### Impact\n\nAn attacker could intentionally crash a target program that uses OpenEXR by sending a malicious MTLX file.","status":"published","published":"2025-07-31T18:31:11Z","modified":"2026-07-07T17:56:48.902834224Z","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:35.747385Z"},{"id":"PYSEC-2026-1606","title":"MaterialX Null Pointer Dereference in getShaderNodes due to Unchecked nodeGraph-\u003egetOutput return","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 `src/MaterialXCore/Material.cpp`, in function `getShaderNodes`, the following code fetches the output nodes for a given `nodegraph` input node:\n\n```cpp\n// SNIP...\n        else if (input-\u003ehasNodeGraphString())\n        {\n            // Check upstream nodegraph connected to the input.\n            // If no explicit output name given then scan all outputs on the nodegraph.\n            ElementPtr parent = materialNode-\u003egetParent();\n            NodeGraphPtr nodeGraph = parent-\u003egetChildOfType\u003cNodeGraph\u003e(input-\u003egetNodeGraphString());\n            if (!nodeGraph)\n            {\n                continue;\n            }\n            vector\u003cOutputPtr\u003e outputs;\n            if (input-\u003ehasOutputString())\n            {\n                outputs.push_back(nodeGraph-\u003egetOutput(input-\u003egetOutputString())); // \u003c--- null ptr is returned\n            }\n            else\n            {\n                outputs = nodeGraph-\u003egetOutputs();\n            }\n            for (OutputPtr output : outputs)\n            {\n                NodePtr upstreamNode = output-\u003egetConnectedNode(); // \u003c--- CRASHES HERE\n                if (upstreamNode \u0026\u0026 !shaderNodeSet.count(upstreamNode))\n                {\n                    if (!target.empty() \u0026\u0026 !upstreamNode-\u003egetNodeDef(target))\n                    {\n                        continue;\n                    }\n                    shaderNodeVec.push_back(upstreamNode);\n                    shaderNodeSet.insert(upstreamNode);\n                }\n            }\n        }\n    }\n// SNIP...\n```\n\nThe issues arise because the `nodeGraph-\u003egetOutput(input-\u003egetOutputString())` call can return a null pointer, therefore when trying to call `output-\u003egetConnectedNode()`, this results in a crash    .\n\n\n### PoC\n\nPlease download `nullptr_getshadernodes.mltx` from the following link:\n\nhttps://github.com/ShielderSec/poc/tree/main/CVE-2025-53010\n\n`build/bin/MaterialXView --material nullptr_getshadernodes.mtlx`\n\n\n### Impact\n\nAn attacker could intentionally crash a target program that uses OpenEXR by sending a malicious MTLX file.","status":"published","published":"2026-07-07T16:02:59.437613Z","modified":"2026-07-07T17:46:15.445230359Z","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"}]}}
