{"containers":{"cna":{"affected":[{"product":"convict","vendor":"n/a","versions":[{"lessThan":"6.2.3","status":"affected","version":"unspecified","versionType":"custom"}]}],"credits":[{"lang":"en","value":"Alessio Della Libera of Snyk Security Team"}],"datePublic":"2022-05-13T00:00:00.000Z","descriptions":[{"lang":"en","value":"This affects the package convict before 6.2.3. This is a bypass of [CVE-2022-22143](https://security.snyk.io/vuln/SNYK-JS-CONVICT-2340604). The [fix](https://github.com/mozilla/node-convict/commit/3b86be087d8f14681a9c889d45da7fe3ad9cd880) introduced, relies on the startsWith method and does not prevent the vulnerability: before splitting the path, it checks if it starts with __proto__ or this.constructor.prototype. To bypass this check it's possible to prepend the dangerous paths with any string value followed by a dot, like for example foo.__proto__ or foo.this.constructor.prototype."}],"metrics":[{"cvssV3_1":{"attackComplexity":"LOW","attackVector":"NETWORK","availabilityImpact":"HIGH","baseScore":7.5,"baseSeverity":"HIGH","confidentialityImpact":"NONE","integrityImpact":"NONE","privilegesRequired":"NONE","scope":"UNCHANGED","userInteraction":"NONE","vectorString":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","version":"3.1"}}],"problemTypes":[{"descriptions":[{"description":"Prototype Pollution","lang":"en","type":"text"}]}],"providerMetadata":{"dateUpdated":"2022-05-13T20:00:38.000Z","orgId":"bae035ff-b466-4ff4-94d0-fc9efd9e1730","shortName":"snyk"},"references":[{"tags":["x_refsource_MISC"],"url":"https://snyk.io/vuln/SNYK-JS-CONVICT-2774757"},{"tags":["x_refsource_MISC"],"url":"https://github.com/mozilla/node-convict/blob/3b86be087d8f14681a9c889d45da7fe3ad9cd880/packages/convict/src/main.js%23L571"},{"tags":["x_refsource_MISC"],"url":"https://gist.github.com/dellalibera/cebce20e51410acebff1f46afdc89808"},{"tags":["x_refsource_MISC"],"url":"https://github.com/mozilla/node-convict/blob/master/CHANGELOG.md%23623---2022-05-07"},{"tags":["x_refsource_MISC"],"url":"https://github.com/mozilla/node-convict/commit/1ea0ab19c5208f66509e1c43b0d0f21c1fd29b75"}],"title":"Prototype Pollution","x_legacyV4Record":{"CVE_data_meta":{"ASSIGNER":"report@snyk.io","DATE_PUBLIC":"2022-05-13T20:00:01.480583Z","ID":"CVE-2022-21190","STATE":"PUBLIC","TITLE":"Prototype Pollution"},"affects":{"vendor":{"vendor_data":[{"product":{"product_data":[{"product_name":"convict","version":{"version_data":[{"version_affected":"<","version_value":"6.2.3"}]}}]},"vendor_name":"n/a"}]}},"credit":[{"lang":"eng","value":"Alessio Della Libera of Snyk Security Team"}],"data_format":"MITRE","data_type":"CVE","data_version":"4.0","description":{"description_data":[{"lang":"eng","value":"This affects the package convict before 6.2.3. This is a bypass of [CVE-2022-22143](https://security.snyk.io/vuln/SNYK-JS-CONVICT-2340604). The [fix](https://github.com/mozilla/node-convict/commit/3b86be087d8f14681a9c889d45da7fe3ad9cd880) introduced, relies on the startsWith method and does not prevent the vulnerability: before splitting the path, it checks if it starts with __proto__ or this.constructor.prototype. To bypass this check it's possible to prepend the dangerous paths with any string value followed by a dot, like for example foo.__proto__ or foo.this.constructor.prototype."}]},"impact":{"cvss":{"attackComplexity":"LOW","attackVector":"NETWORK","availabilityImpact":"HIGH","baseScore":7.5,"baseSeverity":"HIGH","confidentialityImpact":"NONE","integrityImpact":"NONE","privilegesRequired":"NONE","scope":"UNCHANGED","userInteraction":"NONE","vectorString":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","version":"3.1"}},"problemtype":{"problemtype_data":[{"description":[{"lang":"eng","value":"Prototype Pollution"}]}]},"references":{"reference_data":[{"name":"https://snyk.io/vuln/SNYK-JS-CONVICT-2774757","refsource":"MISC","url":"https://snyk.io/vuln/SNYK-JS-CONVICT-2774757"},{"name":"https://github.com/mozilla/node-convict/blob/3b86be087d8f14681a9c889d45da7fe3ad9cd880/packages/convict/src/main.js%23L571","refsource":"MISC","url":"https://github.com/mozilla/node-convict/blob/3b86be087d8f14681a9c889d45da7fe3ad9cd880/packages/convict/src/main.js%23L571"},{"name":"https://gist.github.com/dellalibera/cebce20e51410acebff1f46afdc89808","refsource":"MISC","url":"https://gist.github.com/dellalibera/cebce20e51410acebff1f46afdc89808"},{"name":"https://github.com/mozilla/node-convict/blob/master/CHANGELOG.md%23623---2022-05-07","refsource":"MISC","url":"https://github.com/mozilla/node-convict/blob/master/CHANGELOG.md%23623---2022-05-07"},{"name":"https://github.com/mozilla/node-convict/commit/1ea0ab19c5208f66509e1c43b0d0f21c1fd29b75","refsource":"MISC","url":"https://github.com/mozilla/node-convict/commit/1ea0ab19c5208f66509e1c43b0d0f21c1fd29b75"}]}}},"adp":[{"providerMetadata":{"orgId":"af854a3a-2127-422b-91ae-364da2661108","shortName":"CVE","dateUpdated":"2024-08-03T02:31:59.871Z"},"title":"CVE Program Container","references":[{"tags":["x_refsource_MISC","x_transferred"],"url":"https://snyk.io/vuln/SNYK-JS-CONVICT-2774757"},{"tags":["x_refsource_MISC","x_transferred"],"url":"https://github.com/mozilla/node-convict/blob/3b86be087d8f14681a9c889d45da7fe3ad9cd880/packages/convict/src/main.js%23L571"},{"tags":["x_refsource_MISC","x_transferred"],"url":"https://gist.github.com/dellalibera/cebce20e51410acebff1f46afdc89808"},{"tags":["x_refsource_MISC","x_transferred"],"url":"https://github.com/mozilla/node-convict/blob/master/CHANGELOG.md%23623---2022-05-07"},{"tags":["x_refsource_MISC","x_transferred"],"url":"https://github.com/mozilla/node-convict/commit/1ea0ab19c5208f66509e1c43b0d0f21c1fd29b75"}]}]},"cveMetadata":{"assignerOrgId":"bae035ff-b466-4ff4-94d0-fc9efd9e1730","assignerShortName":"snyk","cveId":"CVE-2022-21190","datePublished":"2022-05-13T20:00:38.749Z","dateReserved":"2022-02-24T00:00:00.000Z","dateUpdated":"2024-09-17T03:32:50.471Z","state":"PUBLISHED"},"dataType":"CVE_RECORD","dataVersion":"5.1"}