- Top reward
- $1,500
- Top severity paid
- Critical
- Assets in scope
- 7
- Public CVEs
- 11
- Last change
- No changes yet
At a glance
What to know before you start testing.
- Pays from $1,500
- for critical bugs.
- Report on Sorona
- Submit through the program page.
- Partial safe harbor
- Some legal protection; read the terms.
- Publish after a fix
- Coordinate the timing with the company.
Rewards
What Sorona lists as the payout for each severity.
| Severity | Relative size | Reward |
|---|---|---|
| Critical | $1,500+ | |
| High | $700+ | |
| Medium | $300+ | |
| Low |
|
$100 $100 / 1 month Claude Max |
- 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
7 assets you may test, 5 excluded.
Web 1
- https://setuptools.pypa.io
Products and areas 6
- easy_install and PackageIndex, including URL and link handling and the download-and-execute path behind them
- pkg_resources as a whole: requirement, version and metadata parsing across METADATA, PKG-INFO and entry points
- Reports go to PyPA through the process in the project's SECURITY.md, against setuptools itself. pip, wheel and packaging are separate projects, so the boundary is the setuptools tree and all of it
- sdist and egg unpacking, including archive path handling at extraction time
- setup.py argument and configuration handling wherever attacker-controlled project metadata reaches a subprocess
- The PEP 517 build-backend entry points in full, the mechanism by which pip install executes arbitrary code out of a source distribution
Out of scope (5)
- Malicious packages published to PyPI, which is an ecosystem-abuse problem rather than a setuptools defect
- Patches outside the one-to-twelve-month age window the program requires
- pip itself, which is a separate and higher-tier entry with its own scope row
- Vulnerability reports with no merged patch behind them, which earn nothing on Google's rail
- wheel and packaging, which are separate OSS-Fuzz projects and separate submissions
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.
-
Keep the patch merged, without reverts, for one month before claiming, and submit it while it is between one and twelve months old
-
Three Patch Rewards submissions per person per month is the hard cap
-
Google cannot pay individuals or entities on sanctions lists, in sanctioned territories, or located in Russia or Belarus
Not accepted
-
Vulnerability reports with no merged patch behind them, which earn nothing on Google's rail
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-2026-13346 | pip would incorrectly handle doubly-encoded package URLs from indexes allowing for files to be installed to arbitrary locations on disk even when installing wheels. This vulnerability requires downloading or installing a package from a malicious package index to succeed, malicious packages alone are not able to exploit this vulnerability. Note that this vulnerability only materially impacts users | Medium 5.6 | 29 Jul 2026 |
| CVE-2026-8643 | pip would treat console_scripts and gui_scripts as paths instead of file names without sanitizing the resolved absolute path to the installation directory, leading to entry points being installed outside the installation directory. | Medium 4.1 | 1 Jun 2026 |
| CVE-2023-5752 | When installing a package from a Mercurial VCS URL (ie "pip install hg+...") with pip prior to v23.3, the specified Mercurial revision could be used to inject arbitrary configuration options to the "hg clone" call (ie "--config"). Controlling the Mercurial configuration can modify how and which repository is installed. This vulnerability does not affect users who aren't installing from Mercurial. | Medium 5.5 | 25 Oct 2023 |
| CVE-2022-21668 | pipenv is a Python development workflow tool. Starting with version 2018.10.9 and prior to version 2022.1.8, a flaw in pipenv's parsing of requirements files allows an attacker to insert a specially crafted string inside a comment anywhere within a requirements.txt file, which will cause victims who use pipenv to install the requirements file to download dependencies from a package index server co | High 8.0 | 10 Jan 2022 |
| CVE-2021-3572 | A flaw was found in python-pip in the way it handled Unicode separators in git references. A remote attacker could possibly use this issue to install a different revision on a repository. The highest threat from this vulnerability is to data integrity. This is fixed in python-pip version 21.1. | Medium 5.7 | 10 Nov 2021 |
| CVE-2019-20916 | The pip package before 19.2 for Python allows Directory Traversal when a URL is given in an install command, because a Content-Disposition header can have ../ in a filename, as demonstrated by overwriting the /root/.ssh/authorized_keys file. This occurs in _download_http_url in _internal/download.py. | High 7.5 | 4 Sep 2020 |
| CVE-2018-20225 | An issue was discovered in pip (all versions) because it installs the version with the highest version number, even if the user had intended to obtain a private package from a private index. This only affects use of the --extra-index-url option, and exploitation requires that the package does not already exist in the public index (and thus the attacker can put the package there with an arbitrary v | High 7.8 | 8 May 2020 |
| CVE-2013-5123 | The mirroring support (-M, --use-mirrors) in Python Pip before 1.5 uses insecure DNS querying and authenticity checks which allows attackers to perform man-in-the-middle attacks. | Medium 5.9 | 5 Nov 2019 |
| CVE-2014-8991 | pip 1.3 through 1.5.6 allows local users to cause a denial of service (prevention of package installation) by creating a /tmp/pip-build-* file for another user. | Low 2.1 | 24 Nov 2014 |
| CVE-2013-1888 | pip before 1.3 allows local users to overwrite arbitrary files via a symlink attack on a file in the /tmp/pip-build temporary directory. | Low 2.1 | 17 Aug 2013 |
| CVE-2013-1629 | pip before 1.3 uses HTTP to retrieve packages from the PyPI repository, and does not perform integrity checks on package contents, which allows man-in-the-middle attackers to execute arbitrary code via a crafted response to a "pip install" operation. | Medium 6.8 | 6 Aug 2013 |
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 This project runs no bounty of its own. sorona.xyz pays you directly on qualified, reproduced findings. Severity │ sorona.xyz pays Critical │ $1,500+ High │ $700+ Medium │ $300+ Low │ $100 / 1 month Claude Max Submit a vulnerability Separately, for a merged upstream patch : up to $5,000 Google Patch Rewards pays for a patch you get accepted upstream and that stays merged, without reverts, for one month. It does not pay for the report. setuptools sits in Tier 2, which caps at $5,000; the $15,000 headline is the Tier 1 column and is not reachable here. Memory-safety hardening can carry a 2× or 3× multiplier. Patches must be between one and twelve months old, submissions are rate-limited to three a month, and sanctions and territory exclusions apply. CVE history 3 Last 12 months 10 Lifetime Code execution 35 % Parsing/validation 30 % Denial of service 20 % Access control 10 % Latest advisories Loading the feed Overview setuptools is the default build backend for the Python ecosystem, present in essentially every Python environment, virtualenv, container image and CI runner, with pkg_resources still imported by a long tail of legacy packages. It is the component that actually executes third-party code during pip install of a source distribution, so it is the concrete mechanism behind Python's install-time code execution risk. CVE-2024-6345 is the reference point: a crafted package index reached straight through to remote code execution. Ten advisories lifetime is modest for something sitting on that much of the world's build infrastructure. The Python Software Foundation runs no bug bounty and PyPA pays nothing, so sorona.xyz pays you directly on qualified, reproduced findings. In scope Reports go to PyPA through the process in the project's SECURITY.md, against setuptools itself. pip , wheel and packaging are separate projects, so the boundary is the setuptools tree and all of it The PEP 517 build-backend entry points in full, the mechanism by which pip install executes arbitrary code out of a source distribution easy_install and PackageIndex , including URL and link handling and the download-and-execute path behind them pkg_resources as a whole: requirement, version and metadata parsing across METADATA , PKG-INFO and entry points sdist and egg unpacking, including archive path handling at extraction time setup.py argument and configuration handling wherever attacker-controlled project metadata reaches a subprocess Out of scope pip itself, which is a separate and higher-tier entry with its own scope row wheel and packaging , which are separate OSS-Fuzz projects and separate submissions Malicious packages published to PyPI, which is an ecosystem-abuse problem rather than a setuptools defect Vulnerability reports with no merged patch behind them, which earn nothing on Google's rail Patches outside the one-to-twelve-month age window the program requires Most-valued findings Code execution reached through the package-index download path or the PEP 517 build-backend entry points, the largest bug class here at 35% and the one CVE-2024-6345 demonstrated end to end from a crafted index Path traversal on sdist or egg extraction that writes outside the build directory, the CVE-2025-47273 shape and a direct route from an installed package to the developer's filesystem Metadata parsing defects in pkg_resources where a crafted METADATA , PKG-INFO or entry-point declaration changes what gets executed or resolved Catastrophic-backtracking regular expressions in requirement or version parsing, the CVE-2022-40897 shape, which stalls installs across every CI runner that touches the package Anything reachable during an ordinary pip install of an untrusted source distribution, since that is the path most Python users take without inspecting anything first Program rules Submit through sorona.xyz. This project runs no bounty of its own; we validate, coordinate disclosure with the maintainers, and pay you directly. The cash on Google's rail is paid for a merged upstream patch. A vulnerability report on its own earns nothing there Keep the patch merged, without reverts, for one month before claiming, and submit it while it is between one and twelve months old Three Patch Rewards submissions per person per month is the hard cap The sibling PyPA projects wheel and packaging are separate OSS-Fuzz entries, so a patch to either is its own submission rather than a setuptools one Google cannot pay individuals or entities on sanctions lists, in sanctioned territories, or located in Russia or Belarus Disclosure Reports go to PyPA through the process in the project's SECURITY.md, and the Python Software Foundation states plainly that it runs no bug bounty programs, so nothing is paid for them. 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