CVE-2026-90959
Pulpcore: pulpcore: file:// scheme allowlist bypass in content upload file_url field enables arbitrary file read and pulp container registry signing key theft
What happened?
A path traversal vulnerability was found in pulpcore. The content upload API accepts a 'file_url' parameter that allows users with file repository privileges to specify a local file URL for Pulp to download and store. A URL scheme validation check uses a string prefix comparison that only rejects URLs beginning with 'file://', but Python's URL parser recognizes the 'file:' scheme without double slashes, creating a mismatch between what is validated and what is dispatched to the file downloader. An authenticated user with low-privilege repository permissions can supply a specially crafted URL using relative path traversal sequences to read any file accessible to the Pulp server process. In deployments that include Pulp Container, successful exploitation allows an attacker to read the container registry token signing private key and forge bearer tokens, granting unauthorized access to all private container repositories in the affected registry.
Affected software and versions
| Software | Version information | Fixed version |
|---|---|---|
| python3.12-pulpcoreRed Hat | unaffected: 0:3.49.71-1.el9ap to < * | See vendor advisory |
| ansible-automation-platform-26/hub-rhel9Red Hat | unaffected: 1791947385 to < * | See vendor advisory |
| ansible-automation-platform-27/hub-rhel9Red Hat | unaffected: 1792388670 to < * | See vendor advisory |
| ansible-automation-platform-24/hub-rhel8Red Hat | Default status: unaffected | See vendor advisory |
| ansible-automation-platform-25/hub-rhel8Red Hat | Default status: affected | See vendor advisory |
| pulpcore-selinuxRed Hat | Default status: unaffected | See vendor advisory |
| python3.11-pulpcoreRed Hat | Default status: unaffected | See vendor advisory |
| python3x-pulpcoreRed Hat | Default status: unaffected | See vendor advisory |
| python-pulpcoreRed Hat | Default status: unaffected | See vendor advisory |
| pulpcore-obsolete-packagesRed Hat | Default status: unaffected | See vendor advisory |
| pulpcore-selinuxRed Hat | Default status: unaffected | See vendor advisory |
| python3.12-pulpcoreRed Hat | Default status: affected | See vendor advisory |
| python-pulpcoreRed Hat | Default status: affected | See vendor advisory |
| rubygem-pulpcore_clientRed Hat | Default status: unaffected | See vendor advisory |
| pulpcore-selinuxRed Hat | Default status: unaffected | See vendor advisory |
| python-pulpcoreRed Hat | Default status: unaffected | See vendor advisory |
| python-pulpcore-clientRed Hat | Default status: unaffected | See vendor advisory |
| python-pulpcore-clientRed Hat | Default status: unaffected | See vendor advisory |
| rhui5/rhua-rhel9Red Hat | Default status: affected | See vendor advisory |
| rhui5/rhua-tp-rhel9Red Hat | Default status: unaffected | See vendor advisory |
Version information comes from the source record and can include unaffected products and exceptions. Distribution packages may contain backported fixes: an older upstream version alone does not prove a server is affected.
Is it being exploited?
This CVE was not listed in the CISA catalogue at our last retrieval. This does not establish that exploitation is absent.
How to respond
- Confirm the product, installed package version, and any configuration requirements in the vendor advisory.
- Follow the vendor’s remediation or workaround guidance in the references below. Structured fixed-version data is unavailable here; the publisher’s description may include a fix or workaround.
- Restart affected services if required, then verify the running version. Known exploitation may warrant investigation as well as patching.