Giter Club home page Giter Club logo

cve-2022-31692's Introduction

CVE-2022-31692 Demo

Overview

A simple Spring Boot application demonstrating configuration that is vulnerable to CVE-2022-31692.

This vulnerability may attract attention due to its severity - it has a CVSS 3.x base score of 9.8 as it allows authentication bypass. The purpose of this project is to demonstrate the conditions described in the advisory, which lead to the vulnerability being applicable.

  • The application expects that Spring Security applies security to forward and include dispatcher types.
  • The application uses the AuthorizationFilter either manually or via the authorizeHttpRequests() method.
  • The application configures the FilterChainProxy to apply to forward and/or include requests (e.g. spring.security.filter.dispatcher-types = request, error, async, forward, include).
  • The application may forward or include the request to a higher privilege-secured endpoint.
  • The application configures Spring Security to apply to every dispatcher type via authorizeHttpRequests().shouldFilterAllDispatcherTypes(true)

For reference, I'm pretty sure this is the commit that addresses the vulnerability.

Demonstration

The application has three URLs:

  1. / The index page
  2. /admin An admin page, which requires the user to provide Basic auth (creds "user"/"pass") and be assigned the ROLE_ADMIN role
  3. /forward A server-side forward to the admin page

Access controls are specified via authorizeHttpRequests() in the SecurityConfig class.

.authorizeHttpRequests((authz) -> authz
	.antMatchers("/").permitAll()
	.antMatchers("/forward").permitAll()
	.antMatchers("/admin").hasAuthority("ROLE_ADMIN")
	.shouldFilterAllDispatcherTypes(true)
)

Expected behaviours

  1. User accesses / and is not authenticated (thanks to permitAll())

  2. User accesses /admin . They don't provide authentication, and the request is rejected (401 Not authorized).

  3. User accesses /admin . They provide valid authentication, but the request is still rejected (403 Unauthorised) because they do not have the required role .hasAuthority("ROLE_ADMIN").

  4. User accesses /forward. Their requests passes through the security filter chain for GET /forward, which passes as valid (thanks to permitAll()). The controller processes the request, and returns forward:/admin to the Dispatcher. As instructed by the spring.security.filter.dispatcher-types and .shouldFilterAllDispatcherTypes(true) settings, this is a FORWARD type, so should be passed through the filter chain again. This second pass through the filter results in the request being rejected (again, thanks to hasAuthority("ROLE_ADMIN")).

Actual behaviour

User accesses /forward, the request is passed through the filter chain once, and passes as valid. The forward is processed, but instead of being passed through the chain again, it is just passed as valid, and the admin page is returned.

cve-2022-31692's People

Contributors

semgrep-bot avatar spindlesec avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.