🛡️ CVE-2023-29020 — passport

🟡 CVSS 6.5 — Medium ✅ No Known Exploit CWE-352 NVD
6.5
CVSS Score
0 Low4 Medium7 High9 Critical10

Description

CSRF token fixation in fastify-passport

The [CSRF](https://owasp.org/www-community/attacks/csrf) protection enforced by the @fastify/csrf-protection library, when combined with @fastify/passport, can be bypassed by network and same-site attackers.

Details

fastify/csrf-protection implements the [synchronizer token pattern](https://cheatsheetseries.owasp.org/cheatsheets/Cross-Site_Request_Forgery_Prevention_Cheat_Sheet.html#synchronizer-token-pattern) (using plugins @fastify/session and @fastify/secure-session) by storing a random value used for CSRF token generation in the _csrf attribute of a user's session.

The @fastify/passport library does not clear the session object upon authentication, preserving the _csrf attribute between pre-login and authenticated sessions. Consequently, CSRF tokens generated before authentication are still valid. Network and [same-site attackers](https://canitakeyoursubdomain.name/) can thus obtain a CSRF token for their pre-session, fixate that pre-session in the victim's browser via cookie tossing, and then perform a CSRF attack after the victim authenticates.

Fix

As a solution, newer versions of @fastify/passport include the configuration options

  • clearSessionOnLogin (default: true) and
  • clearSessionIgnoreFields (default: ['session'])

to clear all the session attributes by default, preserving those explicitly defined in clearSessionIgnoreFields.

Credits

  • Pedro Adão (@pedromigueladao), [Instituto Superior Técnico, University of Lisbon](https://tecnico.ulisboa.pt/)
  • Marco Squarcina (@lavish), [Security & Privacy Research Unit, TU Wien](https://secpriv.wien/)

How this vulnerability can be exploited

This issue can be reached over the network, attack complexity is low, an attacker needs no privileges on the target. A user must be tricked into taking some action. The scope is unchanged, so the impact stays within the vulnerable component. Rated impact: confidentiality none, integrity high, availability none.

Weakness class

CVE-2023-29020 is classified as CWE-352: Cross-Site Request Forgery (CSRF). A state-changing request is accepted without proof it was intended, so another site can trigger it using the victim's session.

Affected software

CVE-2023-29020 is recorded against 2 packages.

  • @fastify/passport
  • passport (from 2.0.0 up to 2.3.0)

Timeline and source

Published on 21 April 2023 and last revised on 8 November 2023. No public exploit is currently recorded for this entry. A vendor advisory or fix has been published. Record sourced from NVD.

References

github.com (Web)
nvd.nist.gov (Advisory)
github.com (Web)
cheatsheetseries.owasp.org (Web)
github.com (Package)
owasp.org (Web)

Details

Severity Medium
CVSS Score 6.5
CVSS Vector CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:N
CWE CWE-352
Public Exploit ✅ No
Source NVD
Published 2023-04-21
Updated 2026-08-12
Modified 2023-11-08

Affected Packages

Software From version Fixed in
@fastify/passport
passport 2.0.0 2.3.0

Similar Threats

Vulnerability Monitoring

Track new vulnerabilities in passport

CVE-2023-29020 is rated CVSS 6.5 Medium. BotEraser monitors your WordPress installation and notifies you when software you use appears in our vulnerability database.

Set Up Free Alerts →

No credit card required  ·  Results in minutes

ⓘ Data Notice: The information presented above has been compiled from publicly available internet sources. Boteraser aggregates this data solely for informational purposes and does not independently classify, evaluate, or endorse any findings about the vulnerabilities listed. The accuracy and completeness of this information is the sole responsibility of the original publishers. Boteraser and its operators accept no liability for any decisions made based on this data.