CVE-2017-16088
Sandbox Breakout in safe-eval
The safe-eval module describes itself as a safer version of eval. By accessing the object constructors, un-sanitized user input can access the entire standard library and effectively break out of the sandbox.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- None
- User interaction
- None
What an attacker can affect
- Confidentiality
- High
- Integrity
- High
- Availability
- High
Exploit likelihood
What each source reports
NVD Score used
10.0
The safe-eval module describes itself as a safer version of eval. By accessing the object constructors, un-sanitized user input can access the entire standard library and effectively break out of the sandbox.
- Record
CVE-2017-16088- CVSS 3.0
- 10.0 Critical
CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H - CVSS 2.0
- 10.0 High
AV:N/AC:L/Au:N/C:C/I:C/A:C - Weakness
- CWE-610
- Updated
- 2026-11-02
CVE List No score
The safe-eval module describes itself as a safer version of eval. By accessing the object constructors, un-sanitized user input can access the entire standard library and effectively break out of the sandbox.
- Record
CVE-2017-16088- Weakness
- CWE-610
- Updated
- 2026-11-02
EUVDEUVD-2018-0337 No score
The safe-eval module describes itself as a safer version of eval. By accessing the object constructors, un-sanitized user input can access the entire standard library and effectively break out of the sandbox.
- Record
EUVD-2018-0337- Updated
- 2026-11-03
GitHub AdvisoriesGHSA-ww6v-677g-p656
10.0
Sandbox Breakout in safe-eval
Affected versions of safe-eval are vulnerable to a sandbox escape. By accessing object constructors, un-sanitized user input can access the entire standard library and effectively break out of the sandbox.
Proof of Concept:
This code accesses the process object and calls .exit()
var safeEval = require('safe-eval');
safeEval("this.constructor.constructor('return process')().exit()");
Recommendation
Update to version 0.4.0 or later
- Record
GHSA-ww6v-677g-p656- CVSS 3.0
- 10.0 Critical
CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H - Weakness
- CWE-610
- Updated
- 2026-11-02
OSV
10.0
The safe-eval module describes itself as a safer version of eval. By accessing the object constructors, un-sanitized user input can access the entire standard library and effectively break out of the sandbox.
- Record
CVE-2017-16088- CVSS 3.0
- 10.0 Critical
CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H - Updated
- 2026-11-02
OSVGHSA-ww6v-677g-p656
10.0
Sandbox Breakout in safe-eval
Affected versions of safe-eval are vulnerable to a sandbox escape. By accessing object constructors, un-sanitized user input can access the entire standard library and effectively break out of the sandbox.
Proof of Concept:
This code accesses the process object and calls .exit()
var safeEval = require('safe-eval');
safeEval("this.constructor.constructor('return process')().exit()");
Recommendation
Update to version 0.4.0 or later
- Record
GHSA-ww6v-677g-p656- CVSS 3.0
- 10.0 Critical
CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H - Weakness
- CWE-610
- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
safe-evalnpm |
through 0.3.0 | None known |
Public exploits
Links only. Every CVE stores no exploit code.
| Source | Link | Date |
|---|---|---|
| PoC in GitHub | Flyy-yu/CVE-2017-16088 | 2019-08-18 |
History
| Recorded | Changed | Sources |
|---|---|---|
| aliases | EUVD | |
| first indexed | CVE List, GitHub Advisories, NVD, OSV, PoC in GitHub |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2017-16088 is a critical vulnerability (CVSS 10.0) in Safe-eval Project Safe-eval, published June 7, 2018. Public exploit code exists. EPSS puts the chance of exploitation in the next 30 days at 3.44%, the 89th percentile. No source names a fixed version.