🛡️ CVE-2023-29020 — passport
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)andclearSessionIgnoreFields (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
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:N
Affected Packages
| Software | From version | Fixed in |
|---|---|---|
| @fastify/passport | — | — |
| passport | 2.0.0 | 2.3.0 |
References
Similar Threats
- High CVE-2023-29019
More CVE 2023 advisories
Browse all of CVE 2023 in the advisory index.
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.