| Gói / sản phẩm | Phiên bản bị ảnh hưởng | Phiên bản đã vá |
|---|---|---|
| passport | ≥ 2.0.0, < 2.3.0< 1.1.0 | 2.3.01.1.0 |
| @fastify/passport | ≥ 2.0.0, < 2.3.0< 1.1.0 | 2.3.01.1.0 |
The CSRF protection enforced by the @fastify/csrf-protection library, when combined with @fastify/passport, can be bypassed by network and same-site attackers.
fastify/csrf-protection implements the 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 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.
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.
Bạn đang dùng một trong các sản phẩm này? Quét site để biết có đang lộ phiên bản có lỗ hổng không.
Quét site miễn phí