/

CVE-2026-116199

Severity:

HIGH RISK

(8.1)

Authentication Bypass (CWE-285) in Snipe-IT Google SSO

CVE-2026-116199

Analyzed

Vulnerability type

Category:

Authentication Bypass

CWE:

CWE-285

Impact:

Account Takeover and Privilege Restoration

Severity:

HIGH RISK

(8.1)

CVSS version:

3.1

Catch this CVE while code is being written

Detect vulnerable code directly in pull requests, so CVEs are fixed before merge.

Summary

Snipe-IT contains an authentication bypass in its Google SSO callback handling that can authenticate a user based on a matching Google account email without checking whether the local account remains activated. If a deactivated account has an email-shaped username and its Google identity is still usable, the user may regain access with the account's original permissions, including administrative privileges.

Snipe-IT contains an authentication bypass in its Google SSO callback handling that can authenticate a user based on a matching Google account email without checking whether the local account remains activated. If a deactivated account has an email-shaped username and its Google identity is still usable, the user may regain access with the account's original permissions, including administrative privileges.

Affected context

The issue occurs in Snipe-IT deployments that use Google SSO and process callbacks through GoogleAuthController::handleGoogleCallback. It is relevant when a local account has been deactivated but its username matches the email address of an active Google identity. In that condition, the callback logic may establish a session without enforcing the local account's activation state.

The issue occurs in Snipe-IT deployments that use Google SSO and process callbacks through GoogleAuthController::handleGoogleCallback. It is relevant when a local account has been deactivated but its username matches the email address of an active Google identity. In that condition, the callback logic may establish a session without enforcing the local account's activation state.

Exploit preconditions

  • Attack surface: Google SSO authentication callback
  • Required access: Control of, or access to, a Google identity whose email matches the target local username
  • Trigger point: Successful processing of the Google authentication callback
  • Account state: The matching Snipe-IT account is deactivated but retains its prior permissions
  • Why exploitation is possible: The callback authenticates the matching account without consistently enforcing its activated status
  • Attack surface: Google SSO authentication callback
  • Required access: Control of, or access to, a Google identity whose email matches the target local username
  • Trigger point: Successful processing of the Google authentication callback
  • Account state: The matching Snipe-IT account is deactivated but retains its prior permissions
  • Why exploitation is possible: The callback authenticates the matching account without consistently enforcing its activated status

Why this happens

The underlying flaw is an authorization and account-state validation failure. The SSO callback uses an external identity-to-username match as sufficient evidence to establish a local session, while omitting a required check that the corresponding local account is active. This maps to CWE-285: Improper Authorization, because access-control decisions do not fully enforce the account's current authorization state before granting access.

The underlying flaw is an authorization and account-state validation failure. The SSO callback uses an external identity-to-username match as sufficient evidence to establish a local session, while omitting a required check that the corresponding local account is active. This maps to CWE-285: Improper Authorization, because access-control decisions do not fully enforce the account's current authorization state before granting access.

Potential impact

  • A deactivated user may regain access to the application
  • An attacker with control of the matching Google identity could inherit the local account's permissions
  • Administrative accounts could be reactivated in practice through session establishment
  • Sensitive assets, tickets, users, or configuration data could be accessed or modified
  • Security controls based on local account deactivation could be bypassed
  • A deactivated user may regain access to the application
  • An attacker with control of the matching Google identity could inherit the local account's permissions
  • Administrative accounts could be reactivated in practice through session establishment
  • Sensitive assets, tickets, users, or configuration data could be accessed or modified
  • Security controls based on local account deactivation could be bypassed

General mitigation guidance

Mitigation generally focuses on treating local account state as a mandatory authorization condition for every SSO login.

Common defensive patterns include:

  • Require the matching local account to be active before creating or restoring a session
  • Apply authorization and account-status checks after external identity verification and before session issuance
  • Use explicit, trusted identity mappings rather than relying solely on username or email equality
  • Revalidate account status during session refresh and sensitive authorization decisions
  • Apply least privilege to administrative roles and separate SSO identity management from local authorization
  • Record and alert on SSO logins involving inactive, disabled, or recently changed accounts

Mitigation generally focuses on treating local account state as a mandatory authorization condition for every SSO login.

Common defensive patterns include:

  • Require the matching local account to be active before creating or restoring a session
  • Apply authorization and account-status checks after external identity verification and before session issuance
  • Use explicit, trusted identity mappings rather than relying solely on username or email equality
  • Revalidate account status during session refresh and sensitive authorization decisions
  • Apply least privilege to administrative roles and separate SSO identity management from local authorization
  • Record and alert on SSO logins involving inactive, disabled, or recently changed accounts

How teams detect issues like this

Organizations can assess for this class of issue through:

  • Static analysis and code review checks for authentication callbacks that issue sessions before local account-state validation
  • Review of identity-mapping logic that treats email or username equality as sufficient authorization
  • Tests confirming that disabled, suspended, or deactivated accounts cannot authenticate through any configured identity provider
  • Integration tests covering account deactivation followed by SSO login and session refresh
  • Monitoring for successful SSO sessions associated with inactive accounts or unexpected administrative identities
  • Policy enforcement requiring centralized checks for account status before session creation

Automated security review tools may help identify missing authorization checks, but behavioral tests are important because the issue depends on the interaction between external identity validation and local account state.

Organizations can assess for this class of issue through:

  • Static analysis and code review checks for authentication callbacks that issue sessions before local account-state validation
  • Review of identity-mapping logic that treats email or username equality as sufficient authorization
  • Tests confirming that disabled, suspended, or deactivated accounts cannot authenticate through any configured identity provider
  • Integration tests covering account deactivation followed by SSO login and session refresh
  • Monitoring for successful SSO sessions associated with inactive accounts or unexpected administrative identities
  • Policy enforcement requiring centralized checks for account status before session creation

Automated security review tools may help identify missing authorization checks, but behavioral tests are important because the issue depends on the interaction between external identity validation and local account state.

Sources

SourceLink
github.comgithub.com/grokability/snipe-it/security/advisories/GHSA-xf36-wx48-5rqp
vulncheck.comvulncheck.com/advisories/snipe-it-before-8.6.3-authentication-bypass-via-google-sso-callback

Frequently asked

questions

Exploitation generally requires access to a Google identity whose email matches the username of a deactivated Snipe-IT account. The risk is greatest when that account previously held elevated permissions.

No. The described path uses Google SSO, so a password for the local Snipe-IT account may not be required when the matching Google identity can complete authentication.

Treat the local account's activation state as a mandatory authorization check after Google identity verification and before issuing a session or restoring privileges.

Test all authentication providers against disabled and deactivated accounts, centralize account-state enforcement, avoid using email matching as the sole authorization decision, and monitor for sessions created for inactive users.

Exploitation generally requires access to a Google identity whose email matches the username of a deactivated Snipe-IT account. The risk is greatest when that account previously held elevated permissions.

No. The described path uses Google SSO, so a password for the local Snipe-IT account may not be required when the matching Google identity can complete authentication.

Treat the local account's activation state as a mandatory authorization check after Google identity verification and before issuing a session or restoring privileges.

Test all authentication providers against disabled and deactivated accounts, centralize account-state enforcement, avoid using email matching as the sole authorization decision, and monitor for sessions created for inactive users.

Find out what's already
exploitable in your codebase.