- Top reward
- $2,500
- Top severity paid
- Medium
- Assets in scope
- 8
- Public CVEs
- 16
- Last change
- No changes yet
At a glance
What to know before you start testing.
- Pays up to $2,500
- for medium bugs, from $313.
- Report on Sorona
- Submit through the program page.
- Partial safe harbor
- Some legal protection; read the terms.
- Replies within 4 days
- As the policy promises.
- Payment
- Proof of identity needed to get paid.
- Publish after a fix
- Coordinate the timing with the company.
Rewards
What Sorona lists as the payout for each severity.
| Severity | Relative size | Reward |
|---|---|---|
| Medium |
|
$2,500 |
| Low |
|
$313 |
- Response
-
Within 4 days
~4 days First response
- Safe harbor
-
Partial
Sorona will not pursue legal action against you for good-faith research submitted to us in line with this policy. We cannot speak for the upstream project, its vendor, or any third party, and we do not grant authorization on their behalf.
Summarised with AI from the program policy on Sorona, read 12 Nov 2026, and checked word for word against it. Read the original
Scope
8 assets you may test, 6 excluded.
Web 1
- https://docs.npmjs.com/cli
Products and areas 7
- GitHub lists npm CLI as its own downloadable-executable asset, bounty-eligible with a maximum severity of high. The row names the shipped command-line client and carries no list of eligible bug shapes, so the client's own code is the target
- Lifecycle-script execution around preinstall, install and postinstall, where the client hands control to code the package author supplied
- Manifest and semver parsing, where a crafted version range or manifest field is read one way by the resolver and another way by everything downstream
- Package fetching and tarball extraction through the pacote and tar paths, in particular path traversal and symlink handling on unpack
- Registry authentication and credential storage in .npmrc, covering scoped registries, auth tokens, and the decision about which host a credential is sent to
- The install path in full: dependency resolution, package-lock.json and npm-shrinkwrap.json handling, the arborist tree build, and the node_modules layout it produces
- The rest of the command surface: npm audit, npm publish, npm pack, npm exec and npx, npm config, and the workspace commands
Out of scope (6)
- Awards are gated on sanctions screening, so a reporter who cannot clear it will not be paid
- Critical-severity impact claims, since the CLI asset's maximum severity is high and the critical cell cannot be awarded here
- Electron and Atom, which sit in the same GitHub scope table explicitly marked as not eligible for bounty
- Findings that require a maintainer to merge malicious code before they work
- The npmjs.com registry service itself, which is a separate GitHub asset from the command-line client and carries its own higher severity cap
- Third-party packages published to the registry, which are the responsibility of the package authors rather than of npm
Rules
What the policy asks of you, and the bug types it won't reward, quoted from Sorona's policy.
While testing
-
Submit through sorona.xyz first.
-
Keep all information about the report on HackerOne, and do not post it to video-sharing or pastebin sites
-
The finding has to live in the CLI itself; the npmjs.com registry is a separate GitHub asset with its own, higher, severity cap
-
Critical-band impact is not payable on this asset, because the npm CLI scope row carries a maximum severity of high
-
Findings that only work if a maintainer merges malicious code are not eligible, since that is a trust decision rather than a defect
-
Third-party packages published to the registry belong to their authors, not to this program
Not accepted
-
Critical-severity impact claims, since the CLI asset's maximum severity is high and the critical cell cannot be awarded here
-
Findings that require a maintainer to merge malicious code before they work
-
Third-party packages published to the registry, which are the responsibility of the package authors rather than of npm
-
Electron and Atom, which sit in the same GitHub scope table explicitly marked as not eligible for bounty
Summarised with AI from the program policy on Sorona, read 12 Nov 2026, and checked word for word against it. Read the original
Changes
Tracked since 11 Nov 2026. Last checked 1 hour ago.
No changes yet. When the rewards or scope move, you will see it here and in the RSS feed.
Public CVEs
Published vulnerabilities in this vendor's products, from the NVD.
| CVE | Summary | Severity | Published |
|---|---|---|---|
| CVE-2022-25883 | Versions of the package semver before 7.5.2 are vulnerable to Regular Expression Denial of Service (ReDoS) via the function new Range, when untrusted user data is provided as a range. | Medium 5.3 | 21 Jun 2023 |
| CVE-2022-29244 | npm pack ignores root-level .gitignore and .npmignore file exclusion directives when run in a workspace or with a workspace flag (ie. `--workspaces`, `--workspace=<name>`). Anyone who has run `npm pack` or `npm publish` inside a workspace, as of v7.9.0 and v7.13.0 respectively, may be affected and have published files into the npm registry they did not intend to include. Users should upgrade to th | High 7.5 | 13 Jun 2022 |
| CVE-2021-43616 | The npm ci command in npm 7.x and 8.x through 8.1.3 proceeds with an installation even if dependency information in package-lock.json differs from package.json. This behavior is inconsistent with the documentation, and makes it easier for attackers to install malware that was supposed to have been blocked by an exact version match requirement in package-lock.json. NOTE: The npm team believes this | Critical 9.0 | 13 Nov 2021 |
| CVE-2021-37701 | The npm package "tar" (aka node-tar) before versions 4.4.16, 5.0.8, and 6.1.7 has an arbitrary file creation/overwrite and arbitrary code execution vulnerability. node-tar aims to guarantee that any file whose location would be modified by a symbolic link is not extracted. This is, in part, achieved by ensuring that extracted directories are not symlinks. Additionally, in order to prevent unnecess | High 8.2 | 31 Aug 2021 |
| CVE-2021-37712 | The npm package "tar" (aka node-tar) before versions 4.4.18, 5.0.10, and 6.1.9 has an arbitrary file creation/overwrite and arbitrary code execution vulnerability. node-tar aims to guarantee that any file whose location would be modified by a symbolic link is not extracted. This is, in part, achieved by ensuring that extracted directories are not symlinks. Additionally, in order to prevent unneces | High 8.2 | 31 Aug 2021 |
| CVE-2021-37713 | The npm package "tar" (aka node-tar) before versions 4.4.18, 5.0.10, and 6.1.9 has an arbitrary file creation/overwrite and arbitrary code execution vulnerability. node-tar aims to guarantee that any file whose location would be outside of the extraction target directory is not extracted. This is, in part, accomplished by sanitizing absolute paths of entries within the archive, skipping archive en | High 8.2 | 31 Aug 2021 |
| CVE-2021-39134 | `@npmcli/arborist`, the library that calculates dependency trees and manages the `node_modules` folder hierarchy for the npm command line interface, aims to guarantee that package dependency contracts will be met, and the extraction of package contents will always be performed into the expected folder. This is, in part, accomplished by resolving dependency specifiers defined in `package.json` mani | High 8.2 | 31 Aug 2021 |
| CVE-2021-39135 | `@npmcli/arborist`, the library that calculates dependency trees and manages the node_modules folder hierarchy for the npm command line interface, aims to guarantee that package dependency contracts will be met, and the extraction of package contents will always be performed into the expected folder. This is accomplished by extracting package contents into a project's `node_modules` folder. If the | High 8.2 | 31 Aug 2021 |
| CVE-2021-23362 | The package hosted-git-info before 3.0.8 are vulnerable to Regular Expression Denial of Service (ReDoS) via regular expression shortcutMatch in the fromUrl function in index.js. The affected regular expression exhibits polynomial worst-case time complexity. | Medium 5.3 | 23 Mar 2021 |
| CVE-2020-7754 | This affects the package npm-user-validate before 1.0.1. The regex that validates user emails took exponentially longer to process long input strings beginning with @ characters. | High 7.5 | 27 Oct 2020 |
| CVE-2020-15095 | Versions of the npm CLI prior to 6.14.6 are vulnerable to an information exposure vulnerability through log files. The CLI supports URLs like "<protocol>://[<user>[:<password>]@]<hostname>[:<port>][:][/]<path>". The password value is not redacted and is printed to stdout and also to any generated log files. | Medium 4.4 | 7 Jul 2020 |
| CVE-2019-16775 | Versions of the npm CLI prior to 6.13.3 are vulnerable to an Arbitrary File Write. It is possible for packages to create symlinks to files outside of thenode_modules folder through the bin field upon installation. A properly constructed entry in the package.json bin field would allow a package publisher to create a symlink pointing to arbitrary files on a user's system when the package is installe | High 7.7 | 13 Dec 2019 |
| CVE-2019-16776 | Versions of the npm CLI prior to 6.13.3 are vulnerable to an Arbitrary File Write. It fails to prevent access to folders outside of the intended node_modules folder through the bin field. A properly constructed entry in the package.json bin field would allow a package publisher to modify and/or gain access to arbitrary files on a user's system when the package is installed. This behavior is still | High 7.7 | 13 Dec 2019 |
| CVE-2019-16777 | Versions of the npm CLI prior to 6.13.4 are vulnerable to an Arbitrary File Overwrite. It fails to prevent existing globally-installed binaries to be overwritten by other package installations. For example, if a package was installed globally and created a serve binary, any subsequent installs of packages that also create a serve binary would overwrite the previous serve binary. This behavior is s | High 7.7 | 13 Dec 2019 |
| CVE-2018-7408 | An issue was discovered in an npm 5.7.0 2018-02-21 pre-release (marked as "next: 5.7.0" and therefore automatically installed by an "npm upgrade -g npm" command, and also announced in the vendor's blog without mention of pre-release status). It might allow local users to bypass intended filesystem access restrictions because ownerships of /etc and /usr directories are being changed unexpectedly, r | High 7.8 | 22 Feb 2018 |
| CVE-2016-3956 | The CLI in npm before 2.15.1 and 3.x before 3.8.3, as used in Node.js 0.10 before 0.10.44, 0.12 before 0.12.13, 4 before 4.4.2, and 5 before 5.10.0, includes bearer tokens with arbitrary requests, which allows remote HTTP servers to obtain sensitive information by reading Authorization headers. | High 7.5 | 2 Jul 2016 |
Original policy
Copied from sorona.xyz on 12 Nov 2026. The summaries on this page are made from it; the live page may have changed since.
Skip to content What this pays sorona.xyz pays 1.25× the program's reward, up to +$1,000 per finding, plus a complexity bonus of up to $1,000 for especially complex or well-chained bugs. Finding │ Program pays │ Through sorona.xyz High (npm CLI asset capped at High severity, critical unreachable) │ $5,000 │ $6,000 Medium │ $2,000 │ $2,500 Low │ $250 │ $313 Submit a vulnerability CVE history 1 Last 12 months 12 Lifetime Injection 30 % Access control 25 % Info disclosure 25 % Parsing/validation 15 % Latest advisories Loading the feed Overview The npm CLI ships inside the official Node.js distribution, which means it is installed wherever Node.js is installed: every JavaScript developer machine, every Node container image and essentially every CI runner in the JavaScript world. It is the single most-executed supply-chain entry point in software, and the 2025-2026 wave of self-replicating npm worms turned lifecycle-script and lockfile handling in this exact codebase from a plumbing detail into a first-order security surface. GitHub pays it by name on one of the oldest continuously running programs on HackerOne, though the CLI asset is capped at high severity, so the ladder runs $250 for low, $2,000 for medium and $5,000 at the top rather than reaching the program's $10,000 critical cell. A second and larger pathway exists outside the bounty: github.com/npm/cli is named in Google Patch Rewards Tier 1 at up to $15,000 for a merged upstream patch. sorona.xyz adds 1.25x on top of whatever GitHub awards, up to $1,000 more, plus a complexity bonus of up to $1,000 for a well-chained finding. Response times ~4 days First response ~11 days Triage ~44 days Bounty In scope GitHub lists npm CLI as its own downloadable-executable asset, bounty-eligible with a maximum severity of high. The row names the shipped command-line client and carries no list of eligible bug shapes, so the client's own code is the target The install path in full: dependency resolution, package-lock.json and npm-shrinkwrap.json handling, the arborist tree build, and the node_modules layout it produces Package fetching and tarball extraction through the pacote and tar paths, in particular path traversal and symlink handling on unpack Registry authentication and credential storage in .npmrc , covering scoped registries, auth tokens, and the decision about which host a credential is sent to Lifecycle-script execution around preinstall , install and postinstall , where the client hands control to code the package author supplied Manifest and semver parsing, where a crafted version range or manifest field is read one way by the resolver and another way by everything downstream The rest of the command surface: npm audit , npm publish , npm pack , npm exec and npx , npm config , and the workspace commands Out of scope The npmjs.com registry service itself, which is a separate GitHub asset from the command-line client and carries its own higher severity cap Third-party packages published to the registry, which are the responsibility of the package authors rather than of npm Electron and Atom, which sit in the same GitHub scope table explicitly marked as not eligible for bounty Findings that require a maintainer to merge malicious code before they work Critical-severity impact claims, since the CLI asset's maximum severity is high and the critical cell cannot be awarded here Awards are gated on sanctions screening, so a reporter who cannot clear it will not be paid Most-valued findings Injection into lifecycle-script execution that runs attacker code on npm install without the user opting into anything, the top-paying shape on this asset Tarball extraction path traversal or symlink handling that writes a file outside the intended package directory Credential and token leakage out of .npmrc or the registry auth flow to a host the user never configured Lockfile or manifest parsing confusion where the resolver installs something other than what the lockfile appears to pin Access-control gaps in npm publish that let one account affect a package it does not own Program rules Submit through sorona.xyz first. We validate, coordinate with the program's security team, and add the payout uplift on top of whatever it awards. Keep all information about the report on HackerOne, and do not post it to video-sharing or pastebin sites The finding has to live in the CLI itself; the npmjs.com registry is a separate GitHub asset with its own, higher, severity cap Critical-band impact is not payable on this asset, because the npm CLI scope row carries a maximum severity of high Findings that only work if a maintainer merges malicious code are not eligible, since that is a trust decision rather than a defect Third-party packages published to the registry belong to their authors, not to this program Program stats 2,132 Reports resolved $6.5M Bounties paid 62% Response efficiency Disclosure Coordinated through GitHub on HackerOne, and GitHub's rules require every detail of the report to stay on the platform while it is open. Because that clause can be read as covering a sorona.xyz-routed report, file with GitHub directly first and keep the discussion there; sorona.xyz holds anything you share with us until GitHub has resolved it. Safe harbor Sorona will not pursue legal action against you for good-faith research submitted to us in line with this policy. We cannot speak for the upstream project, its vendor, or any third party, and we do not grant authorization on their behalf. You are responsible for understanding and following the laws that apply to you, wherever you are, and for staying within any scope the project has defined. Submit a vulnerability