VDB
Sign up
CRITICAL

GHSA-hf2r-9gf9-rwch

Convict has prototype pollution via load(), loadFile(), and schema initialization

Quick fix

GHSA-hf2r-9gf9-rwch — convict: upgrade to the fixed version with the command below.

npm install convict@6.2.5

Details

### Impact Two unguarded prototype pollution paths exist, not covered by previous fixes:

1. `config.load()` / `config.loadFile()` — `overlay()` recursively merges config data without checking for forbidden keys. Input containing` __proto__` or `constructor.prototype` (e.g. from a JSON file) causes the recursion to reach `Object.prototype` and write attacker-controlled values onto it. 2. Schema initialization — passing a schema with `constructor.prototype.*` keys to `convict({...})` causes default-value propagation to write directly to `Object.prototype` at startup.

Depending on how polluted properties are consumed, impact ranges from unexpected behavior to authentication bypass or RCE.

### Workarounds Do not pass untrusted data to load(), loadFile(), or convict().

### Resources Prior advisory: [GHSA-44fc-8fm5-q62h](https://github.com/mozilla/node-convict/security/advisories/GHSA-44fc-8fm5-q62h) Related issue: [https://github.com/mozilla/node-convict/issues/423](https://github.com/mozilla/node-convict/issues/423)

Are you affected?

Enter the version of the package you're using.

Affected packages

npm/convict
Introduced in: 0Fixed in: 6.2.5
Fixnpm install convict@6.2.5

References