- Top reward
- $1,500
- Top severity paid
- Critical
- Assets in scope
- 10
- Public CVEs
- 24
- 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
10 assets you may test, 6 excluded.
Web 1
- https://pip.pypa.io
Products and areas 9
- Archive handling in full, covering wheel and sdist extraction, path traversal on unpack, and symlink handling
- Build-backend invocation through setup.py and pyproject.toml, which is arbitrary code execution at install time and therefore worth attacking from the metadata side
- Credential handling for ~/.netrc, keyring integrations and index URLs that carry secrets, including anything that sends a credential to the wrong host
- Hash and integrity checking, including any gap that lets --require-hashes or a --hash pin be satisfied by content that does not match
- Installation targets and environment handling, covering virtual environments, --target and --prefix, and anything that writes outside where the user asked
- Metadata parsing across every format pip reads, including wheel metadata, requirement specifiers, constraint files and requirements files
- Reports go through the PyPA security process described in SECURITY.md and cover pip itself. setuptools, wheel and packaging are separate upstreams with their own processes
- The network layer and pip's local HTTP cache, where one install can seed what a later install trusts
- The whole index and resolver path: how --index-url and --extra-index-url are handled, how candidates are selected, and any dependency confusion between a private and a public index
Out of scope (6)
- Bugs in setuptools, wheel or packaging proper, which are separate upstreams with their own OSS-Fuzz entries
- Malicious packages published to PyPI, which are an ecosystem abuse problem rather than a defect in pip
- One-line fixes for non-exploitable crashes, which the Patch Rewards rules will not reward, including crashes that come from resource exhaustion
- Patches the maintainers decline, patches under one month or over twelve months old, and anything past three submissions a person a month
- PyPI itself, the Warehouse service, which is a separate codebase with no cash pathway of its own
- Reports without a merged patch, as far as the Google pathway is concerned: on that rail there is no reward for a report alone
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.
-
Report privately through the PyPA security process described in SECURITY.md, with a detailed reproduction; an unreproducible report is not eligible
-
Show the bug in pip itself rather than in setuptools, wheel or packaging, each of which is a separate upstream
-
Give the maintainers room to ship a release before any public writeup
-
The Google patch money is the only cash path here, and it is a separate pathway: you land the fix upstream yourself and keep it merged, without reverts, for one month
-
On that pathway a patch must be at least one month and under twelve months old, you may submit at most three a month, and the maintainers decide whether to accept it
-
Google cannot pay anyone on a sanctions list, in a sanctioned territory, or located in Russia or Belarus
Not accepted
-
Malicious packages published to PyPI
-
Bugs in setuptools, wheel or packaging proper
-
One-line fixes for non-exploitable crashes
-
crashes that come from resource exhaustion
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 $15,000 Google Patch Rewards pays on the Tier 1 named-project row, listed under "Security-relevant bits of common package managers", for a patch you get accepted upstream and that stays merged, without reverts, for one month. It does not pay for the report. The Tier 1 column runs from $500 for a one-liner to $15,000 for a complicated, high-impact change, and the panel sets the final figure. The patch must be at least one month and under twelve months old, it is rate-limited to three submissions a person a month, and the maintainers decide whether to accept it. CVE history 10 Last 12 months 24 Lifetime Parsing/validation 30 % Code execution 30 % Access control 20 % Info disclosure 15 % Latest advisories Loading the feed Overview pip ships with CPython and is the default install path for the whole Python ecosystem. It is invoked as root inside a very large share of container builds and CI pipelines, and it executes arbitrary build-backend code by design when it installs an sdist, so the distance between a pip defect and code execution on a build machine is short. CVE-2025-8869 is the reference point: a tarball symlink extraction fallback that allowed writes outside the target directory. Its behaviour across multiple indexes is also the mechanism behind an entire class of real corporate compromises. The Python Software Foundation runs no bug bounty, so sorona.xyz pays you directly on a qualified, reproduced finding. In scope Reports go through the PyPA security process described in SECURITY.md and cover pip itself. setuptools, wheel and packaging are separate upstreams with their own processes The whole index and resolver path: how --index-url and --extra-index-url are handled, how candidates are selected, and any dependency confusion between a private and a public index Archive handling in full, covering wheel and sdist extraction, path traversal on unpack, and symlink handling Metadata parsing across every format pip reads, including wheel metadata, requirement specifiers, constraint files and requirements files Build-backend invocation through setup.py and pyproject.toml, which is arbitrary code execution at install time and therefore worth attacking from the metadata side Hash and integrity checking, including any gap that lets --require-hashes or a --hash pin be satisfied by content that does not match The network layer and pip's local HTTP cache, where one install can seed what a later install trusts Credential handling for ~/.netrc, keyring integrations and index URLs that carry secrets, including anything that sends a credential to the wrong host Installation targets and environment handling, covering virtual environments, --target and --prefix, and anything that writes outside where the user asked Out of scope PyPI itself, the Warehouse service, which is a separate codebase with no cash pathway of its own Malicious packages published to PyPI, which are an ecosystem abuse problem rather than a defect in pip Bugs in setuptools, wheel or packaging proper, which are separate upstreams with their own OSS-Fuzz entries Reports without a merged patch, as far as the Google pathway is concerned: on that rail there is no reward for a report alone One-line fixes for non-exploitable crashes, which the Patch Rewards rules will not reward, including crashes that come from resource exhaustion Patches the maintainers decline, patches under one month or over twelve months old, and anything past three submissions a person a month Most-valued findings An extraction flaw that writes outside the target directory, through path traversal or a symlink fallback. That is the CVE-2025-8869 shape and it lands as root in most container builds Index or resolver trust confusion that lets a public index satisfy a requirement the operator intended a private index to serve. That is the dependency-confusion mechanism behind real corporate compromises An integrity-checking gap where --require-hashes or a pinned hash is satisfied by content that does not match, since that is the one control careful users rely on Metadata parsing that reaches build-backend invocation earlier or more broadly than the user asked for, turning a resolution step into code execution Cache poisoning where one install seeds artefacts a later install trusts, which persists across pipeline runs on the same runner 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. Report privately through the PyPA security process described in SECURITY.md, with a detailed reproduction; an unreproducible report is not eligible Show the bug in pip itself rather than in setuptools, wheel or packaging, each of which is a separate upstream Give the maintainers room to ship a release before any public writeup The Google patch money is the only cash path here, and it is a separate pathway: you land the fix upstream yourself and keep it merged, without reverts, for one month On that pathway a patch must be at least one month and under twelve months old, you may submit at most three a month, and the maintainers decide whether to accept it Google cannot pay anyone on a sanctions list, in a sanctioned territory, or located in Russia or Belarus Disclosure Coordinated with the PyPA maintainers, who fix privately, ship a release and publish an advisory that flows into the Python advisory database with reporter credit. Hold the detail until that release is out, because pip updates itself across CI fleets slowly and the window matters. Nothing in the Patch Rewards rules restricts who may help you prepare or route the report. 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