CVE-2026-77561

Source
https://cve.org/CVERecord?id=CVE-2026-77561
Import Source
https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-77561.json
JSON Data
https://api.osv.dev/v1/vulns/CVE-2026-77561
Aliases
Published
2026-09-21T16:48:21Z
Modified
2026-10-01T20:56:00Z
Severity
  • 5.3 (Medium) CVSS_V3 - CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L CVSS Calculator
Summary
Tinyauth: Unauthenticated login attempts can trigger global login lockdown denial of service
Details

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.

Database specific
{
    "cna_assigner":  "GitHub_M",
    "cwe_ids":  [
        "CWE-307"
    ],
    "osv_generated_from":  "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/77xxx/CVE-2026-77561.json"
}
References

Affected packages

Git / github.com/tinyauthapp/tinyauth

Affected ranges

Type
GIT
Repo
https://github.com/tinyauthapp/tinyauth
Events
Introduced
0 Unknown introduced commit / All previous commits are affected
Fixed
Fixed
Fixed
Database specific
Show details
{
    "extracted_events":  [
        {
            "introduced":  "0"
        },
        {
            "fixed":  "5.1.0"
        }
    ],
    "source":  [
        "AFFECTED_FIELD",
        "REFERENCES"
    ]
}

Affected versions

Other
nightly
v0.*
v0.1.0
v0.1.0-beta.1
v0.2.0
v0.2.0-beta.1
v0.3.0
v0.3.0-beta.1
v0.3.0-beta.2
v0.3.0-beta.3
v1.*
v1.0.0
v1.0.0-alpha.1
v1.0.0-beta.1
v1.0.0-beta.2
v1.0.0-beta.3
v2.*
v2.0.0
v2.0.0-alpha.1
v2.0.0-beta.1
v2.0.1
v2.0.2
v2.0.2-beta.1
v2.0.2-beta.2
v2.1.0
v2.1.0-alpha.1
v2.1.0-alpha.2
v2.1.1
v2.1.1-beta.1
v3.*
v3.0.0
v3.0.0-alpha.1
v3.0.0-alpha.2
v3.0.0-alpha.3
v3.0.0-alpha.4
v3.0.0-beta.1
v3.0.0-beta.2
v3.0.1
v3.0.1-beta.1
v3.1.0
v3.1.0-alpha.1
v3.1.0-beta.1
v3.1.0-beta.2
v3.1.0-exp.1
v3.1.0-exp.2
v3.1.0-exp.3
v3.2.0
v3.2.0-alpha.1
v3.2.0-beta.1
v3.2.0-beta.2
v3.2.0-beta.3
v3.2.0-beta.4
v3.2.0-beta.5
v3.2.0-beta.6
v3.2.1
v3.2.1-beta.1
v3.3.0
v3.3.0-alpha.1
v3.3.0-alpha.2
v3.3.0-alpha.3
v3.3.1
v3.3.1-beta.1
v3.4.0
v3.4.0-alpha.1
v3.4.0-beta.1
v3.4.0-beta.2
v3.4.1
v3.4.1-beta.1
v3.5.0
v3.5.0-alpha.1
v3.5.0-alpha.2
v3.6.0
v3.6.0-beta.1
v3.6.0-beta.2
v3.6.1
v3.6.1-beta.1
v3.6.1-beta.2
v3.6.1-beta.3
v3.6.2
v3.6.2-beta.1
v3.6.2-beta.2
v3.6.2-beta.3
v3.6.2-beta.4
v4.*
v4.0.0
v4.0.0-alpha.1
v4.0.0-alpha.2
v4.0.0-beta.1
v4.0.0-beta.2
v4.0.0-beta.3
v4.0.0-rc.1
v4.0.1
v4.0.1-beta.1
v4.0.1-beta.2
v4.1.0
v4.1.0-beta.1
v4.1.0-rc.1
v4.1.0-rc.2
v5.*
v5.0.0
v5.0.0-alpha.1
v5.0.0-alpha.2
v5.0.0-alpha.3
v5.0.0-alpha.4
v5.0.0-alpha.5
v5.0.0-beta.1
v5.0.0-beta.2
v5.0.0-beta.3
v5.0.0-beta.4
v5.0.0-rc.1
v5.0.0-rc.2
v5.0.1
v5.0.1-beta.1
v5.0.1-rc.1
v5.0.2
v5.0.2-beta.1
v5.0.2-beta.2
v5.0.3
v5.0.3-beta.1
v5.0.4
v5.0.5
v5.0.5-beta.1
v5.0.5-beta.2
v5.0.5-beta.3
v5.0.5-rc.1
v5.0.5-rc.2
v5.0.6
v5.0.6-beta.1
v5.0.7
v5.0.7-alpha.1
v5.0.7-beta.1
v5.1.0-alpha.1
v5.1.0-alpha.2
v5.1.0-alpha.3
v5.1.0-alpha.4
v5.1.0-beta.1
v5.1.0-beta.2
v5.1.0-beta.3
v5.1.0-beta.4
v5.1.0-beta.5
v5.1.0-rc.1
v5.1.0-rc.2
v5.1.0-rc.3

Database specific

source
"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-77561.json"