---
id: CVE-2026-57998
title: >-
  better-npm-audit through 3.11.0, and the 4.0.0-rc.2 prerelease, builds its npm
  audit command by interpolating the user-supplied --registry option into a
  command string in src/handlers/handleInput.ts without validation or quoting,
  then pa…
summary: >-
  better-npm-audit through 3.11.0, and the 4.0.0-rc.2 prerelease, builds its npm
  audit command by interpolating the user-supplied --registry option into a
  command string in src/handlers/handleInput.ts without validation or quoting,
  then pa…
severity: high
cvss: 7.8
cvssVector: 'CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H'
cwe:
  - CWE-78
published: '2026-08-22'
updated: '2026-09-24'
sourceUpdated: '2026-09-24T20:43:32.537'
source: NVD
sourceUrl: 'https://nvd.nist.gov/vuln/detail/CVE-2026-57998'
references:
  - url: 'https://github.com/jeemok/better-npm-audit'
    label: disclosure@vulncheck.com
  - url: >-
      https://github.com/jeemok/better-npm-audit/blob/fd99a0f41ff4342b8a0a6fdbe5a17261de3d0544/index.ts#L34
    label: disclosure@vulncheck.com
  - url: >-
      https://github.com/jeemok/better-npm-audit/blob/fd99a0f41ff4342b8a0a6fdbe5a17261de3d0544/src/handlers/handleInput.ts#L30-L37
    label: disclosure@vulncheck.com
  - url: 'https://github.com/jeemok/better-npm-audit/issues/119'
    label: disclosure@vulncheck.com
  - url: 'https://github.com/jeemok/better-npm-audit/pull/120'
    label: disclosure@vulncheck.com
  - url: >-
      https://www.vulncheck.com/advisories/better-npm-audit-os-command-injection-via-registry-flag
    label: disclosure@vulncheck.com
  - url: 'https://github.com/jeemok/better-npm-audit/issues/119'
    label: 134c704f-9b21-4f2e-91b3-4a467353bcc0
tags:
  - nvd
epss: 0.0021
epssPercentile: 0.10093
ingestedAt: '2026-08-23T04:42:14.246Z'
---

## Overview

better-npm-audit through 3.11.0, and the 4.0.0-rc.2 prerelease, builds its npm audit command by interpolating the user-supplied --registry option into a command string in src/handlers/handleInput.ts without validation or quoting, then passes that string to child_process.exec() in index.ts, which spawns a shell. A registry value containing shell metacharacters such as a semicolon, pipe, or command substitution executes arbitrary operating system commands with the privileges of the process running the audit.

## Remediation

Refer to the linked advisories for vendor-supplied fixes and affected version ranges.
