Skip to content
Heist/ feed
Back to feed
High

Tinyauth has OAuth account confusion via shared mutable state on singleton service instances

Type: advisorySources: OSV

Tinyauth is an authentication and authorization server. Prior to version 5.0.5, all three OAuth service implementations (GenericOAuthService, GithubOAuthService, GoogleOAuthService) store PKCE verifiers and access tokens as mutable struct fields on singleton instances shared across all concurrent requests. When two users initiate OAuth login for the same provider concurrently, a race condition between VerifyCode() and Userinfo() causes one user to receive a session with the other user's identity. This issue has been patched in version 5.0.5.

Products
Not specified
Affected versions
Not specified
Fixed versions
Not specified
CVEs
CVE-2026-33544
Confirmed fixed CVEs
Not specified
Updated in this feed
3 Nov 2026, 00:55 UTC · Revision 1

Source evidence

Tinyauth has OAuth account confusion via shared mutable state on singleton service instances

core-osv · Original source

Published 2 Apr 2026, 15:00 UTC

Tinyauth is an authentication and authorization server. Prior to version 5.0.5, all three OAuth service implementations (GenericOAuthService, GithubOAuthService, GoogleOAuthService) store PKCE verifiers and access tokens as mutable struct fields on singleton instances shared across all concurrent requests. When two users initiate OAuth login for the same provider concurrently, a race condition between VerifyCode() and Userinfo() causes one user to receive a session with the other user's identity. This issue has been patched in version 5.0.5.

