Severity by source
AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:L/A:N
Network-accessible brute force requires prior password possession (PR:L) and statistical guessing (AC:H); integrity elevated to High because attackers can permanently disable 2FA on accounts or clear other users' 2FA secrets.
Primary rating from Vendor (https://github.com/grokability/snipe-it).
CVSS VectorVendor: https://github.com/grokability/snipe-it
Lifecycle Timeline
2DescriptionCVE.org
Impact
POST /two-factor had no rate limiting, lockout, or attempt counter. An attacker with valid credentials can submit unlimited TOTP guesses. The TOTP implementation accepts the current code plus one step on either side (config/google2fa.php window=1), so at any instant 3 of 1,000,000 codes are accepted.
After a correct guess the attacker holds a fully authenticated session. If the instance is configured with 2FA in optional mode (two_factor_enabled='1'), the attacker can additionally disable 2FA via POST /account/profile with two_factor_optin=0. No OTP re-verification is required. The account is then accessible with the password alone on future logins. If 2FA is in required-for-all mode (='2'), the per-user opt-out path is closed and the impact stops at session-level account takeover. For an admin target, POST /api/v1/users/two_factor_reset additionally clears another user's 2FA secret.
Patches
Patched in v8.6.0
AnalysisAI
Unrestricted TOTP brute-forcing on Snipe-IT versions prior to 8.6.0 allows an attacker holding valid password credentials to bypass two-factor authentication by submitting unlimited guesses against the POST /two-factor endpoint, which enforces no rate limit, lockout, or attempt counter. With the google2fa window configured at 1, three of one million possible codes are valid at any instant, making statistical exhaustion feasible via scripted requests. Successful exploitation yields full session-level account takeover; in optional-2FA deployments the attacker can additionally call POST /account/profile to permanently disable 2FA with no re-verification, and admin-privileged attackers can clear other users' 2FA secrets via POST /api/v1/users/two_factor_reset. No public exploit has been identified at time of analysis.
Technical ContextAI
Snipe-IT is an open-source IT asset management application built on PHP and the Laravel framework, distributed as the Composer package snipe/snipe-it (CPE: pkg:composer/snipe_snipe-it). The vulnerability is rooted in CWE-770 (Allocation of Resources Without Limits or Throttling): the POST /two-factor handler processes TOTP submissions without any server-side throttle, attempt counter, or account lockout. The TOTP library in use is google2fa, configured in config/google2fa.php with window=1, which extends acceptance to the previous and next 30-second code windows in addition to the current one, yielding three simultaneously valid codes across the 1,000,000-code space. This results in a 3-in-1,000,000 acceptance probability per attempt. Because no ceiling is placed on attempts, the expected number of requests to succeed is roughly 333,333 - a volume easily achievable by an automated script over a normal network connection.
RemediationAI
Upgrade to Snipe-IT v8.6.0, the vendor-confirmed patched release documented in GitHub Advisory GHSA-mr8g-2mj4-pcq2 (https://github.com/grokability/snipe-it/security/advisories/GHSA-mr8g-2mj4-pcq2). For deployments that cannot immediately upgrade, implement request rate limiting at the reverse proxy or web server layer targeting the POST /two-factor endpoint - for example, using nginx limit_req or a Laravel rate-limiting middleware - configured to allow no more than 5-10 attempts per IP per minute, noting that IP-based controls can be partially bypassed via distributed source addresses and may affect legitimate users on shared egress IPs. Additionally, consider switching the instance from optional 2FA mode (two_factor_enabled='1') to required mode (='2') to close the POST /account/profile opt-out path and prevent permanent 2FA removal if an attacker succeeds in the brute force. Restricting the Snipe-IT web interface to trusted internal network ranges via firewall rules eliminates the network-accessible attack surface entirely and is the highest-confidence interim control.
In PHP versions 7.1.x below 7.1.33, 7.2.x below 7.2.24 and 7.3.x below 7.3.11 in certain configurations of FPM setup it
sapi/cgi/cgi_main.c in PHP before 5.3.12 and 5.4.x before 5.4.2, when configured as a CGI script (aka php-cgi), does not
(1) boardData102.php, (2) boardData103.php, (3) boardDataJP.php, (4) boardDataNA.php, and (5) boardDataWW.php in Netgear
The '/common/download_agent_installer.php' script in the Quest KACE System Management Appliance 8.0.318 is accessible by
ProjectSend versions prior to r1720 are affected by an improper authentication vulnerability. Rated critical severity (C
Roundcube Webmail contains a critical PHP object deserialization vulnerability (CVE-2025-49113, CVSS 9.9) that allows au
Util/PHP/eval-stdin.php in PHPUnit before 4.8.28 and 5.x before 5.6.3 allows remote attackers to execute arbitrary PHP c
Palo Alto Networks PAN-OS management web interface contains an authentication bypass allowing unauthenticated attackers
Nagios XI version xi-5.7.5 is affected by OS command injection. Rated high severity (CVSS 8.8), this vulnerability is re
Nagios XI version xi-5.7.5 is affected by OS command injection. Rated high severity (CVSS 8.8), this vulnerability is re
The get_referers function in /opt/ws/bin/sblistpack in Sophos Web Appliance before 3.7.9.1 and 3.8 before 3.8.1.1 allows
The Backup Migration plugin for WordPress is vulnerable to Remote Code Execution in all versions up to, and including, 1
Same technique Denial Of Service
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-62676
GHSA-mr8g-2mj4-pcq2