# CVE-2026-23903: Apache Shiro: Auth bypass when accessing static files only on case-insensitive filesystems

> Attackers can bypass authentication filters for static files on case-insensitive filesystems by varying filename case, requiring an upgrade to Apache Shiro.

- **Severity:** Medium 5.3 (`CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N`)
- **Exploited in the wild:** Not known
- **Login needed:** Not needed
- **Attackable:** Over the internet
- **Victim action needed:** Not needed
- **Fix available:** Yes
- **Published:** 9 Feb 2026
- **Updated:** 20 Aug 2026
- **Also known as:** CLEANSTART-2026-KG68344, DEBIAN-CVE-2026-23903, ECHO-b110-6f36-d7d3, GHSA-c244-p6m5-vqj6, MINI-8hqw-44pm-cw2q, MINI-cprq-98f5-2h6r, MINI-p37m-wvgh-qcqc, MINI-r3qx-8rf6-h35p, MINI-r5fc-6j23-x6j6, MINI-xqxj-5rgj-c594, UBUNTU-CVE-2026-23903

## What is CVE-2026-23903?

CVE-2026-23903 is a medium-severity authentication bypass vulnerability in Apache Shiro, published on 9 Feb 2026. An attacker can exploit it over the internet without logging in, with no action from the victim.

### Official description

Authentication Bypass by Alternate Name vulnerability in Apache Shiro.

This issue affects Apache Shiro: before 2.0.7.

Users are recommended to upgrade to version 2.0.7, which fixes the issue.

The issue only effects static files. If static files are served from a case-insensitive filesystem,
such as default macOS setup, static files may be accessed by varying the case of the filename in the request.
If only lower-case (common default) filters are present in Shiro, they may be bypassed this way.

Shiro 2.1.0 and later has a new parameters to remediate this issue
shiro.ini: filterChainResolver.caseInsensitive = true
application.properties: shiro.caseInsensitive=true

Shiro 3.0.0 and later makes this the default in shiro.ini-based configurations.
Shiro 3.0.1 and later makes this the default in all configurations, including programmatic and Spring / Spring Boot.

Weakness: CWE-289 (Authentication Bypass by Alternate Name)

## Which versions are affected by CVE-2026-23903?

2 open source packages ship an affected version, including org.apache.shiro:shiro-spring. It affects 1 product.


| Package | Ecosystem | Affected | Fixed in |
| --- | --- | --- | --- |
| `org.apache.shiro:shiro-spring` | Maven | All versions | 2.1.0 |
| `org.apache.shiro:shiro-spring` | Maven | All versions | 2.1.0 |

Products: Apache Shiro.

## How do I fix CVE-2026-23903?

Upgrade org.apache.shiro:shiro-spring to 2.1.0 or later.

## Is CVE-2026-23903 being exploited?

There is no known exploitation of CVE-2026-23903 in the wild and no public exploit code.

## Other vulnerabilities in Apache Shiro

- [CVE-2023-34478](https://insights.sbomify.com/CVE-2023-34478/): Path Traversal in Apache Shiro (critical 9.8)
- [CVE-2022-40664](https://insights.sbomify.com/CVE-2022-40664/): Authentication Bypass Vulnerability in Shiro when forwarding or including via RequestDispatcher (critical 9.8)
- [CVE-2022-32532](https://insights.sbomify.com/CVE-2022-32532/): Authentication Bypass Vulnerability (critical 9.8)
- [CVE-2021-41303](https://insights.sbomify.com/CVE-2021-41303/): Apache Shiro vulnerable to a specially crafted HTTP request causing an authentication bypass (critical 9.8)
- [CVE-2020-17523](https://insights.sbomify.com/CVE-2020-17523/): Authentication bypass in Apache Shiro (critical 9.8)

## Fix prompt for AI coding agents

```text
Check this codebase for CVE-2026-23903 and fix it if it is affected.

What it is: CVE-2026-23903 is a medium-severity authentication bypass vulnerability in Apache Shiro, published on 9 Feb 2026. An attacker can exploit it over the internet without logging in, with no action from the victim.
Exploitation: There is no known exploitation of CVE-2026-23903 in the wild and no public exploit code.

Affected packages and fixed versions:
- org.apache.shiro:shiro-spring (Maven): affected all versions; fixed in 2.1.0
- org.apache.shiro:shiro-spring (Maven): affected all versions; fixed in 2.1.0

Task:
1. Search the dependency manifests and lockfiles (for example package.json, package-lock.json, requirements.txt, poetry.lock, uv.lock, pom.xml, build.gradle, go.mod, Cargo.lock, Gemfile.lock) and any Dockerfiles for the affected packages, including transitive dependencies.
2. If an affected version is in use, upgrade it to the fixed version for its release line with the project's package manager, so the lockfile is regenerated. Prefer the smallest upgrade that fixes it.
3. If there is no fix, or the upgrade would break the build, do not guess: explain the risk and the safest workaround instead.
4. Run the tests and summarise what changed and why.
5. If nothing in the project is affected, say so and change nothing.

Reference: https://insights.sbomify.com/CVE-2026-23903/ (Markdown: https://insights.sbomify.com/CVE-2026-23903/index.md)
```

## Sources

- CVE record: https://www.cve.org/CVERecord?id=CVE-2026-23903
- NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-23903
- OSV: https://osv.dev/vulnerability/CVE-2026-23903

---
From sbomify Insights: https://insights.sbomify.com/CVE-2026-23903/
Summaries are generated and may contain mistakes; the official description above is the record.
