Miggo Logo

CVE-2016-9879:
Security Constraint Bypass in Spring Security

7.5

CVSS Score

Basic Information

EPSS Score
-
CWE
-
Published
9/15/2020
Updated
5/15/2024
KEV Status
No
Technology
TechnologyJava

Technical Details

CVSS Vector
CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N
Package NameEcosystemVulnerable VersionsFirst Patched Version
org.springframework.security:spring-security-coremaven< 3.2.10.RELEASE3.2.10.RELEASE
org.springframework.security:spring-security-coremaven>= 4.0.0.RELEASE, < 4.1.4.RELEASE4.1.4.RELEASE
org.springframework.security:spring-security-coremaven>= 4.2.0.RELEASE, < 4.2.1.RELEASE4.2.1.RELEASE

Vulnerability Intelligence
Miggo AIMiggo AI

Miggo AIRoot Cause Analysis

The core vulnerability stems from two key elements:

  1. DefaultHttpFirewall's pre-patch request processing that didn't detect encoded slashes in path parameters
  2. Reliance on container-specific HttpServletRequest.getPathInfo() implementations

While the Servlet API method itself isn't vulnerable, its implementation in certain containers (like WebSphere) creates the exploit condition when combined with Spring Security's unpatched path processing. The primary vulnerable Spring function is DefaultHttpFirewall.getFirewalledRequest which was modified in patched versions to add encoded slash validation.

Vulnerable functions

Only Mi**o us*rs **n s** t*is s**tion

WAF Protection Rules

WAF Rule

Sprin* S**urity *o*s not *onsi**r URL p*t* p*r*m*t*rs w**n pro**ssin* s**urity *onstr*ints. *y ***in* * URL p*t* p*r*m*t*r wit* *n *n*o*** "/" to * r*qu*st, *n *tt**k*r m*y ** **l* to *yp*ss * s**urity *onstr*int. T** root **us* o* t*is issu* is * l*

Reasoning

T** *or* vuln*r**ility st*ms *rom two k*y *l*m*nts: *. ****ult*ttp*ir*w*ll's pr*-p*t** r*qu*st pro**ssin* t**t *i*n't **t**t *n*o*** sl*s**s in p*t* p*r*m*t*rs *. R*li*n** on *ont*in*r-sp**i*i* *ttpS*rvl*tR*qu*st.**tP*t*In*o() impl*m*nt*tions W*il*