Vulnerability Details CVE-2026-32729
Runtipi is a personal homeserver orchestrator. Prior to 4.8.1, The Runtipi /api/auth/verify-totp endpoint does not enforce any rate limiting, attempt counting, or account lockout mechanism. An attacker who has obtained a user's valid credentials (via phishing, credential stuffing, or data breach) can brute-force the 6-digit TOTP code to completely bypass two-factor authentication. The TOTP verification session persists for 24 hours (default cache TTL), providing an excessive window during which the full 1,000,000-code keyspace (000000–999999) can be exhausted. At practical request rates (~500 req/s), the attack completes in approximately 33 minutes in the worst case. This vulnerability is fixed in 4.8.1.
Exploit prediction scoring system (EPSS) score
EPSS Score 0.001
EPSS Ranking 17.4%
CVSS Severity
CVSS v3 Score 8.1
Products affected by CVE-2026-32729
-
cpe:2.3:a:runtipi:runtipi:0.0.1
-
cpe:2.3:a:runtipi:runtipi:0.1.0
-
cpe:2.3:a:runtipi:runtipi:0.1.1
-
cpe:2.3:a:runtipi:runtipi:0.1.2
-
cpe:2.3:a:runtipi:runtipi:0.1.3
-
cpe:2.3:a:runtipi:runtipi:0.1.4
-
cpe:2.3:a:runtipi:runtipi:0.1.5
-
cpe:2.3:a:runtipi:runtipi:0.2.0
-
cpe:2.3:a:runtipi:runtipi:0.2.1
-
cpe:2.3:a:runtipi:runtipi:0.3.0
-
cpe:2.3:a:runtipi:runtipi:0.3.1
-
cpe:2.3:a:runtipi:runtipi:0.4.0
-
cpe:2.3:a:runtipi:runtipi:0.4.1
-
cpe:2.3:a:runtipi:runtipi:0.4.2
-
cpe:2.3:a:runtipi:runtipi:0.5.0
-
cpe:2.3:a:runtipi:runtipi:0.6.0
-
cpe:2.3:a:runtipi:runtipi:0.6.1
-
cpe:2.3:a:runtipi:runtipi:0.7.0
-
cpe:2.3:a:runtipi:runtipi:0.7.1
-
cpe:2.3:a:runtipi:runtipi:0.7.2
-
cpe:2.3:a:runtipi:runtipi:0.7.3
-
cpe:2.3:a:runtipi:runtipi:0.7.4
-
cpe:2.3:a:runtipi:runtipi:0.8.0
-
cpe:2.3:a:runtipi:runtipi:0.8.1
-
cpe:2.3:a:runtipi:runtipi:1.0.0
-
cpe:2.3:a:runtipi:runtipi:1.0.1
-
cpe:2.3:a:runtipi:runtipi:1.1.0
-
cpe:2.3:a:runtipi:runtipi:1.1.1
-
cpe:2.3:a:runtipi:runtipi:1.1.2
-
cpe:2.3:a:runtipi:runtipi:1.2.0
-
cpe:2.3:a:runtipi:runtipi:1.2.1
-
cpe:2.3:a:runtipi:runtipi:1.3.0
-
cpe:2.3:a:runtipi:runtipi:1.4.0
-
cpe:2.3:a:runtipi:runtipi:1.4.1
-
cpe:2.3:a:runtipi:runtipi:1.4.2
-
cpe:2.3:a:runtipi:runtipi:1.5.0
-
cpe:2.3:a:runtipi:runtipi:1.5.1
-
cpe:2.3:a:runtipi:runtipi:1.5.2
-
cpe:2.3:a:runtipi:runtipi:1.6.0
-
cpe:2.3:a:runtipi:runtipi:1.6.1
-
cpe:2.3:a:runtipi:runtipi:2.0.0
-
cpe:2.3:a:runtipi:runtipi:2.0.1
-
cpe:2.3:a:runtipi:runtipi:2.0.2
-
cpe:2.3:a:runtipi:runtipi:2.0.3
-
cpe:2.3:a:runtipi:runtipi:2.0.4
-
cpe:2.3:a:runtipi:runtipi:2.0.5
-
cpe:2.3:a:runtipi:runtipi:2.0.6
-
cpe:2.3:a:runtipi:runtipi:2.0.7
-
cpe:2.3:a:runtipi:runtipi:2.1.0
-
cpe:2.3:a:runtipi:runtipi:2.2.0
-
cpe:2.3:a:runtipi:runtipi:2.2.1
-
cpe:2.3:a:runtipi:runtipi:2.3.0
-
cpe:2.3:a:runtipi:runtipi:2.3.1
-
cpe:2.3:a:runtipi:runtipi:2.4.0
-
cpe:2.3:a:runtipi:runtipi:2.5.0
-
cpe:2.3:a:runtipi:runtipi:2.5.1
-
cpe:2.3:a:runtipi:runtipi:3.0.0
-
cpe:2.3:a:runtipi:runtipi:3.0.1
-
cpe:2.3:a:runtipi:runtipi:3.0.2
-
cpe:2.3:a:runtipi:runtipi:3.0.3
-
cpe:2.3:a:runtipi:runtipi:3.1.0
-
cpe:2.3:a:runtipi:runtipi:3.1.1
-
cpe:2.3:a:runtipi:runtipi:3.1.2
-
cpe:2.3:a:runtipi:runtipi:3.1.3
-
cpe:2.3:a:runtipi:runtipi:3.10.0
-
cpe:2.3:a:runtipi:runtipi:3.2.0
-
cpe:2.3:a:runtipi:runtipi:3.3.0
-
cpe:2.3:a:runtipi:runtipi:3.3.1
-
cpe:2.3:a:runtipi:runtipi:3.3.2
-
cpe:2.3:a:runtipi:runtipi:3.4.0
-
cpe:2.3:a:runtipi:runtipi:3.4.1
-
cpe:2.3:a:runtipi:runtipi:3.5.0
-
cpe:2.3:a:runtipi:runtipi:3.5.1
-
cpe:2.3:a:runtipi:runtipi:3.5.2
-
cpe:2.3:a:runtipi:runtipi:3.5.3
-
cpe:2.3:a:runtipi:runtipi:3.6.0
-
cpe:2.3:a:runtipi:runtipi:3.6.1
-
cpe:2.3:a:runtipi:runtipi:3.6.2
-
cpe:2.3:a:runtipi:runtipi:3.6.3
-
cpe:2.3:a:runtipi:runtipi:3.6.4
-
cpe:2.3:a:runtipi:runtipi:3.7.0
-
cpe:2.3:a:runtipi:runtipi:3.7.1
-
cpe:2.3:a:runtipi:runtipi:3.7.2
-
cpe:2.3:a:runtipi:runtipi:3.7.3
-
cpe:2.3:a:runtipi:runtipi:3.7.4
-
cpe:2.3:a:runtipi:runtipi:3.7.5
-
cpe:2.3:a:runtipi:runtipi:3.8.0
-
cpe:2.3:a:runtipi:runtipi:3.8.1
-
cpe:2.3:a:runtipi:runtipi:3.8.2
-
cpe:2.3:a:runtipi:runtipi:3.8.3
-
cpe:2.3:a:runtipi:runtipi:3.8.4
-
cpe:2.3:a:runtipi:runtipi:3.9.0
-
cpe:2.3:a:runtipi:runtipi:3.9.1
-
cpe:2.3:a:runtipi:runtipi:3.9.2
-
cpe:2.3:a:runtipi:runtipi:3.9.3
-
cpe:2.3:a:runtipi:runtipi:3.9.4
-
cpe:2.3:a:runtipi:runtipi:3.9.5
-
cpe:2.3:a:runtipi:runtipi:4.0.0
-
cpe:2.3:a:runtipi:runtipi:4.0.1
-
cpe:2.3:a:runtipi:runtipi:4.0.2
-
cpe:2.3:a:runtipi:runtipi:4.0.3
-
cpe:2.3:a:runtipi:runtipi:4.1.0
-
cpe:2.3:a:runtipi:runtipi:4.1.1
-
cpe:2.3:a:runtipi:runtipi:4.1.2
-
cpe:2.3:a:runtipi:runtipi:4.2.0
-
cpe:2.3:a:runtipi:runtipi:4.2.1
-
cpe:2.3:a:runtipi:runtipi:4.3.0
-
cpe:2.3:a:runtipi:runtipi:4.4.0
-
cpe:2.3:a:runtipi:runtipi:4.5.0
-
cpe:2.3:a:runtipi:runtipi:4.5.1
-
cpe:2.3:a:runtipi:runtipi:4.5.2
-
cpe:2.3:a:runtipi:runtipi:4.5.3
-
cpe:2.3:a:runtipi:runtipi:4.5.4
-
cpe:2.3:a:runtipi:runtipi:4.5.5
-
cpe:2.3:a:runtipi:runtipi:4.6.0
-
cpe:2.3:a:runtipi:runtipi:4.6.1
-
cpe:2.3:a:runtipi:runtipi:4.6.2
-
cpe:2.3:a:runtipi:runtipi:4.6.3
-
cpe:2.3:a:runtipi:runtipi:4.6.4
-
cpe:2.3:a:runtipi:runtipi:4.6.5
-
cpe:2.3:a:runtipi:runtipi:4.7.0
-
cpe:2.3:a:runtipi:runtipi:4.7.1
-
cpe:2.3:a:runtipi:runtipi:4.7.2