CVE-2026-23901
Apache Shiro vulnerability analysis and mitigation

Overview

CVE-2026-23901 is an Observable Timing Discrepancy vulnerability (CWE-208) in Apache Shiro that enables username enumeration via brute-force timing analysis. It affects all Apache Shiro versions in the 1.x series and 2.x versions prior to 2.0.7. The vulnerability was disclosed on February 8–10, 2026, with the CVE published on February 10, 2026. It carries a CVSS v3.1 base score of 2.5 (Low) and a CVSS v4.0 base score of 1.0 (Low) (GitHub Advisory, Red Hat Bugzilla).

Technical details

The root cause is that Apache Shiro's authentication code paths differ measurably between attempts for non-existent users versus existing users with incorrect passwords (CWE-208: Observable Timing Discrepancy). An attacker with local access and low privileges can time repeated authentication requests to statistically distinguish between "user not found" and "wrong password" responses, effectively enumerating valid usernames. Exploitation requires high attack complexity, local access, and some level of privileges, making it a constrained but real information-disclosure risk. The vulnerability was discovered by security researchers 4ra1n and Y4tacker, with remediation developed by lprimak (oss-security, GitHub Advisory).

Impact

Successful exploitation allows an attacker to enumerate valid usernames in an Apache Shiro-protected application by measuring response time differences during authentication attempts. The impact is limited to low confidentiality disclosure — no integrity or availability impact is present. Enumerated usernames can then be leveraged in targeted credential-stuffing or password-spraying attacks, incrementally weakening the overall security posture of the affected application (GitHub Advisory, Red Hat Bugzilla).

Exploitation steps

  1. Gain local access: Obtain low-privileged local access to a system running an application protected by Apache Shiro versions 1.x or 2.x before 2.0.7.
  2. Prepare username list: Compile a list of candidate usernames to test against the authentication endpoint.
  3. Send timed authentication requests: Submit repeated login attempts for each candidate username with an arbitrary password, carefully measuring the response time for each request using a high-resolution timer or scripting tool (e.g., Python with time.perf_counter() or a custom script).
  4. Analyze timing differences: Compare response times statistically — requests for non-existent users will follow a different code path and return faster (or slower) than requests for existing users with wrong passwords, revealing which usernames are valid.
  5. Build valid username list: Classify usernames as valid or invalid based on the observed timing distribution.
  6. Launch targeted attacks: Use the enumerated valid usernames as input for subsequent password-spraying or credential-stuffing attacks against the application (oss-security, GitHub Advisory).

Indicators of compromise

  • Logs: High volume of failed authentication attempts in application logs targeting the same endpoint with varying usernames but a consistent password; unusual patterns of rapid sequential login failures from a single local user or process.
  • Process: Scripted or automated processes generating repeated authentication requests at high frequency from a local account.
  • Network: If the Shiro-protected application is network-accessible, unusual bursts of authentication requests from a single source IP with systematically varied usernames may appear in access logs.

Mitigation and workarounds

The primary remediation is to upgrade Apache Shiro to version 2.0.7 or later, which equalizes the authentication code paths to eliminate the timing discrepancy (GitHub Advisory, oss-security). As infrastructure-level mitigations, implement rate limiting and account lockout policies on authentication endpoints to impede brute-force timing attacks. Deploying an intrusion detection system capable of identifying high-frequency authentication failures and normalizing authentication response times at the application or proxy layer can further reduce risk.

Community reactions

The vulnerability was disclosed via the Apache security mailing list and the oss-security list on February 8, 2026, with the CVE published on February 10, 2026. Red Hat tracked the issue via Bugzilla (Bug 2438436) and assigned it a low severity rating. Community reaction has been muted given the low CVSS score, local-only attack vector, and absence of public exploits; the Apache Shiro security model documentation was cited as already acknowledging username enumeration as a known risk (oss-security, Red Hat Bugzilla).

Additional resources


SourceThis report was generated using AI

Related Apache Shiro vulnerabilities:

CVE ID

Severity

Score

Technologies

Component name

CISA KEV exploit

Has fix

Published date

CVE-2026-49268HIGH8.8
  • Apache Shiro logoApache Shiro
  • org.apache.shiro:shiro-core
NoYesJun 17, 2026
CVE-2023-46749MEDIUM6.5
  • Apache Shiro logoApache Shiro
  • shiro
NoYesJan 15, 2024
CVE-2026-43827MEDIUM5.9
  • Apache Shiro logoApache Shiro
  • apache-activemq-6.2
NoYesMay 25, 2026
CVE-2026-23903MEDIUM5.3
  • Java logoJava
  • org.apache.shiro:shiro-core
NoYesFeb 09, 2026
CVE-2026-23901LOW1
  • Apache Shiro logoApache Shiro
  • shiro
NoYesFeb 10, 2026

Free Vulnerability Assessment

Benchmark your Cloud Security Posture

Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.

Request assessment

Get a personalized demo

Ready to see Wiz in action?

"Best User Experience I have ever seen, provides full visibility to cloud workloads."
David EstlickCISO
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
Adam FletcherChief Security Officer
"We know that if Wiz identifies something as critical, it actually is."
Greg PoniatowskiHead of Threat and Vulnerability Management