CVE-2026-23901
Apache Shiro: Brute force attack possible to determine valid user names
Reported by apache · Published February 10, 2026
shiro-core is fixed in 2.1.0 and 2.0.7 (Maven Central)
Observable Timing Discrepancy vulnerability in Apache Shiro. This issue affects Apache Shiro: from 1.*, 2.* before 2.0.7. Users are recommended to upgrade to version 2.0.7 or later, which fixes the issue. Prior to Shiro 2.0.7, code paths for non-existent vs. existing users are different enough, that a brute-force attack may be able to tell, by timing the requests only, determine if the request failed because of a non-existent user vs. wrong password. The most likely attack vector is a local attack only. Shiro security model https://shiro.apache.org/security-model.html#username_enumeration discusses this as well. Typically, brute force attack can be mitigated at the infrastructure level.
Fixed versions
Upgrade to a fixed version or later. Language registries are listed first, then Linux distributions, then vendor products.
| Package | Ecosystem | Fixed in |
|---|---|---|
| org.apache.shiro:shiro-core | Maven Central | 2.1.0, 2.0.7 |
| neo4j-5.26 | Chainguard | 5.26.21-r2 |
| neo4j-5.26 | Wolfi | 5.26.21-r2 |
| neo4j-2026.01 | Chainguard | 2026.01.4-r0 |
| neo4j-2026.01 | Wolfi | 2026.01.4-r0 |
| apache-jena-fuseki | Chainguard | 6.0.0-r2 |
| shiro | apache | 2.0.7 |
Risk scores
Affected products
| Vendor | Product | Versions |
|---|---|---|
| Apache Software Foundation | Apache Shiro | 0 |
| chainguard | neo4j-5.26 | 0 |
| Maven | org.apache.shiro:shiro-core | 0 |
| Apache Software Foundation | Apache Shiro | 0 |
| wolfi | neo4j-5.26 | 0 |
| chainguard | neo4j-2026.01 | 0 |
| wolfi | neo4j-2026.01 | 0 |
| chainguard | apache-jena-fuseki | 0 |
Timeline
- Feb 8, 2026 PoC Published (3 in total, the first dated here)
- Feb 10, 2026 CVE Published
- Feb 10, 2026 EPSS Score (30 in total, the first dated here)
- Feb 10, 2026 CVE Updated
- Mar 17, 2026 Security Advisory
- Mar 22, 2026 Coalition ESS Score (2 in total, the first dated here)
Query this with the API
The same record, from the CLI:
vulnetix vdb vuln CVE-2026-23901
vulnetix vdb fixes CVE-2026-23901
Or with curl, using the org id and key from your account page:
curl -s -H "Authorization: ApiKey ${VULNETIX_ORG_ID}:${VULNETIX_API_KEY}" \
"https://api.vdb.vulnetix.com/v2/vuln/CVE-2026-23901/fixes/registry"
The Community plan is free and allows 50 queries a day. Get a free API key · API quickstart