joi messages compilation allows prototype replacement through __proto__ error codes
Affected releases · joi
- 18.x18.0.0 – 18.2.8Fixed in 18.2.9
- 17.x17.1.1 – 17.13.7Fixed in 17.13.8
- 14.x and older0.0.1 – 14.3.1No fix, no longer updated
On 18.x, the newest line:
npm install joi@18.2.9Every release on a timeline
Affected
18.0.0 – 18.2.8
15 releases
Fixed
18.2.9 – 18.3.1
3 releases, latest
Affected
17.1.1 – 17.13.7
41 releases
Fixed
17.13.8 – 17.13.9
2 releases
Affected
14.0.0 – 14.3.1
12 releases
Affected
13.0.0 – 13.7.0
15 releases
Affected
12.0.0 – 12.1.1
2 releases
Affected
11.0.0 – 11.4.0
12 releases
Affected
10.0.0 – 10.6.0
22 releases
Affected
9.0.0 – 9.2.0
8 releases
Affected
8.0.0 – 8.4.2
14 releases
Affected
7.0.0 – 7.3.0
8 releases
Affected
6.0.0 – 6.10.1
29 releases
Affected
5.0.0 – 5.1.0
4 releases
Affected
4.0.0 – 4.9.0
14 releases
Affected
3.0.0 – 3.1.0
2 releases
Affected
2.0.0 – 2.9.0
17 releases
Affected
1.0.0 – 1.2.3
6 releases
Affected
0.0.1 – 0.4.0
30 releases
What happens
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.