<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0">
  <channel>
    <title>Most recent entries from all</title>
    <link>https://vulnerability.circl.lu</link>
    <description>Contains only the most 10 recent entries.</description>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>python-feedgen</generator>
    <language>en</language>
    <lastBuildDate>Tue, 29 Sep 2026 19:38:58 +0000</lastBuildDate>
    <item>
      <title>fkie_cve-2026-54072</title>
      <link>https://vulnerability.circl.lu/vuln/fkie_cve-2026-54072</link>
      <description>&lt;p&gt;Authorizer is an open-source, self-hostable authentication and authorization server. Prior to version 2.2.1, the `/authorize` endpoint accepts any `redirect_uri` without validating it against `AllowedOrigins`. When `response_type=token` or `response_type=id_token`, the server appends `access_token`, `id_token`, and `refresh_token` as query parameters and issues a 302 redirect to the attacker-supplied URL. An unauthenticated attacker can obtain the required `client_id` from the public `/graphql?query={meta{client_id}}` endpoint. A partial fix was applied in v2.0.1 to other handlers (`oauth_login`, `verify_email`, `magic_link_login`, `forgot_password`, `invite_members`, `oauth_callback`) but `/authorize` was not included. Version 2.2.1 contains a more complete fix.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;Authorizer is an open-source, self-hostable authentication and authorization server. Prior to version 2.2.1, the `/authorize` endpoint accepts any `redirect_uri` without validating it against `AllowedOrigins`. When `response_type=token` or `response_type=id_token`, the server appends `access_token`, `id_token`, and `refresh_token` as query parameters and issues a 302 redirect to the attacker-supplied URL. An unauthenticated attacker can obtain the required `client_id` from the public `/graphql?query={meta{client_id}}` endpoint. A partial fix was applied in v2.0.1 to other handlers (`oauth_login`, `verify_email`, `magic_link_login`, `forgot_password`, `invite_members`, `oauth_callback`) but `/authorize` was not included. Version 2.2.1 contains a more complete fix.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/fkie_cve-2026-54072</guid>
    </item>
    <item>
      <title>GHSA-h29v-hj44-q8cv — Authorizer: Unvalidated redirect_uri in /authorize leaks OAuth2 tokens to attacker-controlled URL</title>
      <link>https://vulnerability.circl.lu/vuln/ghsa-h29v-hj44-q8cv</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Go: github.com/authorizerdev/authorizer&lt;/p&gt;
&lt;p&gt;## Summary&lt;/p&gt;
&lt;p&gt;The `/authorize` endpoint accepts any `redirect_uri` without validating it against `AllowedOrigins`. When `response_type=token` or `response_type=id_token`, the server appends `access_token`, `id_token`, and `refresh_token` as query parameters and issues a 302 redirect to the attacker-supplied URL. An unauthenticated attacker can obtain the required `client_id` from the public `/graphql?query={meta{client_id}}` endpoint.&lt;/p&gt;
&lt;p&gt;Partial fix was applied in v2.0.1 to other handlers (`oauth_login`, `verify_email`, `magic_link_login`, `forgot_password`, `invite_members`, `oauth_callback`) but `/authorize` was not included.&lt;/p&gt;
&lt;p&gt;## Vulnerable Code&lt;/p&gt;
&lt;p&gt;`internal/http_handlers/authorize.go`:&lt;/p&gt;
&lt;p&gt;```go
redirectURI := strings.TrimSpace(gc.Query(&amp;#34;redirect_uri&amp;#34;))
// ... no IsValidOrigin() call ...
// response_type=token path (line ~263):
if strings.Contains(redirectURI, &amp;#34;?&amp;#34;) {
    redirectURI = redirectURI + &amp;#34;&amp;amp;&amp;#34; + params
} else {
    redirectURI = redirectURI + &amp;#34;?&amp;#34; + params
}
handleResponse(gc, responseMode, authURL, redirectURI, ...) // 302 to attacker URL
```&lt;/p&gt;
&lt;p&gt;Compare with the fixed `oauth_login.go` in v2.0.1 which calls `validators.IsValidOrigin(redirectURI, h.Config.AllowedOrigins)`.&lt;/p&gt;
&lt;p&gt;## Steps to Reproduce&lt;/p&gt;
&lt;p&gt;```bash
# 1. Obtain client_id (no authentication required)
CLIENT_ID=$(curl -s http://TARGET/graphql \
  -H &amp;#34;Content-Type: application/json&amp;#34; \
  -d &amp;#39;{&amp;#34;query&amp;#34;:&amp;#34;{meta{client_id}}&amp;#34;}&amp;#39; | python3 -c &amp;#34;import sys,json; print(json.load(sys.stdin)[&amp;#39;data&amp;#39;][&amp;#39;meta&amp;#39;][&amp;#39;client_id&amp;#39;])&amp;#34;)&lt;/p&gt;
&lt;p&gt;echo &amp;#34;client_…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Go: github.com/authorizerdev/authorizer&lt;/p&gt;
&lt;p&gt;## Summary&lt;/p&gt;
&lt;p&gt;The `/authorize` endpoint accepts any `redirect_uri` without validating it against `AllowedOrigins`. When `response_type=token` or `response_type=id_token`, the server appends `access_token`, `id_token`, and `refresh_token` as query parameters and issues a 302 redirect to the attacker-supplied URL. An unauthenticated attacker can obtain the required `client_id` from the public `/graphql?query={meta{client_id}}` endpoint.&lt;/p&gt;
&lt;p&gt;Partial fix was applied in v2.0.1 to other handlers (`oauth_login`, `verify_email`, `magic_link_login`, `forgot_password`, `invite_members`, `oauth_callback`) but `/authorize` was not included.&lt;/p&gt;
&lt;p&gt;## Vulnerable Code&lt;/p&gt;
&lt;p&gt;`internal/http_handlers/authorize.go`:&lt;/p&gt;
&lt;p&gt;```go
redirectURI := strings.TrimSpace(gc.Query(&amp;#34;redirect_uri&amp;#34;))
// ... no IsValidOrigin() call ...
// response_type=token path (line ~263):
if strings.Contains(redirectURI, &amp;#34;?&amp;#34;) {
    redirectURI = redirectURI + &amp;#34;&amp;amp;&amp;#34; + params
} else {
    redirectURI = redirectURI + &amp;#34;?&amp;#34; + params
}
handleResponse(gc, responseMode, authURL, redirectURI, ...) // 302 to attacker URL
```&lt;/p&gt;
&lt;p&gt;Compare with the fixed `oauth_login.go` in v2.0.1 which calls `validators.IsValidOrigin(redirectURI, h.Config.AllowedOrigins)`.&lt;/p&gt;
&lt;p&gt;## Steps to Reproduce&lt;/p&gt;
&lt;p&gt;```bash
# 1. Obtain client_id (no authentication required)
CLIENT_ID=$(curl -s http://TARGET/graphql \
  -H &amp;#34;Content-Type: application/json&amp;#34; \
  -d &amp;#39;{&amp;#34;query&amp;#34;:&amp;#34;{meta{client_id}}&amp;#34;}&amp;#39; | python3 -c &amp;#34;import sys,json; print(json.load(sys.stdin)[&amp;#39;data&amp;#39;][&amp;#39;meta&amp;#39;][&amp;#39;client_id&amp;#39;])&amp;#34;)&lt;/p&gt;
&lt;p&gt;echo &amp;#34;client_…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/ghsa-h29v-hj44-q8cv</guid>
    </item>
  </channel>
</rss>
