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

> Attackers can bypass security constraints in Spring Security by adding encoded path parameters to requests, potentially accessing protected resources.

- **Severity:** High 7.5 (`CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N`)
- **Exploited in the wild:** Not known
- **Login needed:** Not needed
- **Attackable:** Over the internet
- **Victim action needed:** Not needed
- **Fix available:** Yes
- **Published:** 6 Jan 2017
- **Updated:** 6 Aug 2024
- **Also known as:** GHSA-v35c-49j6-q8hq

## What is CVE-2016-9879?

CVE-2016-9879 is a high-severity vulnerability in Ibm Websphere Application Server, published on 6 Jan 2017. An attacker can exploit it over the internet without logging in, with no action from the victim.

### Official description

An issue was discovered in Pivotal Spring Security before 3.2.10, 4.1.x before 4.1.4, and 4.2.x before 4.2.1. Spring Security does not consider URL path parameters when processing security constraints. By adding a URL path parameter with an encoded "/" to a request, an attacker may be able to bypass a security constraint. The root cause of this issue is a lack of clarity regarding the handling of path parameters in the Servlet Specification. Some Servlet containers include path parameters in the value returned for getPathInfo() and some do not. Spring Security uses the value returned by getPathInfo() as part of the process of mapping requests to security constraints. The unexpected presence of path parameters can cause a constraint to be bypassed. Users of Apache Tomcat (all current versions) are not affected by this vulnerability since Tomcat follows the guidance previously provided by the Servlet Expert group and strips path parameters from the value returned by getContextPath(), getServletPath(), and getPathInfo(). Users of other Servlet containers based on Apache Tomcat may or may not be affected depending on whether or not the handling of path parameters has been modified. Users of IBM WebSphere Application Server 8.5.x are known to be affected. Users of other containers that implement the Servlet specification may be affected.

Weakness: CWE-417

## Which versions are affected by CVE-2016-9879?

6 open source packages ship an affected version, including org.springframework.security:spring-security-core. It affects 2 products.


| Package | Ecosystem | Affected | Fixed in |
| --- | --- | --- | --- |
| `org.springframework.security:spring-security-core` | Maven | All versions | 3.2.10.RELEASE |
| `org.springframework.security:spring-security-core` | Maven | All versions | 3.2.10.RELEASE |
| `org.springframework.security:spring-security-core` | Maven | From 4.0.0.RELEASE | 4.1.4.RELEASE |
| `org.springframework.security:spring-security-core` | Maven | From 4.0.0.RELEASE | 4.1.4.RELEASE |
| `org.springframework.security:spring-security-core` | Maven | From 4.2.0.RELEASE | 4.2.1.RELEASE |
| `org.springframework.security:spring-security-core` | Maven | From 4.2.0.RELEASE | 4.2.1.RELEASE |

Products: Ibm Websphere Application Server, Vmware Spring Security.

## How do I fix CVE-2016-9879?

Upgrade org.springframework.security:spring-security-core to a fixed version for your release line: 3.2.10.RELEASE, 4.1.4.RELEASE or 4.2.1.RELEASE.

## Is CVE-2016-9879 being exploited?

There is no known exploitation of CVE-2016-9879 in the wild and no public exploit code.

## Other vulnerabilities in Ibm Websphere Application Server

- [CVE-2015-1920](https://insights.sbomify.com/CVE-2015-1920/): Code injection in n/a (critical 10.0)
- [CVE-2013-0462](https://insights.sbomify.com/CVE-2013-0462/): Other in n/a (critical 10.0)
- [CVE-2011-1377](https://insights.sbomify.com/CVE-2011-1377/): Security feature bypass in n/a (critical 10.0)
- [CVE-2010-3186](https://insights.sbomify.com/CVE-2010-3186/): Other in n/a (critical 10.0)
- [CVE-2009-1899](https://insights.sbomify.com/CVE-2009-1899/): Information disclosure in n/a (critical 10.0)

## Fix prompt for AI coding agents

```text
Check this codebase for CVE-2016-9879 and fix it if it is affected.

What it is: CVE-2016-9879 is a high-severity vulnerability in Ibm Websphere Application Server, published on 6 Jan 2017. An attacker can exploit it over the internet without logging in, with no action from the victim.
Exploitation: There is no known exploitation of CVE-2016-9879 in the wild and no public exploit code.

Affected packages and fixed versions:
- org.springframework.security:spring-security-core (Maven): affected all versions; fixed in 3.2.10.RELEASE
- org.springframework.security:spring-security-core (Maven): affected all versions; fixed in 3.2.10.RELEASE
- org.springframework.security:spring-security-core (Maven): affected from 4.0.0.RELEASE; fixed in 4.1.4.RELEASE
- org.springframework.security:spring-security-core (Maven): affected from 4.0.0.RELEASE; fixed in 4.1.4.RELEASE
- org.springframework.security:spring-security-core (Maven): affected from 4.2.0.RELEASE; fixed in 4.2.1.RELEASE
- org.springframework.security:spring-security-core (Maven): affected from 4.2.0.RELEASE; fixed in 4.2.1.RELEASE

Task:
1. Search the dependency manifests and lockfiles (for example package.json, package-lock.json, requirements.txt, poetry.lock, uv.lock, pom.xml, build.gradle, go.mod, Cargo.lock, Gemfile.lock) and any Dockerfiles for the affected packages, including transitive dependencies.
2. If an affected version is in use, upgrade it to the fixed version for its release line with the project's package manager, so the lockfile is regenerated. Prefer the smallest upgrade that fixes it.
3. If there is no fix, or the upgrade would break the build, do not guess: explain the risk and the safest workaround instead.
4. Run the tests and summarise what changed and why.
5. If nothing in the project is affected, say so and change nothing.

Reference: https://insights.sbomify.com/CVE-2016-9879/ (Markdown: https://insights.sbomify.com/CVE-2016-9879/index.md)
```

## Sources

- CVE record: https://www.cve.org/CVERecord?id=CVE-2016-9879
- NVD: https://nvd.nist.gov/vuln/detail/CVE-2016-9879
- OSV: https://osv.dev/vulnerability/CVE-2016-9879

---
From sbomify Insights: https://insights.sbomify.com/CVE-2016-9879/
Summaries are generated and may contain mistakes; the official description above is the record.
