{"id":"CVE-2026-56121","aliases":["EUVD-2026-38801","GHSA-q63x-9pfm-mjx4"],"status":"published","title":"Feast \u003c 0.63.0 Unauthenticated RCE via ApplyFeatureView gRPC Deserialization","description":"Feast before 0.63.0 contains an unsafe deserialization vulnerability that allows unauthenticated or unauthorized attackers to achieve remote code execution by sending a crafted gRPC request to the registry server. The user_defined_function.body field of an OnDemandFeatureView spec is decoded from base64 and passed to dill.loads() before any authorization check is performed, enabling attackers to embed a malicious serialized Python object with an arbitrary __reduce__ method to execute OS commands as the feast service account.","severity":{"version":"4.0","score":9.3,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N","level":"critical","assessor":"cna","from":"cve"},"epss":{"day":"2026-11-12","score":0.01406,"percentile":0.7299,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":true,"fix_available":true},"cwes":["CWE-502"],"published":"2026-06-24T14:49:11Z","modified":"2026-11-03T21:31:24Z","exploits":[{"source":"pocgithub","id":"BiiTts/CVE-2026-56121-Feast-Unauth-RCE","title":"BiiTts/CVE-2026-56121-Feast-Unauth-RCE","date":"2026-06-30","url":"https://github.com/BiiTts/CVE-2026-56121-Feast-Unauth-RCE"},{"source":"pocgithub","id":"0xdak/CVE-2026-56121_exploit","title":"0xdak/CVE-2026-56121_exploit","date":"2026-07-23","url":"https://github.com/0xdak/CVE-2026-56121_exploit"},{"source":"pocgithub","id":"joaovicdev/EXPLOIT-CVE-2026-56121","title":"joaovicdev/EXPLOIT-CVE-2026-56121","date":"2026-08-30","url":"https://github.com/joaovicdev/EXPLOIT-CVE-2026-56121"}],"fixes":[{"ecosystem":"PyPI","package":"feast","fixed_in":["0.63.0"],"sources":["ghsa","osv"]}],"affected":[{"source":"ghsa","ecosystem":"PyPI","package":"feast","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0.63.0"}]}]},{"source":"osv","ecosystem":"PyPI","package":"feast","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0.63.0"}]}],"versions":["0.1.0","0.1.0.post0","0.1.2","0.1.2.post0","0.1.2.post1","0.10.0","0.10.1","0.10.1rc1","0.10.1rc3","0.10.2","0.10.3","0.10.4","0.10.5","0.10.6","0.10.7","0.10.8","0.11.0","0.12.0","0.12.1","0.13.0","0.14.0","0.14.1","0.15.0","0.15.1","0.16.0","0.16.1","0.17.0","0.18.0","0.18.1","0.19.0","0.19.1","0.19.2","0.19.3","0.19.4","0.20.0","0.20.1","0.20.2","0.21.0","0.21.1","0.21.2","0.21.3","0.22.0","0.22.1","0.22.2","0.22.3","0.22.4","0.23.0","0.23.1","0.23.2","0.24.0","0.24.1","0.25.0","0.25.1","0.25.2","0.26.0","0.27.0","0.27.1","0.28.0","0.29.0","0.3.0","0.3.2","0.3.3","0.3.3.post0","0.3.4","0.3.5","0.3.6","0.3.7","0.30.2","0.31.0","0.31.1","0.33.1","0.34.0","0.34.1","0.35.0","0.36.0","0.37.1","0.38.0","0.39.0","0.39.1","0.4.0","0.4.1","0.4.1.post0","0.4.2","0.4.3","0.4.4","0.4.5","0.4.6","0.4.7","0.40.0","0.40.1","0.41.3","0.42.0","0.43.0","0.44.0","0.45.0","0.46.0","0.47.0","0.48.0","0.48.1","0.49.0","0.5.0","0.5.0.post0","0.5.0rc0","0.5.1","0.50.0","0.51.0","0.52.0","0.53.0","0.54.0","0.54.1","0.55.0","0.56.0","0.57.0","0.58.0","0.59.0","0.6.0","0.6.1","0.6.2","0.60.0","0.61.0","0.62.0","0.7.0","0.7.0rc1","0.7.0rc2","0.7.0rc3","0.7.1","0.7.2","0.8.0","0.8.0rc3","0.8.1","0.8.2","0.8.3","0.8.4","0.9.0","0.9.0rc1","0.9.0rc2","0.9.1","0.9.2","0.9.3","0.9.4","0.9.5","0.9.5.1","0.9.5.2","0.9.6","0.9.7","0.9.8","0.9.9"]}],"products":[{"vendor":"feast-dev","product":"feast"},{"vendor":"red hat","product":"red hat openshift ai (rhoai)"},{"vendor":"red hat","product":"red hat openshift ai 3.4"}],"references":[{"url":"https://huntr.com/bounties/d64b8111-180b-46ba-afa3-c877fda2ede6","tags":["technical-description","exploit","evidence","web"]},{"url":"https://github.com/feast-dev/feast/releases/tag/v0.63.0","tags":["release-notes","advisory","web"]},{"url":"https://github.com/feast-dev/feast/commit/835cda8e2c1359f1f496ad72701dbd6a73bdb25a","tags":["patch","fix","web"]},{"url":"https://www.vulncheck.com/advisories/feast-unauthenticated-rce-via-applyfeatureview-grpc-deserialization","tags":["third-party-advisory","advisory","web"]},{"url":"https://access.redhat.com/security/cve/CVE-2026-56121","tags":["vdb-entry","x_refsource_REDHAT","advisory","web"]},{"url":"https://bugzilla.redhat.com/show_bug.cgi?id=2492229","tags":["issue-tracking","x_refsource_REDHAT","report","web"]},{"url":"https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-56121.json","tags":["x_sadp-csaf-vex","web"]},{"url":"https://access.redhat.com/errata/RHSA-2026:60520","tags":["vendor-advisory","x_refsource_REDHAT","advisory","web"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-56121","tags":["advisory"]},{"url":"https://github.com/advisories/GHSA-q63x-9pfm-mjx4"},{"url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/56xxx/CVE-2026-56121.json","tags":["advisory"]},{"url":"https://github.com/feast-dev/feast","tags":["package"]}],"sources":{"cve":[{"id":"CVE-2026-56121","title":"Feast \u003c 0.63.0 Unauthenticated RCE via ApplyFeatureView gRPC Deserialization","description":"Feast before 0.63.0 contains an unsafe deserialization vulnerability that allows unauthenticated or unauthorized attackers to achieve remote code execution by sending a crafted gRPC request to the registry server. The user_defined_function.body field of an OnDemandFeatureView spec is decoded from base64 and passed to dill.loads() before any authorization check is performed, enabling attackers to embed a malicious serialized Python object with an arbitrary __reduce__ method to execute OS commands as the feast service account.","status":"published","published":"2026-06-24T14:49:11.49Z","modified":"2026-11-08T14:05:33.304Z","cvss":[{"version":"4.0","score":9.3,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N","level":"critical","assessor":"cna"},{"version":"3.1","score":9.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical","assessor":"cna"},{"version":"3.1","score":8.8,"vector":"CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"high","assessor":"adp"}],"cwes":["CWE-502","CWE-502"],"updated_at":"2026-11-08T15:43:33.322657Z"}],"euvd":[{"id":"EUVD-2026-38801","description":"Feast before 0.63.0 contains an unsafe deserialization vulnerability that allows unauthenticated or unauthorized attackers to achieve remote code execution by sending a crafted gRPC request to the registry server. The user_defined_function.body field of an OnDemandFeatureView spec is decoded from base64 and passed to dill.loads() before any authorization check is performed, enabling attackers to embed a malicious serialized Python object with an arbitrary __reduce__ method to execute OS commands as the feast service account.","status":"published","published":"2026-06-24T14:49:11Z","modified":"2026-11-08T14:05:33Z","cvss":[{"version":"4.0","score":9.3,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N","level":"critical"}],"updated_at":"2026-11-08T15:13:08.252361Z"}],"ghsa":[{"id":"GHSA-q63x-9pfm-mjx4","title":"Feast vulnerable to unsafe deserialization RCE in registry server via UDF proto","description":"Feast before 0.63.0 contains an unsafe deserialization vulnerability that allows unauthenticated or unauthorized attackers to achieve remote code execution by sending a crafted gRPC request to the registry server. The user_defined_function.body field of an OnDemandFeatureView spec is decoded from base64 and passed to dill.loads() before any authorization check is performed, enabling attackers to embed a malicious serialized Python object with an arbitrary __reduce__ method to execute OS commands as the feast service account.","status":"published","published":"2026-06-24T18:32:40Z","modified":"2026-11-03T21:20:57Z","cvss":[{"version":"4.0","score":9.3,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N","level":"critical"},{"version":"3.1","score":9.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical"}],"cwes":["CWE-502"],"updated_at":"2026-11-03T21:34:02.78186Z"}],"nvd":[{"id":"CVE-2026-56121","description":"Feast before 0.63.0 contains an unsafe deserialization vulnerability that allows unauthenticated or unauthorized attackers to achieve remote code execution by sending a crafted gRPC request to the registry server. The user_defined_function.body field of an OnDemandFeatureView spec is decoded from base64 and passed to dill.loads() before any authorization check is performed, enabling attackers to embed a malicious serialized Python object with an arbitrary __reduce__ method to execute OS commands as the feast service account.","status":"published","published":"2026-06-24T16:16:33.193Z","modified":"2026-10-25T22:10:00.15Z","cvss":[{"version":"4.0","score":9.3,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:X/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":"critical","assessor":"secondary"},{"version":"3.1","score":9.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical","assessor":"secondary"},{"version":"3.1","score":8.8,"vector":"CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"high","assessor":"secondary"}],"cwes":["CWE-502"],"updated_at":"2026-11-02T14:12:25.288279Z"}],"osv":[{"id":"CVE-2026-56121","title":"Feast \u003c 0.63.0 Unauthenticated RCE via ApplyFeatureView gRPC Deserialization","description":"Feast before 0.63.0 contains an unsafe deserialization vulnerability that allows unauthenticated or unauthorized attackers to achieve remote code execution by sending a crafted gRPC request to the registry server. The user_defined_function.body field of an OnDemandFeatureView spec is decoded from base64 and passed to dill.loads() before any authorization check is performed, enabling attackers to embed a malicious serialized Python object with an arbitrary __reduce__ method to execute OS commands as the feast service account.","status":"published","published":"2026-06-24T14:49:11.49Z","modified":"2026-11-09T02:47:39.930105943Z","cvss":[{"version":"4.0","score":9.3,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N","level":"critical"}],"cwes":["CWE-502"],"updated_at":"2026-11-09T03:15:52.404586Z"},{"id":"GHSA-q63x-9pfm-mjx4","title":"Feast vulnerable to unsafe deserialization RCE in registry server via UDF proto","description":"Feast before 0.63.0 contains an unsafe deserialization vulnerability that allows unauthenticated or unauthorized attackers to achieve remote code execution by sending a crafted gRPC request to the registry server. The user_defined_function.body field of an OnDemandFeatureView spec is decoded from base64 and passed to dill.loads() before any authorization check is performed, enabling attackers to embed a malicious serialized Python object with an arbitrary __reduce__ method to execute OS commands as the feast service account.","status":"published","published":"2026-06-24T18:32:40Z","modified":"2026-11-03T21:31:24.69721315Z","cvss":[{"version":"3.1","score":9.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical"},{"version":"4.0","score":9.3,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N","level":"critical"}],"cwes":["CWE-502"],"updated_at":"2026-11-03T23:00:52.054748Z"}]}}
