## https://sploitus.com/exploit?id=FBFF27F7-8ED1-5776-9326-EF2D07BF0586
# CVE-2026-56121 — Feast Unauthenticated RCE via gRPC Registry Deserialization
> The **Feast ` function of an `OnDemandFeatureView` **as soon as a spec arrives — before any
> authorization check**. The shipped config is `auth: no_auth`, so any client that
> can reach the registry port (default `6570`) gets **unauthenticated remote code
> execution** by sending one `ApplyFeatureView` request with a malicious pickle.
| | |
|---|---|
| **CVE** | CVE-2026-56121 |
| **Affected** | Feast `
```
Observed:
```
[*] sending ApplyFeatureView with a 124-byte malicious pickle in user_defined_function.body
[*] RPC status: UNKNOWN - Exception calling application: 0 is not a module, class, method, or function.
[+] dill.loads executed the payload server-side during from_proto.
```
The RPC ultimately errors (the unpickled object is no longer a callable UDF), but
the command **already ran** during `dill.loads()` — `cat /tmp/feast_pwned` returns
live `id`/`uname` output, proving execution rather than echo.
## Impact
Anyone able to reach the Feast registry gRPC port executes arbitrary OS commands as
the registry service account — full compromise of the feature store and the offline/
online stores, registries, and cloud credentials it is wired to. Feast registries are
frequently exposed inside ML platforms for SDK clients to call.
## Remediation
* Upgrade to **Feast ≥ 0.63.0**, which adds a `skip_udf` path so the registry server
no longer deserializes the UDF body of incoming specs.
* Defense in depth: enable `auth` (oidc/kubernetes) and never expose the registry
port to untrusted networks. Note that auth alone is **not** sufficient on `< 0.63.0`,
because the deserialization precedes the authorization check.
## Detection
Alert on `ApplyFeatureView` / `ApplyMaterialization` RPCs to the registry whose
`OnDemandFeatureView` `user_defined_function.body` is not produced by a trusted
client, and on registry processes spawning shells.
See [`ANALYSIS.md`](ANALYSIS.md) for the proto path, the deser-before-auth ordering,
and the patch.
---
* Author: **Caio Fabrício** — [github.com/BiiTts](https://github.com/BiiTts)
* Vulnerability credit belongs to the original reporter / vendor advisory; this repo
is an independent reproduction for defensive and educational use. For authorized
security testing only.