Skip to content

npm CLI

Bug bounty on Sorona

Accepting reports KYC to get paid open-source
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.
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 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.

CVESeverityPublished
CVE-2022-25883 Medium 5.3 21 Jun 2023
CVE-2022-29244 High 7.5 13 Jun 2022
CVE-2021-43616 Critical 9.0 13 Nov 2021
CVE-2021-37701 High 8.2 31 Aug 2021
CVE-2021-37712 High 8.2 31 Aug 2021
CVE-2021-37713 High 8.2 31 Aug 2021
CVE-2021-39134 High 8.2 31 Aug 2021
CVE-2021-39135 High 8.2 31 Aug 2021
CVE-2021-23362 Medium 5.3 23 Mar 2021
CVE-2020-7754 High 7.5 27 Oct 2020
CVE-2020-15095 Medium 4.4 7 Jul 2020
CVE-2019-16775 High 7.7 13 Dec 2019
CVE-2019-16776 High 7.7 13 Dec 2019
CVE-2019-16777 High 7.7 13 Dec 2019
CVE-2018-7408 High 7.8 22 Feb 2018
CVE-2016-3956 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