Repository navigation
v0.4.17
修正(セキュリティ)
- rproxy を rproxy-api v0.4.17 にしました(イメージ
ghcr.io/max3584/rproxy-gateway/rproxy:0.4.17)。Gateway の rproxy で次のことが直ります。- HTTPRoute のパスと Host を正規化してから照合します。
/%61dmin・//admin・/x/../adminや末尾にドットの付いた Host で、パスごとに付けた認証(ExternalAuth・RproxyMiddleware の basic_auth・oidc など)を素通りできなくなります。転送先へも正規化したパスを送ります。 - 認証のミドルウェアが付ける身元のヘッダを、どのルートでもリクエストの最初に消します。
- HTTP の接続に待ち時間の上限が付きます(何も送らない接続でファイル記述子を使い切られません)。
- URL のポート・ホストが不正なら断ります。
- HTTPRoute のパスと Host を正規化してから照合します。
- ListenerSet のリスナーに付いたルートでも、原因のルートだけを外すようにしました(#95)。描く段階で見つけられない誤り(壊れた Secret など)のとき、これまではそのポートの全テナントのルートを外していました。
- 古い rproxy(v0.4.0〜0.4.2)の Pod で、新しい項目を使う RproxyMiddleware があっても、ルールセット全体を断られないようにしました(#95)。そのルートだけを
Accepted: Falseにします。
変更
- 正規化していないパスは、正規化してから転送先へ送ります。
- HTTP の接続の待ち時間の上限が既定で効きます(最初のバイトまで 10 秒・ヘッダまで 30 秒・処理のない HTTP/2 180 秒・本文が止まったとき 60 秒。gRPC と応答の後は除く)。
- 外したルートとルールセット全体の拒否は、5 分ごとに rproxy に聞き直します。
rproxy: rproxy-api v0.4.17 · UI: TCP-UDP-rproxy-ui v0.4.9
Fixed (security)
- rproxy is now rproxy-api v0.4.17 (image
ghcr.io/max3584/rproxy-gateway/rproxy:0.4.17). For Gateways this fixes:- HTTPRoute paths and Hosts are normalised before matching, so
/%61dmin,//admin,/x/../adminor a Host with a trailing dot can no longer bypass per-path authentication (ExternalAuth, RproxyMiddleware basic_auth / oidc, …). Backends receive the normalised path. - Identity headers that auth middlewares set are removed at the start of every request on every route.
- HTTP connections have time limits (silent connections can no longer exhaust file descriptors).
- URLs with an invalid port or host are refused.
- HTTPRoute paths and Hosts are normalised before matching, so
- Routes attached to ListenerSet listeners are isolated too (#95): when rproxy refuses something the render step can't detect (such as a broken Secret), only the offending route is left out instead of every tenant's routes on that port.
- On old rproxy pods (v0.4.0–0.4.2), a RproxyMiddleware using newer fields no longer makes the whole rule set fail (#95); only that route becomes
Accepted: False.
Changed
- Paths are normalised before being sent to backends.
- HTTP connection time limits apply by default (10 s to the first byte, 30 s for headers, 180 s for idle HTTP/2, 60 s for a stalled body; not for gRPC or after the response started).
- Left-out routes and rejected rule sets are asked again every 5 minutes.
rproxy: rproxy-api v0.4.17 · UI: TCP-UDP-rproxy-ui v0.4.9