### Impact The `to_absolute_normalized_path` function (security.lua:28-43) does not collapse redundant path separators (// → /). On Linux, `//etc/passwd` is equivalent to `/etc/passwd` (POSIX path semantics), but `is_critical_path` fails to match the double-slash variant because `//etc/passwd` does not start with `/etc/`. This allows Lua code submitted as an `EnvoyExtensionPolicy` to read arbitrary files from the gateway controller pod's filesystem during Strict validation (the default), including: * `/etc/passwd` * Kubernetes SA tokens via `//var/run/secrets/kubernetes.io/serviceaccount/token` * TLS certificates via `//certs/...` * Process environment via `//proc/self/environ` These credentials can be used to read sensitive information from the K8s API Server or from the Gateway XDS server. ### Patches This has been patched in versions >= v1.7.4 and v1.8.1 - Collapse redundant path separators (`//` to `/`) so double-slash variants like `//etc/passwd` and `//var/run/secrets/...` are matched by the critical-path check. - Rewrite the traversal check to reject any `.` or `..` segment in any position and across both separator styles (catches `/etc/./passwd`, `./etc/passwd`, `/etc/.`). ### Workarounds Please refer to the `Warning` section in [Lua docs](https://gateway.envoyproxy.io/v1.8/tasks/extensibility/lua/) for measures to reduce risk. ### Credits Envoy Gateway thanks @dashingDragon and @Donjon-Cerberus for reporting this issue.
### Impact The `to_absolute_normalized_path` function (security.lua:28-43) does not collapse redundant path separators (// → /). On Linux, `//etc/passwd` is equivalent to `/etc/passwd` (POSIX path semantics), but `is_critical_path` fails to match the double-slash variant because `//etc/passwd` does not start with `/etc/`. This allows Lua code submitted as an `EnvoyExtensionPolicy` to read arbitrary files from the gateway controller pod's filesystem during Strict validation (the default), including: * `/etc/passwd` * Kubernetes SA tokens via `//var/run/secrets/kubernetes.io/serviceaccount/token` * TLS certificates via `//certs/...` * Process environment via `//proc/self/environ` These credentials can be used to read sensitive information from the K8s API Server or from the Gateway XDS server. ### Patches This has been patched in versions >= v1.7.4 and v1.8.1 - Collapse redundant path separators (`//` to `/`) so double-slash variants like `//etc/passwd` and `//var/run/secrets/...` are matched by the critical-path check. - Rewrite the traversal check to reject any `.` or `..` segment in any position and across both separator styles (catches `/etc/./passwd`, `./etc/passwd`, `/etc/.`). ### Workarounds Please refer to the `Warning` section in [Lua docs](https://gateway.envoyproxy.io/v1.8/tasks/extensibility/lua/) for measures to reduce risk. ### Credits Envoy Gateway thanks @dashingDragon and @Donjon-Cerberus for reporting this issue.
### Impact The `to_absolute_normalized_path` function (security.lua:28-43) does not collapse redundant path separators (// → /). On Linux, `//etc/passwd` is equivalent to `/etc/passwd` (POSIX path semantics), but `is_critical_path` fails to match the double-slash variant because `//etc/passwd` does not start with `/etc/`. This allows Lua code submitted as an `EnvoyExtensionPolicy` to read arbitrary files from the gateway controller pod's filesystem during Strict validation (the default), including: * `/etc/passwd` * Kubernetes SA tokens via `//var/run/secrets/kubernetes.io/serviceaccount/token` * TLS certificates via `//certs/...` * Process environment via `//proc/self/environ` These credentials can be used to read sensitive information from the K8s API Server or from the Gateway XDS server. ### Patches This has been patched in versions >= v1.7.4 and v1.8.1 - Collapse redundant path separators (`//` to `/`) so double-slash variants like `//etc/passwd` and `//var/run/secrets/...` are matched by the critical-path check. - Rewrite the traversal check to reject any `.` or `..` segment in any position and across both separator styles (catches `/etc/./passwd`, `./etc/passwd`, `/etc/.`). ### Workarounds Please refer to the `Warning` section in [Lua docs](https://gateway.envoyproxy.io/v1.8/tasks/extensibility/lua/) for measures to reduce risk. ### Credits Envoy Gateway thanks @dashingDragon and @Donjon-Cerberus for reporting this issue.
### Impact The `to_absolute_normalized_path` function (security.lua:28-43) does not collapse redundant path separators (// → /). On Linux, `//etc/passwd` is equivalent to `/etc/passwd` (POSIX path semantics), but `is_critical_path` fails to match the double-slash variant because `//etc/passwd` does not start with `/etc/`. This allows Lua code submitted as an `EnvoyExtensionPolicy` to read arbitrary files from the gateway controller pod's filesystem during Strict validation (the default), including: * `/etc/passwd` * Kubernetes SA tokens via `//var/run/secrets/kubernetes.io/serviceaccount/token` * TLS certificates via `//certs/...` * Process environment via `//proc/self/environ` These credentials can be used to read sensitive information from the K8s API Server or from the Gateway XDS server. ### Patches This has been patched in versions >= v1.7.4 and v1.8.1 - Collapse redundant path separators (`//` to `/`) so double-slash variants like `//etc/passwd` and `//var/run/secrets/...` are matched by the critical-path check. - Rewrite the traversal check to reject any `.` or `..` segment in any position and across both separator styles (catches `/etc/./passwd`, `./etc/passwd`, `/etc/.`). ### Workarounds Please refer to the `Warning` section in [Lua docs](https://gateway.envoyproxy.io/v1.8/tasks/extensibility/lua/) for measures to reduce risk. ### Credits Envoy Gateway thanks @dashingDragon and @Donjon-Cerberus for reporting this issue.
Update github.com/envoyproxy/gateway to 1.8.1; github.com/envoyproxy/gateway to 1.7.4 if you use the affected versions. Test the change in a non-production environment first.
Local check
hol-guard supply-chain scanEnvoy Gateway: Authentication Bypass via Improper Input Validation in EnvoyExtensionPolicy Lua Allows Secret Disclosure affects github.com/envoyproxy/gateway (go), github.com/envoyproxy/gateway (go). Severity is critical. ### Impact The `to_absolute_normalized_path` function (security.lua:28-43) does not collapse redundant path separators (// → /). On Linux, `//etc/passwd` is equivalent to `/etc/passwd` (POSIX path semantics), but `is_critical_path` fails to match the double-slash variant because `//etc/passwd` does not start with `/etc/`. This allows Lua code submitted as an `EnvoyExtensionPolicy` to read arbitrary files from the gateway controller pod's filesystem during Strict validation (the default), including: * `/etc/passwd` * Kubernetes SA tokens via `//var/run/secrets/kubernetes.io/serviceaccount/token` * TLS certificates via `//certs/...` * Process environment via `//proc/self/environ` These credentials can be used to read sensitive information from the K8s API Server or from the Gateway XDS server. ### Patches This has been patched in versions >= v1.7.4 and v1.8.1 - Collapse redundant path separators (`//` to `/`) so double-slash variants like `//etc/passwd` and `//var/run/secrets/...` are matched by the critical-path check. - Rewrite the traversal check to reject any `.` or `..` segment in any position and across both separator styles (catches `/etc/./passwd`, `./etc/passwd`, `/etc/.`). ### Workarounds Please refer to the `Warning` section in [Lua docs](https://gateway.envoyproxy.io/v1.8/tasks/extensibility/lua/) for measures to reduce risk. ### Credits Envoy Gateway thanks @dashingDragon and @Donjon-Cerberus for reporting this issue.
AI coding agents often install or upgrade packages automatically in go. A critical vulnerability in a dependency can be pulled into a project through a normal install or update without a human reviewing the change, expanding the blast radius from a single package to every agent workspace that depends on it.
| Package | Affected range | Fixed version |
|---|---|---|
| github.com/envoyproxy/gatewaygo | >=1.8.0-rc.0,<1.8.1 | 1.8.1 |
| github.com/envoyproxy/gatewaygo | <1.7.4 | 1.7.4 |
Fixed versions are reported by the source feed; confirm compatibility before updating.
Reported by GitHub Security Advisories (ghsa).
HOL Guard can help your team review package activity against supported protection paths.
Explore HOL GuardUpdate github.com/envoyproxy/gateway to 1.8.1; github.com/envoyproxy/gateway to 1.7.4 if you use the affected versions. Test the change in a non-production environment first.
Local check
hol-guard supply-chain scanEnvoy Gateway: Authentication Bypass via Improper Input Validation in EnvoyExtensionPolicy Lua Allows Secret Disclosure affects github.com/envoyproxy/gateway (go), github.com/envoyproxy/gateway (go). Severity is critical. ### Impact The `to_absolute_normalized_path` function (security.lua:28-43) does not collapse redundant path separators (// → /). On Linux, `//etc/passwd` is equivalent to `/etc/passwd` (POSIX path semantics), but `is_critical_path` fails to match the double-slash variant because `//etc/passwd` does not start with `/etc/`. This allows Lua code submitted as an `EnvoyExtensionPolicy` to read arbitrary files from the gateway controller pod's filesystem during Strict validation (the default), including: * `/etc/passwd` * Kubernetes SA tokens via `//var/run/secrets/kubernetes.io/serviceaccount/token` * TLS certificates via `//certs/...` * Process environment via `//proc/self/environ` These credentials can be used to read sensitive information from the K8s API Server or from the Gateway XDS server. ### Patches This has been patched in versions >= v1.7.4 and v1.8.1 - Collapse redundant path separators (`//` to `/`) so double-slash variants like `//etc/passwd` and `//var/run/secrets/...` are matched by the critical-path check. - Rewrite the traversal check to reject any `.` or `..` segment in any position and across both separator styles (catches `/etc/./passwd`, `./etc/passwd`, `/etc/.`). ### Workarounds Please refer to the `Warning` section in [Lua docs](https://gateway.envoyproxy.io/v1.8/tasks/extensibility/lua/) for measures to reduce risk. ### Credits Envoy Gateway thanks @dashingDragon and @Donjon-Cerberus for reporting this issue.
AI coding agents often install or upgrade packages automatically in go. A critical vulnerability in a dependency can be pulled into a project through a normal install or update without a human reviewing the change, expanding the blast radius from a single package to every agent workspace that depends on it.
| Package | Affected range | Fixed version |
|---|---|---|
| github.com/envoyproxy/gatewaygo | >=1.8.0-rc.0,<1.8.1 | 1.8.1 |
| github.com/envoyproxy/gatewaygo | <1.7.4 | 1.7.4 |
Fixed versions are reported by the source feed; confirm compatibility before updating.
Reported by GitHub Security Advisories (ghsa).
HOL Guard can help your team review package activity against supported protection paths.
Explore HOL Guard