git.iko.soy/typeable/oauth2-proxy
on master help sign in
release v7.15.2 (#3413)
5961fd9github-actions[bot]
CHANGELOG.md+43โˆ’1
@@ -6,6 +6,48 @@
6
6
7## Breaking Changes
7## Breaking Changes
8
8
9+## Changes since v7.15.2
10+
11+# V7.15.2
12+
13+## Release Highlights
14+
15+- ๐Ÿ”ต Golang version upgrade to v1.25.9
16+ - Upgrade of all dependencies to their latest versions
17+ - [CVE-2026-34986](https://nvd.nist.gov/vuln/detail/CVE-2026-34986)
18+ - [CVE-2026-32281](https://nvd.nist.gov/vuln/detail/CVE-2026-32281)
19+ - [CVE-2026-32289](https://nvd.nist.gov/vuln/detail/CVE-2026-32289)
20+ - [CVE-2026-32288](https://nvd.nist.gov/vuln/detail/CVE-2026-32288)
21+ - [CVE-2026-32280](https://nvd.nist.gov/vuln/detail/CVE-2026-32280)
22+ - [CVE-2026-32282](https://nvd.nist.gov/vuln/detail/CVE-2026-32282)
23+ - [CVE-2026-32283](https://nvd.nist.gov/vuln/detail/CVE-2026-32283)
24+- ๐Ÿ•ต๏ธโ€โ™€๏ธ Vulnerabilities have been addressed
25+
26+## Important Notes
27+
28+We have had security audits performed on OAuth2 Proxy in the past couple of weeks and as a result we have fixed
29+several CRITICAL vulnerabilities.
30+
31+The security vulnerabilities include multiple authentication bypasses and a potential session fixation attack.
32+For more details and to identify if you are effects, we urge all users of OAuth2 Proxy to read the security
33+disclosures.
34+
35+- (Critical) [GHSA-5hvv-m4w4-gf6v](https://github.com/oauth2-proxy/oauth2-proxy/security/advisories/GHSA-5hvv-m4w4-gf6v) fix: health check user-agent authentication bypass
36+- (Critical) [GHSA-7x63-xv5r-3p2x](https://github.com/oauth2-proxy/oauth2-proxy/security/advisories/GHSA-7x63-xv5r-3p2x) fix: authentication bypass via X-Forwarded-Uri header spoofing
37+- (High) [GHSA-pxq7-h93f-9jrg](https://github.com/oauth2-proxy/oauth2-proxy/security/advisories/GHSA-pxq7-h93f-9jrg) fix: fragment evaluation as part of the allowed routes
38+- (Moderate) [GHSA-c5c4-8r6x-56w3](https://github.com/oauth2-proxy/oauth2-proxy/security/advisories/GHSA-c5c4-8r6x-56w3) fix: email validation bypass via malformed multi-@ email claims
39+
40+Furthermore, for improving the security of OAuth2 Proxy we introduced a new flag `--trusted-proxy-ip` that allows users
41+to explicitly specify trusted reverse proxy IPs for the `X-Forwarded-*` headers. This is an important step to prevent
42+potential header spoofing attacks and to ensure that OAuth2 Proxy only trusts headers from known and trusted sources.
43+We highly recommend users to review their deployment architecture and consider using this flag to enhance the security
44+of their OAuth2 Proxy instances. Check the docs for more details: https://oauth2-proxy.github.io/oauth2-proxy/configuration/overview#proxy-options
45+
46+Furthermore, we want to thank everyone who contributed to the audits and reported potential issues to make open source
47+software like OAuth2 Proxy more secure for everyone.
48+
49+## Breaking Changes
50+
9## Changes since v7.15.1
51## Changes since v7.15.1
10
52
11- [#3411](https://github.com/oauth2-proxy/oauth2-proxy/pull/3411) chore(deps): update gomod dependencies (@tuunit)
53- [#3411](https://github.com/oauth2-proxy/oauth2-proxy/pull/3411) chore(deps): update gomod dependencies (@tuunit)
@@ -13,8 +55,8 @@
13- [GHSA-f24x-5g9q-753f](https://github.com/oauth2-proxy/oauth2-proxy/security/advisories/GHSA-f24x-5g9q-753f) fix: clear session cookie at beginning of signinpage handler (@fnoehWM / @bella-WI / @tuunit)
55- [GHSA-f24x-5g9q-753f](https://github.com/oauth2-proxy/oauth2-proxy/security/advisories/GHSA-f24x-5g9q-753f) fix: clear session cookie at beginning of signinpage handler (@fnoehWM / @bella-WI / @tuunit)
14- [GHSA-5hvv-m4w4-gf6v](https://github.com/oauth2-proxy/oauth2-proxy/security/advisories/GHSA-5hvv-m4w4-gf6v) fix: health check user-agent authentication bypass (@tuunit)
56- [GHSA-5hvv-m4w4-gf6v](https://github.com/oauth2-proxy/oauth2-proxy/security/advisories/GHSA-5hvv-m4w4-gf6v) fix: health check user-agent authentication bypass (@tuunit)
15- [GHSA-7x63-xv5r-3p2x](https://github.com/oauth2-proxy/oauth2-proxy/security/advisories/GHSA-7x63-xv5r-3p2x) fix: authentication bypass via X-Forwarded-Uri header spoofing (@tuunit)
57- [GHSA-7x63-xv5r-3p2x](https://github.com/oauth2-proxy/oauth2-proxy/security/advisories/GHSA-7x63-xv5r-3p2x) fix: authentication bypass via X-Forwarded-Uri header spoofing (@tuunit)
16โˆ’- [GHSA-c5c4-8r6x-56w3](https://github.com/oauth2-proxy/oauth2-proxy/security/advisories/GHSA-c5c4-8r6x-56w3) fix: email validation bypass via malformed multi-@ email claims (@tuunit)
17- [GHSA-pxq7-h93f-9jrg](https://github.com/oauth2-proxy/oauth2-proxy/security/advisories/GHSA-pxq7-h93f-9jrg) fix: fragment evaluation as part of the allowed routes (@tuunit)
58- [GHSA-pxq7-h93f-9jrg](https://github.com/oauth2-proxy/oauth2-proxy/security/advisories/GHSA-pxq7-h93f-9jrg) fix: fragment evaluation as part of the allowed routes (@tuunit)
59+- [GHSA-c5c4-8r6x-56w3](https://github.com/oauth2-proxy/oauth2-proxy/security/advisories/GHSA-c5c4-8r6x-56w3) fix: email validation bypass via malformed multi-@ email claims (@tuunit)
18
60
19# V7.15.1
61# V7.15.1
20
62
contrib/local-environment/dex.yaml+14โˆ’13
@@ -6,7 +6,7 @@ storage:
6 type: etcd
6 type: etcd
7 config:
7 config:
8 endpoints:
8 endpoints:
9โˆ’ - http://etcd:2379
9+ - http://etcd:2379
10 namespace: dex/
10 namespace: dex/
11web:
11web:
12 http: 0.0.0.0:5556
12 http: 0.0.0.0:5556
@@ -16,17 +16,18 @@ expiry:
16 signingKeys: "4h"
16 signingKeys: "4h"
17 idTokens: "1h"
17 idTokens: "1h"
18staticClients:
18staticClients:
19โˆ’- id: oauth2-proxy
19+ - id: oauth2-proxy
20โˆ’ redirectURIs:
20+ redirectURIs:
21โˆ’ # These redirect URIs point to the `--redirect-url` for OAuth2 proxy.
21+ # These redirect URIs point to the `--redirect-url` for OAuth2 proxy.
22โˆ’ - 'http://oauth2-proxy.localtest.me:4180/oauth2/callback' # For basic proxy example.
22+ - "http://oauth2-proxy.localtest.me:4180/oauth2/callback" # For basic proxy example.
23โˆ’ - 'http://oauth2-proxy.oauth2-proxy.localhost/oauth2/callback' # For nginx and traefik example.
23+ - "http://oauth2-proxy.localtest.me:8080/oauth2/callback" # For nginx example.
24+ - "http://oauth2-proxy.oauth2-proxy.localhost/oauth2/callback" # For traefik example.
24โˆ’ name: 'OAuth2 Proxy'
25+ name: "OAuth2 Proxy"
25โˆ’ secret: b2F1dGgyLXByb3h5LWNsaWVudC1zZWNyZXQK
26+ secret: b2F1dGgyLXByb3h5LWNsaWVudC1zZWNyZXQK
26enablePasswordDB: true
27enablePasswordDB: true
27staticPasswords:
28staticPasswords:
28โˆ’- email: "admin@example.com"
29+ - email: "admin@example.com"
29โˆ’ # bcrypt hash of the string "password"
30+ # bcrypt hash of the string "password"
30โˆ’ hash: "$2a$10$2b2cU8CPhOTaGrs1HRQuAueS7JTT5ZHsHSzYiFPm1leZck7Mc8T4W"
31+ hash: "$2a$10$2b2cU8CPhOTaGrs1HRQuAueS7JTT5ZHsHSzYiFPm1leZck7Mc8T4W"
31โˆ’ username: "admin"
32+ username: "admin"
32โˆ’ userID: "08a8684b-db88-4b73-90a9-3cd1661f5466"
33+ userID: "08a8684b-db88-4b73-90a9-3cd1661f5466"
contrib/local-environment/docker-compose-alpha-config.yaml+1โˆ’1
@@ -14,7 +14,7 @@ version: "3.0"
14services:
14services:
15 oauth2-proxy:
15 oauth2-proxy:
16 container_name: oauth2-proxy
16 container_name: oauth2-proxy
17โˆ’ image: quay.io/oauth2-proxy/oauth2-proxy:v7.15.1
17+ image: quay.io/oauth2-proxy/oauth2-proxy:v7.15.2
18 command: --config /oauth2-proxy.cfg --alpha-config /oauth2-proxy-alpha-config.yaml
18 command: --config /oauth2-proxy.cfg --alpha-config /oauth2-proxy-alpha-config.yaml
19 hostname: oauth2-proxy
19 hostname: oauth2-proxy
20 volumes:
20 volumes:
contrib/local-environment/docker-compose-gitea.yaml+1โˆ’1
@@ -14,7 +14,7 @@ version: '3.0'
14services:
14services:
15 oauth2-proxy:
15 oauth2-proxy:
16 container_name: oauth2-proxy
16 container_name: oauth2-proxy
17โˆ’ image: quay.io/oauth2-proxy/oauth2-proxy:v7.15.1
17+ image: quay.io/oauth2-proxy/oauth2-proxy:v7.15.2
18 command: --config /oauth2-proxy.cfg
18 command: --config /oauth2-proxy.cfg
19 hostname: oauth2-proxy
19 hostname: oauth2-proxy
20 volumes:
20 volumes:
contrib/local-environment/docker-compose-keycloak.yaml+5โˆ’5
@@ -10,11 +10,11 @@
10#
10#
11# Access http://oauth2-proxy.localtest.me:4180 to initiate a login cycle using user=admin@example.com, password=password
11# Access http://oauth2-proxy.localtest.me:4180 to initiate a login cycle using user=admin@example.com, password=password
12# Access http://keycloak.localtest.me:9080 with the same credentials to check out the settings
12# Access http://keycloak.localtest.me:9080 with the same credentials to check out the settings
13โˆ’version: '3.0'
13+version: "3.0"
14services:
14services:
15 oauth2-proxy:
15 oauth2-proxy:
16 container_name: oauth2-proxy
16 container_name: oauth2-proxy
17โˆ’ image: quay.io/oauth2-proxy/oauth2-proxy:v7.15.1
17+ image: quay.io/oauth2-proxy/oauth2-proxy:v7.15.2
18 command: --config /oauth2-proxy.cfg
18 command: --config /oauth2-proxy.cfg
19 hostname: oauth2-proxy
19 hostname: oauth2-proxy
20 volumes:
20 volumes:
@@ -43,9 +43,9 @@ services:
43 image: keycloak/keycloak:25.0
43 image: keycloak/keycloak:25.0
44 hostname: keycloak
44 hostname: keycloak
45 command:
45 command:
46โˆ’ - 'start-dev'
46+ - "start-dev"
47โˆ’ - '--http-port=9080'
47+ - "--http-port=9080"
48โˆ’ - '--import-realm'
48+ - "--import-realm"
49 volumes:
49 volumes:
50 - ./keycloak:/opt/keycloak/data/import
50 - ./keycloak:/opt/keycloak/data/import
51 environment:
51 environment:
contrib/local-environment/docker-compose-nginx.yaml+3โˆ’3
@@ -22,12 +22,12 @@
22version: "3.0"
22version: "3.0"
23services:
23services:
24 oauth2-proxy:
24 oauth2-proxy:
25โˆ’ image: quay.io/oauth2-proxy/oauth2-proxy:v7.15.1
25+ image: quay.io/oauth2-proxy/oauth2-proxy:v7.15.2
26โˆ’ ports:
26+ ports: []
27โˆ’ - 4180:4180/tcp
28 hostname: oauth2-proxy
27 hostname: oauth2-proxy
29 container_name: oauth2-proxy
28 container_name: oauth2-proxy
30 command: --config /oauth2-proxy.cfg
29 command: --config /oauth2-proxy.cfg
30+ restart: unless-stopped
31 volumes:
31 volumes:
32 - "./oauth2-proxy-nginx.cfg:/oauth2-proxy.cfg"
32 - "./oauth2-proxy-nginx.cfg:/oauth2-proxy.cfg"
33 networks:
33 networks:
contrib/local-environment/docker-compose-traefik.yaml+1โˆ’1
@@ -23,7 +23,7 @@ version: '3.0'
23services:
23services:
24
24
25 oauth2-proxy:
25 oauth2-proxy:
26โˆ’ image: quay.io/oauth2-proxy/oauth2-proxy:v7.15.1
26+ image: quay.io/oauth2-proxy/oauth2-proxy:v7.15.2
27 ports: []
27 ports: []
28 hostname: oauth2-proxy
28 hostname: oauth2-proxy
29 volumes:
29 volumes:
contrib/local-environment/docker-compose.yaml+1โˆ’1
@@ -13,7 +13,7 @@ version: "3.0"
13services:
13services:
14 oauth2-proxy:
14 oauth2-proxy:
15 container_name: oauth2-proxy
15 container_name: oauth2-proxy
16โˆ’ image: quay.io/oauth2-proxy/oauth2-proxy:v7.15.1
16+ image: quay.io/oauth2-proxy/oauth2-proxy:v7.15.2
17 command: --config /oauth2-proxy.cfg
17 command: --config /oauth2-proxy.cfg
18 hostname: oauth2-proxy
18 hostname: oauth2-proxy
19 volumes:
19 volumes:
contrib/local-environment/nginx.conf+32โˆ’37
@@ -1,49 +1,44 @@
1โˆ’# Reverse proxy to oauth2-proxy
2โˆ’server {
3โˆ’ listen 8080;
4โˆ’ server_name oauth2-proxy.localtest.me;
5โˆ’
6โˆ’ location / {
7โˆ’ proxy_set_header Host $host;
8โˆ’ proxy_set_header X-Real-IP $remote_addr;
9โˆ’ proxy_set_header X-Forwarded-Uri $request_uri;
10โˆ’
11โˆ’ proxy_pass http://oauth2-proxy:4180/;
12โˆ’ }
13โˆ’}
14โˆ’
15# Reverse proxy to httpbin
1# Reverse proxy to httpbin
16server {
2server {
17 listen 8080;
3 listen 8080;
18โˆ’ server_name httpbin.localtest.me;
4+ server_name oauth2-proxy.localtest.me;
19โˆ’
5+
20โˆ’ auth_request /internal-auth/oauth2/auth;
6+ location /oauth2/ {
7+ proxy_pass http://oauth2-proxy:4180;
8+ proxy_set_header Host $host;
9+ proxy_set_header X-Real-IP $remote_addr;
10+ proxy_set_header X-Forwarded-Uri $request_uri;
11+ proxy_set_header X-Auth-Request-Redirect $request_uri;
12+ }
21
13
22โˆ’ # On 401, redirect to the sign_in page via a named location
14+ location = /oauth2/auth {
23โˆ’ # This ensures a proper 302 redirect that browsers will follow
15+ proxy_pass http://oauth2-proxy:4180;
24โˆ’ error_page 401 = @oauth2_signin;
16+ proxy_set_header Host $host;
17+ proxy_set_header X-Real-IP $remote_addr;
18+ proxy_set_header X-Forwarded-Uri $request_uri;
19+ # nginx auth_request includes headers but not body
20+ proxy_set_header Content-Length "";
21+ proxy_pass_request_body off;
22+ }
25
23
26 location / {
24 location / {
25+ auth_request /oauth2/auth;
26+ error_page 401 = @oauth2_signin;
27+
28+ # pass information via X-User and X-Email headers to backend,
29+ # requires running with --set-xauthrequest flag
30+ auth_request_set $user $upstream_http_x_auth_request_user;
31+ auth_request_set $email $upstream_http_x_auth_request_email;
32+ proxy_set_header X-User $user;
33+ proxy_set_header X-Email $email;
34+
27 proxy_pass http://httpbin/;
35 proxy_pass http://httpbin/;
36+ # or "root /path/to/site;" or "fastcgi_pass ..." etc
28 }
37 }
29
38
30โˆ’ # Named location for OAuth2 sign-in redirect
39+ # Named location for handling OAuth2 sign-in redirects
31โˆ’ # Returns a proper 302 that works with --skip-provider-button
40+ # This ensures the browser receives a proper 302 redirect that it will follow
32 location @oauth2_signin {
41 location @oauth2_signin {
33โˆ’ return 302 http://oauth2-proxy.localtest.me:8080/oauth2/sign_in?rd=$scheme://$host$request_uri;
42+ return 302 /oauth2/sign_in?rd=$scheme://$http_host$request_uri;
34โˆ’ }
35โˆ’
36โˆ’ # auth_request must be a URI so this allows an internal path to then proxy to
37โˆ’ # the real auth_request path.
38โˆ’ # The trailing /'s are required so that nginx strips the prefix before proxying.
39โˆ’ location /internal-auth/ {
40โˆ’ internal; # Ensure external users can't access this path
41โˆ’
42โˆ’ # Make sure the OAuth2 Proxy knows where the original request came from.
43โˆ’ proxy_set_header Host $host;
44โˆ’ proxy_set_header X-Real-IP $remote_addr;
45โˆ’ proxy_set_header X-Forwarded-Uri $request_uri;
46โˆ’
47โˆ’ proxy_pass http://oauth2-proxy:4180/;
48 }
43 }
49}
44}
contrib/local-environment/oauth2-proxy-nginx.cfg+1โˆ’1
@@ -9,7 +9,7 @@ whitelist_domains=[".localtest.me"] # Required to allow redirection back to orig
9# dex provider
9# dex provider
10client_secret="b2F1dGgyLXByb3h5LWNsaWVudC1zZWNyZXQK"
10client_secret="b2F1dGgyLXByb3h5LWNsaWVudC1zZWNyZXQK"
11client_id="oauth2-proxy"
11client_id="oauth2-proxy"
12โˆ’redirect_url="http://oauth2-proxy.localtest.me:4180/oauth2/callback"
12+redirect_url="http://oauth2-proxy.localtest.me:8080/oauth2/callback"
13
13
14oidc_issuer_url="http://dex.localtest.me:5556/dex"
14oidc_issuer_url="http://dex.localtest.me:5556/dex"
15provider="oidc"
15provider="oidc"
docs/docs/installation.md+1โˆ’1
@@ -5,7 +5,7 @@ title: Installation
5
5
61. Choose how to deploy:
61. Choose how to deploy:
7
7
8โˆ’ a. Using a [Prebuilt Binary](https://github.com/oauth2-proxy/oauth2-proxy/releases) (current release is `v7.15.1`)
8+ a. Using a [Prebuilt Binary](https://github.com/oauth2-proxy/oauth2-proxy/releases) (current release is `v7.15.2`)
9
9
10 b. Using Go to install the latest release
10 b. Using Go to install the latest release
11 ```bash
11 ```bash
docs/package.json+3
@@ -42,5 +42,8 @@
42 },
42 },
43 "engines": {
43 "engines": {
44 "node": ">=18.0"
44 "node": ">=18.0"
45+ },
46+ "overrides" : {
47+ "webpackbar" : "^7.0.0"
45 }
48 }
46}
49}
docs/versioned_docs/version-7.15.x/installation.md+1โˆ’1
@@ -5,7 +5,7 @@ title: Installation
5
5
61. Choose how to deploy:
61. Choose how to deploy:
7
7
8โˆ’ a. Using a [Prebuilt Binary](https://github.com/oauth2-proxy/oauth2-proxy/releases) (current release is `v7.15.1`)
8+ a. Using a [Prebuilt Binary](https://github.com/oauth2-proxy/oauth2-proxy/releases) (current release is `v7.15.2`)
9
9
10 b. Using Go to install the latest release
10 b. Using Go to install the latest release
11 ```bash
11 ```bash