CVE-2025-31129
jooby-pac4j: deserialization of untrusted data
Jooby is a web framework for Java and Kotlin. The pac4j io.jooby.internal.pac4j.SessionStoreImpl#get module deserializes untrusted data. This vulnerability is fixed in 2.17.0 (2.x) and 3.7.0 (3.x).
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- None
- User interaction
- Required
What an attacker can affect
- Confidentiality
- High
- Integrity
- High
- Availability
- High
Exploit likelihood
What each source reports
CVE List Score used
8.8
jooby-pac4j: deserialization of untrusted data
Jooby is a web framework for Java and Kotlin. The pac4j io.jooby.internal.pac4j.SessionStoreImpl#get module deserializes untrusted data. This vulnerability is fixed in 2.17.0 (2.x) and 3.7.0 (3.x).
- Record
CVE-2025-31129- CVSS 3.1
- 8.8 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H - Weakness
- CWE-502
- Updated
- 2026-11-02
EUVDEUVD-2025-9309
8.8
Jooby is a web framework for Java and Kotlin. The pac4j io.jooby.internal.pac4j.SessionStoreImpl#get module deserializes untrusted data. This vulnerability is fixed in 2.17.0 (2.x) and 3.7.0 (3.x).
- Record
EUVD-2025-9309- CVSS 3.1
- 8.8 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
GitHub AdvisoriesGHSA-7c5v-895v-w4q5
8.8
jooby-pac4j: deserialization of untrusted data
Impact
Versions after 2.x and before 3.x of io.jooby:jooby-pac4j can cause deserialization of untrusted data
Patches
- 2.17.0 (2.x)
- 3.7.0 (3.x)
Workarounds
- Not using io.jooby:jooby-pac4j until it gets patches.
- Check what values you put/save on session
References
Version 2.x:
Cause
In module pac4j io.jooby.internal.pac4j.SessionStoreImpl#get , it is used to handle sessions , and trying to get key value. In strToObject function ,it's trying to deserialize value when value starts with "b64~" , which might cause deserialization of untrusted data.
modules/jooby-pac4j/src/main/java/io/jooby/internal/pac4j/SessionStoreImpl.java
Here's a small demo using SessionStoreImpl#get to handle sessions ,and user can pass parameters.
And following below is exploiting successfully(execute calculator)
- Record
GHSA-7c5v-895v-w4q5- CVSS 3.1
- 8.8 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H - Weakness
- CWE-502
- Updated
- 2026-11-02
NVD
8.8
Jooby is a web framework for Java and Kotlin. The pac4j io.jooby.internal.pac4j.SessionStoreImpl#get module deserializes untrusted data. This vulnerability is fixed in 2.17.0 (2.x) and 3.7.0 (3.x).
- Record
CVE-2025-31129- CVSS 3.1
- 8.8 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H - Weakness
- CWE-502
- Updated
- 2026-11-02
OSV
8.8
jooby-pac4j: deserialization of untrusted data
Jooby is a web framework for Java and Kotlin. The pac4j io.jooby.internal.pac4j.SessionStoreImpl#get module deserializes untrusted data. This vulnerability is fixed in 2.17.0 (2.x) and 3.7.0 (3.x).
- Record
CVE-2025-31129- CVSS 3.1
- 8.8 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H - Weakness
- CWE-502
- Updated
- 2026-11-02
OSVGHSA-7c5v-895v-w4q5
8.8
jooby-pac4j: deserialization of untrusted data
Impact
Versions after 2.x and before 3.x of io.jooby:jooby-pac4j can cause deserialization of untrusted data
Patches
- 2.17.0 (2.x)
- 3.7.0 (3.x)
Workarounds
- Not using io.jooby:jooby-pac4j until it gets patches.
- Check what values you put/save on session
References
Version 2.x:
Cause
In module pac4j io.jooby.internal.pac4j.SessionStoreImpl#get , it is used to handle sessions , and trying to get key value. In strToObject function ,it's trying to deserialize value when value starts with "b64~" , which might cause deserialization of untrusted data.
modules/jooby-pac4j/src/main/java/io/jooby/internal/pac4j/SessionStoreImpl.java
Here's a small demo using SessionStoreImpl#get to handle sessions ,and user can pass parameters.
And following below is exploiting successfully(execute calculator)
- Record
GHSA-7c5v-895v-w4q5- CVSS 3.1
- 8.8 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H - Weakness
- CWE-502
- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
io.jooby:jooby-pac4jMaven |
before 2.17.0 | 2.17.0 |
io.jooby:jooby-pac4jMaven |
3.0.0.M1 up to 3.7.0 | 3.7.0 |
io.jooby:jooby-pac4jMaven |
before 2.17.0, plus listed versions 2.10.02.11.02.12.02.13.02.14.0 Show 37 moreShow less2.14.12.14.22.15.02.15.12.16.02.16.12.16.22.16.32.16.42.4.02.5.02.5.12.6.02.6.12.6.22.7.02.7.12.7.22.7.32.8.02.8.12.8.102.8.22.8.32.8.42.8.52.8.62.8.72.8.82.8.92.9.02.9.12.9.22.9.32.9.42.9.52.9.6 |
2.17.0 |
io.jooby:jooby-pac4jMaven |
3.0.0.M1 up to 3.7.0, plus listed versions 3.0.03.0.0.M113.0.0.M23.0.0.M33.0.0.M4 Show 43 moreShow less3.0.0.M53.0.0.M63.0.0.M73.0.0.M93.0.13.0.103.0.23.0.33.0.43.0.53.0.63.0.73.0.83.0.93.1.03.1.13.1.23.1.33.1.43.2.03.2.13.2.23.2.33.2.43.2.53.2.63.2.73.2.83.2.93.3.03.3.13.4.03.4.13.4.23.4.33.5.03.5.13.5.23.5.33.5.43.5.53.6.03.6.1 |
3.7.0 |
Public exploits
Links only. Every CVE stores no exploit code.
| Source | Link | Date |
|---|---|---|
| PoC in GitHub | cwm1123/CVE-2025-31129 | 2025-04-01 |
History
| Recorded | Changed | Sources |
|---|---|---|
| first indexed | CVE List, EUVD, GitHub Advisories, NVD, OSV, PoC in GitHub |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2025-31129 is a high vulnerability (CVSS 8.8) in Jooby-project Jooby, published March 31, 2025. Public exploit code exists. EPSS puts the chance of exploitation in the next 30 days at 0.66%, the 51st percentile. Fixed in io.jooby:jooby-pac4j 2.17.0.
References
github.com/jooby-project/jooby/security/advisories/GHSA-7c5v-895v-w4q5
github.com/jooby-project/jooby/commit/3e13562cf36d7407813eae464e0f4b598de15692
github.com/jooby-project/jooby/blob/v2.x/modules/jooby-pac4j/src/main/java/io/jooby/internal/pac4j/SessionStoreImpl.java
github.com/jooby-project/jooby/blob/v3.6.1/modules/jooby-pac4j/src/main/java/io/jooby/internal/pac4j/SessionStoreImpl.java
nvd.nist.gov/vuln/detail/CVE-2025-31129
github.com/advisories/GHSA-7c5v-895v-w4q5
github.com/CVEProject/cvelistV5/tree/main/cves/2025/31xxx/CVE-2025-31129.json
github.com/jooby-project/jooby