Skip to content

Commit b0555ec

Browse files
authored
doc: routing is not a security feature (#4052)
doc: routing is not a security feature --------- Signed-off-by: Sandor Szücs <sandor.szuecs@zalando.de>
1 parent c3d156c commit b0555ec

1 file changed

Lines changed: 14 additions & 0 deletions

File tree

docs/reference/predicates.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,20 @@ Example route with a Host, Method and Path match predicates and a backend:
1010
all: Host(/^my-host-header\.example\.org$/) && Method("GET") && Path("/hello") -> "http://127.0.0.1:1234/";
1111
```
1212

13+
## Security consideration
14+
15+
**Routing is not a security feature!**
16+
Please use [auth filters](filters.md#authentication-and-authorization) to make sure routes are secure.
17+
18+
Known security issues in predicates:
19+
20+
- [ForwardedHost](#forwardedhost) can be forged by the client if proxy layer in front of skipper does not handle it.
21+
- [JWTPayloadAnyKV](#jwtpayloadanykv), [JWTPayloadAllKV](#jwtpayloadallkv), [JWTPayloadAnyKVRegexp, JWTPayloadAllKVRegexp](#jwtpayloadanykvregexp-jwtpayloadallkvregexp) are not validating that JWT is valid for performance reasons
22+
- [QueryParam](#queryparam) can be tricked by a duplicate key, example: `?k1=foo&k1=bar`
23+
- [Source](#source) and [SourceFromLast](#sourcefromlast) can be byassed via XFF header controlled by the client, if the front layer load balancer does not make sure that the client IP is set in the expected order.
24+
- [ClientIP](#clientip) can be tricked if the attacker is able to forge its IP.
25+
- [OTelBaggage](#otelbaggage) can be tricked if the attacker adds valid OTEL http headers into their HTTP request.
26+
1327
## Predicate arguments
1428

1529
The predicate arguments can be strings, regular expressions or numbers (float64, int). In the eskip syntax

0 commit comments

Comments
 (0)