Spring Security Advisories

CVE-2016-5007 Spring Security / MVC Path Matching Inconsistency

MEDIUM | JULY 07, 2016 | CVE-2016-5007

Description

Both Spring Security and the Spring Framework rely on URL pattern mappings for authorization and for mapping requests to controllers respectively.

Differences in the strictness of the pattern matching mechanisms, for example with regards to space trimming in path segments, can lead Spring Security to not recognize certain paths as not protected that are in fact mapped to Spring MVC controllers that should be protected.

The problem is compounded by the fact that the Spring Framework provides richer features with regards to pattern matching as well as by the fact that pattern matching in each Spring Security and the Spring Framework can easily be customized creating additional differences.

Affected Spring Products and Versions

  • Spring Security 3.2.x, 4.0.x, 4.1.0
  • Spring Framework 3.2.x, 4.0.x, 4.1.x, 4.2.x
  • Other unsupported versions are also affected

Mitigation

Users of affected versions should apply the following mitigation:

  • To address these issues comprehensively Spring Security provides URL authorization that can delegate pattern matching to the Spring Framework. To take advantage of this option applications should upgrade to <strong>Spring Security 4.1.1+</strong> and <strong>Spring Framework 4.3.1+</strong> and use the <a href='http://docs.spring.io/spring-security/site/docs/4.1.x/reference/htmlsingle/#mvc-requestmatcher'>MvcRequestMatcher</a>.
  • Starting with Spring Framework 4.3.0+ the <code>AntPathMatcher</code> is configured with <code>trimTokens</code> set to “false” which aligns with Spring Security. Therefore simply using Spring Framework 4.3.0+ can eliminate some causes of path matching inconsistencies.
  • Users of Spring Framework 3.2.x, 4.0.x, 4.1.x, 4.2.x can use the <a href='http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#mvc-config-path-matching'>MVC Java config</a> or the <a href='http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#mvc-config-path-matching'>MVC namespace</a> to set <code>trimTokens</code> property of <code>AntPathMatcher</code> to “false”.
  • In addition, applications should always complement URL-based authorization with additional authorization at the business layer of the application using one of Spring Security’s mechanisms such as adding <code>@Secured</code> annotations.

Credit

The vulnerability was reported responsibly by Clément Notin from INTRINSEC.

History

  • 2016-July-07: Initial vulnerability report published

Get ahead

VMware offers training and certification to turbo-charge your progress.

Learn more

Get support

Tanzu Spring Runtime offers support and binaries for OpenJDK™, Spring, and Apache Tomcat® in one simple subscription.

Learn more

Upcoming events

Check out all the upcoming events in the Spring community.

View all