Skip to main content
CVE Vulnerability Database
Vulnerability Database/CVE-2020-13933

CVE-2020-13933: Apache Shiro Auth Bypass Vulnerability

CVE-2020-13933 is an authentication bypass vulnerability in Apache Shiro that allows attackers to circumvent security controls via crafted HTTP requests. This article covers technical details, affected versions, and mitigation.

Published:

CVE-2020-13933 Overview

CVE-2020-13933 is an authentication bypass vulnerability affecting Apache Shiro, a powerful and versatile open-source security framework for Java applications. When using Apache Shiro versions prior to 1.6.0, a specially crafted HTTP request may cause an authentication bypass, allowing attackers to access protected resources without proper authorization.

This vulnerability is particularly concerning for organizations relying on Apache Shiro for authentication and authorization in their Java-based web applications. The flaw allows remote attackers to circumvent security controls by manipulating HTTP requests, potentially gaining unauthorized access to sensitive application endpoints and data.

Critical Impact

Authentication bypass allows unauthorized access to protected resources, potentially exposing sensitive data and application functionality to unauthenticated attackers.

Affected Products

  • Apache Shiro versions prior to 1.6.0
  • Debian Linux 9.0
  • Applications using vulnerable Apache Shiro versions for authentication

Discovery Timeline

  • August 17, 2020 - CVE-2020-13933 published to NVD
  • November 21, 2024 - Last updated in NVD database

Technical Details for CVE-2020-13933

Vulnerability Analysis

The vulnerability exists in how Apache Shiro processes and validates HTTP request paths during authentication checks. Apache Shiro uses path matching to determine which security rules apply to incoming requests. The flaw allows attackers to craft malicious HTTP requests that bypass the path matching logic, effectively circumventing authentication requirements.

This authentication bypass impacts applications that rely on Shiro's URL-based security filtering. When exploited, attackers can access resources that should require authentication or specific authorization levels. The vulnerability can be exploited remotely without requiring any prior authentication or user interaction, making it particularly dangerous for internet-facing applications.

Root Cause

The root cause of CVE-2020-13933 lies in inconsistencies between how Apache Shiro normalizes and matches URL paths compared to how the underlying application server processes the same requests. This discrepancy creates a security gap where carefully constructed URLs can satisfy Shiro's path matching in one way while the application server interprets them differently, allowing requests to reach protected endpoints without triggering the expected security filters.

Attack Vector

The attack vector for this vulnerability is network-based, requiring no authentication or user interaction. An attacker can exploit this flaw by sending specially crafted HTTP requests to a vulnerable application. The attack typically involves manipulating URL path components such as:

  • Using path traversal sequences or encoded characters
  • Exploiting differences in URL normalization between Shiro and the application server
  • Crafting requests that match unprotected patterns while targeting protected resources

The exploitation technique leverages the semantic difference between how Shiro interprets request paths for security decisions versus how the backend application processes those same paths for routing.

Detection Methods for CVE-2020-13933

Indicators of Compromise

  • Unusual HTTP requests with encoded or malformed path components targeting protected endpoints
  • Access log entries showing successful requests to authenticated resources without corresponding login events
  • Requests containing path manipulation patterns such as semicolons, encoded slashes, or path traversal sequences
  • Anomalous access patterns to sensitive application areas from unauthenticated sessions

Detection Strategies

  • Monitor web server access logs for requests with unusual URL encoding or path manipulation attempts
  • Implement web application firewall (WAF) rules to detect and block common authentication bypass patterns
  • Deploy runtime application self-protection (RASP) solutions to identify unauthorized access attempts
  • Review application logs for access to protected resources without proper authentication tokens

Monitoring Recommendations

  • Enable detailed request logging including full request URIs and response codes
  • Configure alerts for access to sensitive endpoints without valid session identifiers
  • Monitor for spikes in HTTP 200 responses to protected resources from unauthenticated sources
  • Correlate authentication logs with access logs to identify bypass attempts

How to Mitigate CVE-2020-13933

Immediate Actions Required

  • Upgrade Apache Shiro to version 1.6.0 or later immediately
  • Review application access logs for signs of exploitation attempts
  • Implement additional authentication checks at the application layer as defense in depth
  • Deploy WAF rules to block known authentication bypass patterns while patching

Patch Information

Apache has addressed this vulnerability in Apache Shiro version 1.6.0. Organizations should upgrade to this version or later to remediate CVE-2020-13933. The fix ensures consistent path normalization between Shiro's security filter chain and how requests are processed by the application.

For Maven-based projects, update the Shiro dependency to version 1.6.0 or higher. Debian Linux 9.0 users should apply available security updates as announced in the Debian LTS Announcement.

Additional details and discussion can be found in the Apache Shiro Developer Mailing List.

Workarounds

  • Implement application-level authentication checks that do not rely solely on Shiro's URL filtering
  • Configure strict URL matching rules that explicitly deny access to sensitive paths rather than relying on implicit allow/deny logic
  • Deploy a reverse proxy or WAF with URL normalization to ensure consistent path handling before requests reach the application
  • Consider implementing additional authorization checks within application controllers as defense in depth
bash
# Maven dependency update example
# Update pom.xml to use Apache Shiro 1.6.0 or later
# <dependency>
#     <groupId>org.apache.shiro</groupId>
#     <artifactId>shiro-core</artifactId>
#     <version>1.6.0</version>
# </dependency>

# Verify current Shiro version in your project
mvn dependency:tree | grep shiro

Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

Default Legacy - Prefooter | Experience the World’s Most Advanced Cybersecurity Platform

Experience the Most Advanced Cybersecurity Platform

See how the world’s most intelligent, autonomous cybersecurity platform can protect your organization today and into the future.