2023-04-24 12:24:31 +02:00
{
"id" : "CVE-2023-29020" ,
"sourceIdentifier" : "security-advisories@github.com" ,
"published" : "2023-04-21T23:15:20.267" ,
2024-12-08 03:06:42 +00:00
"lastModified" : "2024-11-21T07:56:24.500" ,
"vulnStatus" : "Modified" ,
2024-07-14 02:06:08 +00:00
"cveTags" : [ ] ,
2023-04-24 12:24:31 +02:00
"descriptions" : [
{
"lang" : "en" ,
"value" : "@fastify/passport is a port of passport authentication library for the Fastify ecosystem. The CSRF (Cross-Site Request Forger) protection enforced by the `@fastify/csrf-protection` library, when combined with `@fastify/passport` in affected versions, 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)` and `clearSessionIgnoreFields (default: ['passport', 'session'])` to clear all the session attributes by default, preserving those explicitly defined in `clearSessionIgnoreFields`."
}
] ,
"metrics" : {
"cvssMetricV31" : [
2023-05-03 18:00:27 +02:00
{
2024-12-08 03:06:42 +00:00
"source" : "security-advisories@github.com" ,
"type" : "Secondary" ,
2023-05-03 18:00:27 +02:00
"cvssData" : {
"version" : "3.1" ,
"vectorString" : "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:N" ,
2024-12-08 03:06:42 +00:00
"baseScore" : 6.5 ,
"baseSeverity" : "MEDIUM" ,
2023-05-03 18:00:27 +02:00
"attackVector" : "NETWORK" ,
"attackComplexity" : "LOW" ,
"privilegesRequired" : "NONE" ,
"userInteraction" : "REQUIRED" ,
"scope" : "UNCHANGED" ,
"confidentialityImpact" : "NONE" ,
"integrityImpact" : "HIGH" ,
2024-12-08 03:06:42 +00:00
"availabilityImpact" : "NONE"
2023-05-03 18:00:27 +02:00
} ,
"exploitabilityScore" : 2.8 ,
"impactScore" : 3.6
} ,
2023-04-24 12:24:31 +02:00
{
2024-12-08 03:06:42 +00:00
"source" : "nvd@nist.gov" ,
"type" : "Primary" ,
2023-04-24 12:24:31 +02:00
"cvssData" : {
"version" : "3.1" ,
"vectorString" : "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:N" ,
2024-12-08 03:06:42 +00:00
"baseScore" : 6.5 ,
"baseSeverity" : "MEDIUM" ,
2023-04-24 12:24:31 +02:00
"attackVector" : "NETWORK" ,
"attackComplexity" : "LOW" ,
"privilegesRequired" : "NONE" ,
"userInteraction" : "REQUIRED" ,
"scope" : "UNCHANGED" ,
"confidentialityImpact" : "NONE" ,
"integrityImpact" : "HIGH" ,
2024-12-08 03:06:42 +00:00
"availabilityImpact" : "NONE"
2023-04-24 12:24:31 +02:00
} ,
"exploitabilityScore" : 2.8 ,
"impactScore" : 3.6
}
]
} ,
"weaknesses" : [
{
2024-12-08 03:06:42 +00:00
"source" : "security-advisories@github.com" ,
"type" : "Secondary" ,
2023-05-03 18:00:27 +02:00
"description" : [
{
"lang" : "en" ,
"value" : "CWE-352"
2024-12-08 03:06:42 +00:00
} ,
{
"lang" : "en" ,
"value" : "CWE-384"
2023-05-03 18:00:27 +02:00
}
]
} ,
{
2024-12-08 03:06:42 +00:00
"source" : "nvd@nist.gov" ,
"type" : "Primary" ,
2023-04-24 12:24:31 +02:00
"description" : [
{
"lang" : "en" ,
"value" : "CWE-352"
}
]
}
] ,
2023-05-03 18:00:27 +02:00
"configurations" : [
{
"nodes" : [
{
"operator" : "OR" ,
"negate" : false ,
"cpeMatch" : [
{
"vulnerable" : true ,
"criteria" : "cpe:2.3:a:fastify:passport:*:*:*:*:*:node.js:*:*" ,
"versionEndExcluding" : "1.1.0" ,
"matchCriteriaId" : "3F071BA9-FBA0-4860-9B99-9D48230422D2"
} ,
{
"vulnerable" : true ,
"criteria" : "cpe:2.3:a:fastify:passport:*:*:*:*:*:node.js:*:*" ,
"versionStartIncluding" : "2.0.0" ,
"versionEndExcluding" : "2.3.0" ,
"matchCriteriaId" : "341AD078-D84A-45B6-876F-7FA286EECAAA"
}
]
}
]
}
] ,
2023-04-24 12:24:31 +02:00
"references" : [
{
"url" : "https://cheatsheetseries.owasp.org/cheatsheets/Cross-Site_Request_Forgery_Prevention_Cheat_Sheet.html#synchronizer-token-pattern" ,
2023-05-03 18:00:27 +02:00
"source" : "security-advisories@github.com" ,
"tags" : [
"Technical Description"
]
2023-04-24 12:24:31 +02:00
} ,
{
"url" : "https://github.com/fastify/fastify-passport/commit/07c90feab9cba0dd4779e47cfb0717a7e2f01d3d" ,
2023-05-03 18:00:27 +02:00
"source" : "security-advisories@github.com" ,
"tags" : [
"Patch"
]
2023-04-24 12:24:31 +02:00
} ,
{
"url" : "https://github.com/fastify/fastify-passport/security/advisories/GHSA-2ccf-ffrj-m4qw" ,
2023-05-03 18:00:27 +02:00
"source" : "security-advisories@github.com" ,
"tags" : [
"Vendor Advisory"
]
2023-04-24 12:24:31 +02:00
} ,
{
"url" : "https://owasp.org/www-community/attacks/csrf" ,
2023-05-03 18:00:27 +02:00
"source" : "security-advisories@github.com" ,
"tags" : [
"Technical Description"
]
2024-12-08 03:06:42 +00:00
} ,
{
"url" : "https://cheatsheetseries.owasp.org/cheatsheets/Cross-Site_Request_Forgery_Prevention_Cheat_Sheet.html#synchronizer-token-pattern" ,
"source" : "af854a3a-2127-422b-91ae-364da2661108" ,
"tags" : [
"Technical Description"
]
} ,
{
"url" : "https://github.com/fastify/fastify-passport/commit/07c90feab9cba0dd4779e47cfb0717a7e2f01d3d" ,
"source" : "af854a3a-2127-422b-91ae-364da2661108" ,
"tags" : [
"Patch"
]
} ,
{
"url" : "https://github.com/fastify/fastify-passport/security/advisories/GHSA-2ccf-ffrj-m4qw" ,
"source" : "af854a3a-2127-422b-91ae-364da2661108" ,
"tags" : [
"Vendor Advisory"
]
} ,
{
"url" : "https://owasp.org/www-community/attacks/csrf" ,
"source" : "af854a3a-2127-422b-91ae-364da2661108" ,
"tags" : [
"Technical Description"
]
2023-04-24 12:24:31 +02:00
}
]
}