The vulnerability is an authentication bypass that occurs when Apache Shiro is used on a case-insensitive filesystem, such as default installations of Windows or macOS. The root cause lies in the org.apache.shiro.util.AntPathMatcher.matchStrings method, which performed case-sensitive path matching by default. When a security filter was configured for a lower-case path (e.g., /secret.txt), an attacker could request the same file with a different capitalization (e.g., /SECRET.TXT). The case-insensitive filesystem would serve the resource, but Shiro's case-sensitive matcher would fail to match the security rule, thus bypassing the intended access control.
The patch addresses this by introducing a caseInsensitive boolean property. The core change is within the AntPathMatcher.matchStrings method, which now uses a checkCase helper function to convert characters to lowercase before comparison if the caseInsensitive flag is enabled. This ensures that path matching can be configured to behave consistently with the underlying filesystem.
The analysis identified org.apache.shiro.util.AntPathMatcher.matchStrings as the primary vulnerable function because it contains the flawed comparison logic. The public-facing org.apache.shiro.util.AntPathMatcher.matches is also included as it is the direct entry point to the vulnerable code. Finally, org.apache.shiro.web.filter.mgt.PathMatchingFilterChainResolver.getChain is identified as a key function in the exploit path, as it is responsible for using the vulnerable path matcher to apply security filters to web requests.