| Gói / sản phẩm | Phiên bản bị ảnh hưởng | Phiên bản đã vá |
|---|---|---|
| github.com/traefik/traefik | ≤ 1.7.34mọi phiên bản | |
| github.com/traefik/traefik/v2 | < 2.11.23 | 2.11.23 |
| github.com/traefik/traefik/v3 | ≥ 3.4.0-rc1, < 3.4.0-rc2< 3.3.6 | 3.4.0-rc23.3.6 |
| traefik | = 3.4.0≥ 3.0.0, < 3.3.6< 2.11.24 | 3.3.62.11.24 |
There is a potential vulnerability in Traefik managing the requests using a PathPrefix, Path or PathRegex matcher.
When Traefik is configured to route the requests to a backend using a matcher based on the path, if the URL contains a /../ in its path, it’s possible to target a backend, exposed using another router, by-passing the middlewares chain.
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: my-service
spec:
routes:
- match: PathPrefix(‘/service’)
kind: Rule
services:
- name: service-a
port: 8080
middlewares:
- name: my-middleware-a
- match: PathPrefix(‘/service/sub-path’)
kind: Rule
services:
- name: service-a
port: 8080
In such a case, the request http://mydomain.example.com/service/sub-path/../other-path will reach the backend my-service-a without operating the middleware my-middleware-a unless the computed path is http://mydomain.example.com/service/other-path and should be computes by the first router (operating my-middleware-a).
Add a PathRegexp rule to the matcher to prevent matching a route with a /../ in the path.
Example:
match: PathPrefix(`/service`) && !PathRegexp(`(?:(/\.\./)+.*)`)
If you have any questions or comments about this advisory, please open an issue.
Bạn đang dùng một trong các sản phẩm này? Quét site để biết có đang lộ phiên bản có lỗ hổng không.
Quét site miễn phí