CVE-2026-94269: Apache APISIX: Servlet-style normalization creates a route/upstream authorization mismatch
Apache APISIX 2.14.1–3.18.0 can let encoded paths bypass route authorization and reach protected upstreams.
Non-canonical URL auth bypass in Apache APISIX
Apache APISIX can base authorization on non-canonical URL paths (CWE-647). In some configurations where a permissive route overlaps a protected one, a crafted encoded path is matched to the permissive route while the request is still forwarded to a protected upstream endpoint those policies were never meant to cover. A request that should have been rejected is served instead, giving unauthenticated access to that protected upstream endpoint. This affects Apache APISIX from 2.14.1 through 3.18.0 and is fixed in 3.19.0. It is not in CISA KEV, and no public proof-of-concept is known.
What to do: Upgrade Apache APISIX to 3.19.0. Until then, review configurations where a permissive route overlaps a protected one and ensure encoded or non-canonical paths are normalized or rejected before routing and authorization. After upgrading, check access logs for unexpected encoded-path requests that reached protected upstream endpoints.
| Product | Affected |
|---|---|
| Apache APISIX | 2.14.1 through 3.18.0 |
Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.
Use of Non-Canonical URL paths for authorization decisions vulnerability in Apache APISIX. In some configurations where a permissive route overlaps a protected one, a crafted encoded path can reach an upstream endpoint that the matched route's policies were never meant to cover. A request that should have been rejected is served instead, giving unauthenticated access to a protected upstream endpoint. This issue affects Apache APISIX: from 2.14.1 through 3.18.0. Users are recommended to upgrade to version 3.19.0, which fixes the issue.
Apache APISIX 2.14.1–3.18.0 can let encoded paths bypass route authorization and reach protected upstreams.
Today 840 readers · 1.1K views · 843 reads · all time 159K views