SentinelOne
CVE Vulnerability Database
Vulnerability Database/CVE-2022-22968

CVE-2022-22968: Spring Framework Auth Bypass Vulnerability

CVE-2022-22968 is an authentication bypass flaw in VMware Spring Framework caused by case-sensitive field patterns in DataBinder. This article covers the technical details, affected versions, security impact, and mitigation.

Published:

CVE-2022-22968 Overview

A case sensitivity vulnerability exists in VMware Spring Framework that affects the DataBinder's disallowedFields protection mechanism. In Spring Framework versions 5.3.0 - 5.3.18, 5.2.0 - 5.2.20, and older unsupported versions, the patterns for disallowedFields on a DataBinder are case sensitive, which means a field is not effectively protected unless it is listed with both upper and lower case for the first character of the field, including upper and lower case for the first character of all nested fields within the property path.

Critical Impact

Attackers can bypass field protection mechanisms by manipulating the case of field names, potentially allowing unauthorized data binding to sensitive object properties that were intended to be protected.

Affected Products

  • VMware Spring Framework 5.3.0 - 5.3.18
  • VMware Spring Framework 5.2.0 - 5.2.20
  • NetApp Active IQ Unified Manager (Linux, VMware vSphere, Windows)
  • NetApp Cloud Secure Agent
  • NetApp MetroCluster Tiebreaker
  • NetApp Snap Creator Framework
  • NetApp SnapManager (Oracle, SAP)
  • Oracle MySQL Enterprise Monitor

Discovery Timeline

  • 2022-04-14 - CVE CVE-2022-22968 published to NVD
  • 2024-11-21 - Last updated in NVD database

Technical Details for CVE-2022-22968

Vulnerability Analysis

This vulnerability is classified under CWE-178 (Improper Handling of Case Sensitivity). The Spring Framework's DataBinder component is designed to bind request parameters to Java objects. To protect sensitive fields from being bound (such as security-related properties), developers configure disallowedFields patterns. However, due to the case-sensitive nature of this matching mechanism, an attacker can bypass these protections by simply changing the case of the first character in field names.

For instance, if a developer disallows the field admin from being bound, an attacker could still bind to the Admin property by submitting a request with the capitalized variant. This affects all nested fields within property paths as well, requiring developers to enumerate both case variants for comprehensive protection.

Root Cause

The root cause lies in the DataBinder's string comparison logic for field name matching. The disallowedFields patterns use exact string matching that does not account for case variations in Java property names. Since Java beans follow JavaBeans naming conventions where property names can be accessed with different capitalizations (due to getter/setter method naming), this creates a bypass vector when only one case variant is blocked.

Attack Vector

The attack is network-accessible and requires no authentication or user interaction. An attacker can craft HTTP requests containing form parameters or JSON fields with alternative capitalizations of protected field names. When these requests are processed by a vulnerable Spring application, the DataBinder will bind values to fields that should have been protected, potentially allowing:

  • Modification of security-sensitive object properties
  • Privilege escalation through manipulation of role or permission fields
  • Business logic bypass by altering protected state variables

The exploitation is straightforward and requires only knowledge of the target application's data model and which fields the developers intended to protect.

Detection Methods for CVE-2022-22968

Indicators of Compromise

  • HTTP requests containing form parameters or JSON fields with unusual capitalization patterns (e.g., Admin, ROLE, isAdmin vs isadmin)
  • Repeated requests varying only in parameter name casing, indicating probing attempts
  • Unexpected modifications to object properties that should be immutable or protected

Detection Strategies

  • Review application logs for requests containing mixed-case variations of known sensitive field names
  • Implement Web Application Firewall (WAF) rules to detect requests with suspicious parameter name patterns
  • Audit Spring application code for DataBinder configurations using disallowedFields that may not account for case variations
  • Deploy runtime application self-protection (RASP) solutions to monitor data binding operations

Monitoring Recommendations

  • Monitor Spring application logs for unexpected property binding warnings or errors
  • Track changes to sensitive object fields that correlate with incoming HTTP requests
  • Establish baselines for normal request patterns and alert on deviations involving parameter name casing anomalies
  • Implement SentinelOne Singularity XDR to correlate web application activity with endpoint behavior for comprehensive threat detection

How to Mitigate CVE-2022-22968

Immediate Actions Required

  • Upgrade Spring Framework to version 5.3.19 or later (for 5.3.x branch) or 5.2.21 or later (for 5.2.x branch)
  • Review all DataBinder configurations to ensure disallowedFields patterns include both upper and lower case variants
  • Implement allowlisting of permitted fields using setAllowedFields() instead of blocklisting with setDisallowedFields() where possible
  • Apply patches from affected downstream vendors (NetApp, Oracle) as they become available

Patch Information

VMware has released patched versions of Spring Framework. Refer to the VMware Security Advisory for upgrade instructions and version-specific guidance. Additional advisories are available from NetApp Security Advisory NTAP-20220602-0004 and the Oracle CPU July 2022 Security Alert for their respective affected products.

Workarounds

  • Configure disallowedFields with both case variants for each protected field (e.g., both admin and Admin)
  • Use setAllowedFields() to explicitly permit only expected fields, providing a more secure allowlist approach
  • Implement custom input validation at the controller level to reject requests with unexpected parameter name casing
  • Consider using @InitBinder methods with explicit field allowlisting rather than relying on disallowed field patterns
bash
# Example Spring configuration workaround
# In your @InitBinder method, use allowlisting instead of blocklisting:
# binder.setAllowedFields("name", "email", "address");
# This ensures only explicitly permitted fields can be bound,
# regardless of case sensitivity issues in disallowedFields

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

Experience the World’s Most Advanced Cybersecurity Platform

Experience the World’s Most Advanced Cybersecurity Platform

See how our intelligent, autonomous cybersecurity platform can protect your organization now and into the future.