osv:CVE-2026-33544
Complete source record
{
  "id": "54f9cfb76bd3e5c4aee653615f7f0d95258a85b059f92ee4a96ba09207f4f7ec",
  "url": "https://osv.dev/vulnerability/CVE-2026-33544",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "Tinyauth has OAuth account confusion via shared mutable state on singleton service instances",
    "summary": "Tinyauth is an authentication and authorization server. Prior to version 5.0.5, all three OAuth service implementations (GenericOAuthService, GithubOAuthService, GoogleOAuthService) store PKCE verifiers and access tokens as mutable struct fields on singleton instances shared across all concurrent requests. When two users initiate OAuth login for the same provider concurrently, a race condition between VerifyCode() and Userinfo() causes one user to receive a session with the other user's identity. This issue has been patched in version 5.0.5.",
    "evidence": "osv:CVE-2026-33544",
    "products": [],
    "severity": "high",
    "structured": {
      "id": "CVE-2026-33544",
      "aliases": [
        "CVE-2026-33544",
        "GHSA-9q5m-jfc4-wc92",
        "GO-2026-5296"
      ],
      "metrics": [
        {
          "type": "CVSS_V3",
          "score": "CVSS:3.1/AV:N/AC:H/PR:L/UI:R/S:C/C:H/I:H/A:N"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://github.com/tinyauthapp/tinyauth",
              "type": "GIT",
              "events": [
                {
                  "introduced": "0"
                },
                {
                  "fixed": "fc1d4f2082a5a4d26305d40baeec209937127684"
                },
                {
                  "fixed": "f26c2171610d5c2dfbba2edb6ccd39490e349803"
                }
              ],
              "database_specific": {
                "extracted_events": [
                  {
                    "cpe": "cpe:2.3:a:tinyauth:tinyauth:*:*:*:*:*:*:*:*",
                    "range": [
                      {
                        "introduced": "0"
                      },
                      {
                        "fixed": "5.0.5"
                      }
                    ],
                    "source": "CPE_RANGE"
                  },
                  {
                    "range": [
                      {
                        "fixed": "f26c2171610d5c2dfbba2edb6ccd39490e349803"
                      }
                    ],
                    "source": "REFERENCES_COMMIT"
                  },
                  {
                    "range": [
                      {
                        "fixed": "fc1d4f2082a5a4d26305d40baeec209937127684"
                      }
                    ],
                    "source": "REFERENCES_TAG",
                    "original_tag": "v5.0.5"
                  }
                ]
              }
            }
          ],
          "versions": [
            "v5.0.5-beta.1",
            "v5.0.4",
            "v5.0.3-beta.1",
            "v5.0.3",
            "v5.0.2-beta.2",
            "v5.0.2",
            "v5.0.2-beta.1",
            "v5.0.1-rc.1",
            "v5.0.1",
            "v5.0.1-beta.1",
            "v5.0.0-rc.2",
            "v5.0.0",
            "v5.0.0-rc.1",
            "v5.0.0-beta.4",
            "v5.0.0-beta.3",
            "v5.0.0-beta.2",
            "v5.0.0-beta.1",
            "v5.0.0-alpha.5",
            "v5.0.0-alpha.4",
            "v5.0.0-alpha.3",
            "v5.0.0-alpha.2",
            "v5.0.0-alpha.1",
            "v4.1.0",
            "v4.1.0-rc.2",
            "v4.1.0-rc.1",
            "v4.1.0-beta.1",
            "v4.0.1-beta.2",
            "v4.0.1",
            "v4.0.1-beta.1",
            "v4.0.0",
            "v4.0.0-rc.1",
            "v4.0.0-beta.3",
            "v4.0.0-beta.2",
            "v4.0.0-beta.1",
            "v4.0.0-alpha.2",
            "v4.0.0-alpha.1",
            "v3.6.2",
            "v3.6.2-beta.4",
            "v3.6.2-beta.3",
            "v3.6.2-beta.2",
            "v3.6.2-beta.1",
            "v3.6.1",
            "v3.6.1-beta.3",
            "v3.6.1-beta.2",
            "v3.6.1-beta.1",
            "v3.6.0-beta.2",
            "v3.6.0",
            "v3.6.0-beta.1",
            "v3.5.0",
            "v3.5.0-alpha.2",
            "v3.5.0-alpha.1",
            "v3.4.1-beta.1",
            "v3.4.1",
            "v3.4.0",
            "v3.4.0-beta.2",
            "v3.4.0-beta.1",
            "v3.4.0-alpha.1",
            "v3.3.1-beta.1",
            "v3.3.1",
            "v3.3.0",
            "v3.3.0-alpha.3",
            "v3.3.0-alpha.2",
            "v3.3.0-alpha.1",
            "v3.2.1",
            "v3.2.1-beta.1",
            "v3.2.0-beta.6",
            "v3.2.0",
            "v3.2.0-beta.5",
            "v3.2.0-beta.4",
            "v3.2.0-beta.3",
            "v3.2.0-beta.2",
            "v3.2.0-beta.1",
            "v3.2.0-alpha.1",
            "v3.1.0",
            "v3.1.0-beta.2",
            "v3.1.0-beta.1",
            "v3.1.0-alpha.1",
            "v3.1.0-exp.3",
            "v3.1.0-exp.2",
            "v3.1.0-exp.1",
            "v3.0.1-beta.1",
            "v3.0.1",
            "v3.0.0",
            "v3.0.0-beta.2",
            "v3.0.0-beta.1",
            "v3.0.0-alpha.4",
            "v3.0.0-alpha.3",
            "v3.0.0-alpha.2",
            "v3.0.0-alpha.1",
            "v2.1.1-beta.1",
            "v2.1.1",
            "v2.1.0",
            "v2.1.0-alpha.2",
            "v2.1.0-alpha.1",
            "v2.0.2-beta.2",
            "v2.0.2",
            "v2.0.2-beta.1",
            "v2.0.1",
            "v2.0.0",
            "v2.0.0-beta.1",
            "v2.0.0-alpha.1",
            "v1.0.0",
            "v1.0.0-beta.3",
            "v1.0.0-beta.2",
            "v1.0.0-beta.1",
            "v1.0.0-alpha.1",
            "v0.3.0",
            "v0.3.0-beta.3",
            "v0.3.0-beta.2",
            "v0.3.0-beta.1",
            "v0.2.0-beta.1",
            "v0.2.0",
            "v0.1.0",
            "v0.1.0-beta.1"
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-33544.json"
          }
        }
      ],
      "modified": "2026-10-28T02:30:24.968724709Z",
      "provider": "osv",
      "references": [
        "https://github.com/steveiliop56/tinyauth/releases/tag/v5.0.5",
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/33xxx/CVE-2026-33544.json",
        "https://github.com/steveiliop56/tinyauth/security/advisories/GHSA-9q5m-jfc4-wc92",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-33544",
        "https://github.com/steveiliop56/tinyauth/commit/f26c2171610d5c2dfbba2edb6ccd39490e349803"
      ],
      "provider_metadata": {
        "cwe_ids": [
          "CWE-362"
        ],
        "cna_assigner": "GitHub_M",
        "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/33xxx/CVE-2026-33544.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-33544",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 491375,
  "published_at": "2026-04-02T15:00:38.45+00:00"
}