---
id: CVE-2026-77561
title: Tinyauth is an authentication and authorization server
summary: >-
  Tinyauth is an authentication and authorization server. Prior to 5.1.0, an
  unauthenticated remote attacker can send POST /api/user/login requests with
  257 distinct nonexistent usernames to fill MaxLoginAttemptRecords and activate
  a globa…
severity: medium
cvss: 5.3
cvssVector: 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L'
cwe:
  - CWE-307
vendor: tinyauthapp
product: tinyauth
affected:
  - tinyauth < 5.1.0
published: '2026-09-21'
updated: '2026-09-21'
sourceUpdated: '2026-09-21T17:18:52.943'
source: NVD
sourceUrl: 'https://nvd.nist.gov/vuln/detail/CVE-2026-77561'
references:
  - url: >-
      https://github.com/tinyauthapp/tinyauth/commit/654b5cc436fc67865c1f55edf9ba9fbded50b74f
    label: security-advisories@github.com
  - url: >-
      https://github.com/tinyauthapp/tinyauth/commit/dade1e2c8f27a23df56ac216dcaf4b37081698e7
    label: security-advisories@github.com
  - url: 'https://github.com/tinyauthapp/tinyauth/pull/1008'
    label: security-advisories@github.com
  - url: 'https://github.com/tinyauthapp/tinyauth/pull/943'
    label: security-advisories@github.com
  - url: 'https://github.com/tinyauthapp/tinyauth/releases/tag/v5.1.0'
    label: security-advisories@github.com
  - url: >-
      https://github.com/tinyauthapp/tinyauth/security/advisories/GHSA-9xhm-w3wj-xhqh
    label: security-advisories@github.com
tags:
  - nvd
  - cve.org
ingestedAt: '2026-09-21T17:49:53.175Z'
---

## Overview

Tinyauth is an authentication and authorization server. Prior to 5.1.0, an unauthenticated remote attacker can send POST /api/user/login requests with 257 distinct nonexistent usernames to fill MaxLoginAttemptRecords and activate a global login lockdown. internal/controller/user_controller.go loginHandler passes each attacker-controlled identifier to internal/service/auth_service.go RecordLoginAttempt, which invokes lockdownMode after the map reaches its cap. IsAccountLocked checks that global state before validating unrelated accounts, causing valid users to receive HTTP 429 until auth.loginTimeout expires, approximately 300 seconds by default. The attack can be repeated, but existing authenticated sessions are not invalidated. This issue is fixed in version 5.1.0.

## Remediation

Refer to the linked advisories for vendor-supplied fixes and affected version ranges.
