CVE-2026-90771GHSA-wr44-6hxh-3jwq
joi messages compilation allows prototype replacement through __proto__ error codes
hapijs joinpmLibraries & packages
CVSS
6.3MediumExploitationPublic exploit codeCISA's assessment says proof of concept code is public, assessed 16 Sep 2026. Not in the KEV catalogCISA via CVE List
Exploit odds (EPSS)0.39%Chance of exploitation activity in the next 30 days, higher than 31% of CVEs. Scored 23 Oct 2026FIRST EPSS
What fixes it
- 17.13.8joi, npmGitHub
npm install joi@17.13.8 - 18.2.9joi, npmGitHub
npm install joi@18.2.9 - 17.13.8joiCVE List
- 18.2.9joiCVE List
A fixed version on one release line is not the upgrade target for every line. Check your exact version and any vendor backports.
Description
joi before versions 17.13.8 and 18.2.9 contains a prototype pollution vulnerability in the messages compilation function that accepts __proto__ as an error code. Attackers can supply __proto__ keys in custom messages to replace the returned object's prototype, breaking downstream code relying on Object.prototype methods.
Text from CVE List
Affected versions 6
- joi, npm< 17.13.8GitHub
- joi, npm>= 18.0.0, < 18.2.9GitHub
- joiaffected: 16.0.0 before 17.13.8CVE List
- joiaffected: 18.0.0 before 18.2.9CVE List
- joi, npmfrom first release, fixed in 17.13.8OSV
- joi, npmfrom 18.0.0, fixed in 18.2.9OSV
References 12
- github.com/hapijs/joi/commit/5b8333c9177e08b4ef4ed02903c2d657084e7afbFixvia CVE List
- github.com/hapijs/joi/commit/1d2001cad9971327a62c9fd8eb1afec20cd784d2Fixvia GitHub
- github.com/hapijs/joi/releases/tag/v17.13.8Fixvia GitHub
- github.com/hapijs/joi/releases/tag/v18.2.9Fixvia GitHub
- vulncheck.com/advisories/joi-before-17.13.8-and-18.2.9-prototype-pollution-via-messagesAdvisoryvia CVE List
- github.com/advisories/GHSA-wr44-6hxh-3jwqAdvisoryvia GitHub
- github.com/hapijs/joi/issues/3150Exploitvia CVE List
- nvd.nist.gov/vuln/detail/CVE-2026-90771Referencevia GitHub
- github.com/hapijs/joiReferencevia CVE List
- github.com/hapijs/joi/blob/v18.2.8/lib/messages.jsReferencevia CVE List
- github.com/hapijs/joi/pull/3151Referencevia GitHub
- github.com/hapijs/joi/pull/3153Referencevia GitHub