Files
vuln-osv/data/Go/GHSA-vrch-868g-9jx5.json
T

1 line
5.1 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{"schema_version":"1.9.0","id":"GHSA-vrch-868g-9jx5","published":"2025-05-28T14:25:09Z","modified":"2025-11-27T08:59:46.377512Z","aliases":["CVE-2025-47952","GO-2025-3719"],"summary":"Traefik allows path traversal using url encoding","details":"## Impact\n\nThere is a potential vulnerability in Traefik managing the requests using a `PathPrefix`, `Path` or `PathRegex` matcher.\n\nWhen Traefik is configured to route the requests to a backend using a matcher based on the path, if the URL contains a URL encoded string in its path, it’s possible to target a backend, exposed using another router, by-passing the middlewares chain.\n\n## Example\n\n```yaml\napiVersion: traefik.io/v1alpha1\nkind: IngressRoute\nmetadata:\n name: my-service\nspec:\n routes:\n - match: PathPrefix(‘/service’)\n kind: Rule\n services:\n - name: service-a\n port: 8080\n middlewares:\n - name: my-middleware-a\n - match: PathPrefix(‘/service/sub-path’)\n kind: Rule\n services:\n - name: service-a\n port: 8080\n```\n\nIn such a case, the request `http://mydomain.example.com/service/sub-path/%2e%2e/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`).\n\n## Patches\n\n- https://github.com/traefik/traefik/releases/tag/v2.11.25\n- https://github.com/traefik/traefik/releases/tag/v3.4.1\n\n## For more information\n\nIf you have any questions or comments about this advisory, please [open an issue](https://github.com/traefik/traefik/issues).\n\n<details>\n<summary>Original Description</summary>\n### Summary\n\nPath traversal with \"/../\" using URL encodings (\"/%2e%2e\") allows for circumventing routing rules. \n\n### Details\n\nWhen having defined a route, you can path traverse using the URL encoded variant of /../ and reach endpoints that are not made publicly available. This issue has been found and fixed earlier with regular /../ and has been fixed in this CVE. This URL encoding trick works around that\nhttps://nvd.nist.gov/vuln/detail/CVE-2025-32431\n\nSimply implementing a check on the URL encoding won't be sufficient as path traversal can take numerous formats. See examples here:\nhttps://book.hacktricks.wiki/en/pentesting-web/file-inclusion/index.html\n\n### PoC\n\nSetup a service with two endpoints: \"/public\" and \"/private\", which returns a 200 OK for both\nSetup a Traefik proxy with a single route which points to the service using path /public\n\nRegular requests to traefik /public will return 200 OK and to /private should return 404 (response by Traefik)\nWhen making a request to /public/%2e%2e/private you should receive a 200 OK.\n\n### Impact\nImpacts all traefik implementations with path prefix routes that expose only part of the downstream api\n\n### Suggestion\nProvide configuration property which disables all path traversals. Steps:\n1. Decode URL\n2. Evaluate and construct relative path (do traversal before route evaluation)\n3. Compare relative/evaluated path to configured routes (PathPrefix/pathRegexp)\n</details>","affected":[{"package":{"name":"github.com/traefik/traefik/v3","ecosystem":"Go","purl":"pkg:golang/github.com/traefik/traefik/v3"},"ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"fixed":"3.4.1"}]}],"database_specific":{"last_known_affected_version_range":"<= 3.4.0","source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2025/05/GHSA-vrch-868g-9jx5/GHSA-vrch-868g-9jx5.json"}},{"package":{"name":"github.com/traefik/traefik/v2","ecosystem":"Go","purl":"pkg:golang/github.com/traefik/traefik/v2"},"ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"fixed":"2.11.25"}]}],"database_specific":{"source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2025/05/GHSA-vrch-868g-9jx5/GHSA-vrch-868g-9jx5.json"}},{"package":{"name":"github.com/traefik/traefik","ecosystem":"Go","purl":"pkg:golang/github.com/traefik/traefik"},"ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"last_affected":"1.7.34"}]}],"database_specific":{"source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2025/05/GHSA-vrch-868g-9jx5/GHSA-vrch-868g-9jx5.json"}}],"references":[{"type":"WEB","url":"https://github.com/traefik/traefik/security/advisories/GHSA-vrch-868g-9jx5"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2025-47952"},{"type":"WEB","url":"https://github.com/traefik/traefik/commit/08d5dfee0164aa54dd44a467870042e18e8d3f00"},{"type":"PACKAGE","url":"https://github.com/traefik/traefik"},{"type":"WEB","url":"https://github.com/traefik/traefik/releases/tag/v2.11.25"},{"type":"WEB","url":"https://github.com/traefik/traefik/releases/tag/v3.4.1"}],"database_specific":{"cwe_ids":["CWE-22"],"github_reviewed":true,"github_reviewed_at":"2025-05-28T14:25:09Z","nvd_published_at":"2025-05-30T04:15:46Z","severity":"LOW"},"severity":[{"type":"CVSS_V4","score":"CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N/E:P"}]}