An attacker can send an invalid Content-Type
header that can cause the application to crash, leading to a possible Denial of Service attack. Only the v4.x line is affected.
(This was updated: upon a close inspection, v3.x is not affected after all).
Yes, update to > v4.8.0
.
You can reject the malicious content types before the body parser enters in action.
const badNames = Object.getOwnPropertyNames({}.__proto__)
fastify.addHook('onRequest', async (req, reply) => {
for (const badName of badNames) {
if (req.headers['content-type'].indexOf(badName) > -1) {
reply.code(415)
throw new Error('Content type not supported')
}
}
})
See the HackerOne report #1715536
{ "nvd_published_at": "2022-10-10T21:15:00Z", "github_reviewed_at": "2022-10-11T13:45:14Z", "severity": "HIGH", "github_reviewed": true, "cwe_ids": [ "CWE-754" ] }