Bug 2490703 (CVE-2026-12701) - CVE-2026-12701 pulpcore: pulpcore: relative_path_validator bypass via directory traversal in FilesystemExport
Summary: CVE-2026-12701 pulpcore: pulpcore: relative_path_validator bypass via directo...
Keywords:
Status: NEW
Alias: CVE-2026-12701
Deadline: 2026-07-20
Product: Security Response
Classification: Other
Component: vulnerability
Version: unspecified
Hardware: All
OS: Linux
high
high
Target Milestone: ---
Assignee: Product Security
QA Contact:
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2026-06-19 09:54 UTC by OSIDB Bzimport
Modified: 2026-07-20 19:29 UTC (History)
28 users (show)

Fixed In Version:
Clone Of:
Environment:
Last Closed:
Embargoed:


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Red Hat Product Errata RHSA-2026:42078 0 None None None 2026-07-20 16:00:06 UTC
Red Hat Product Errata RHSA-2026:42079 0 None None None 2026-07-20 16:02:47 UTC
Red Hat Product Errata RHSA-2026:42082 0 None None None 2026-07-20 16:01:26 UTC
Red Hat Product Errata RHSA-2026:42150 0 None None None 2026-07-20 19:29:23 UTC
Red Hat Product Errata RHSA-2026:42151 0 None None None 2026-07-20 19:29:41 UTC

Description OSIDB Bzimport 2026-06-19 09:54:05 UTC
A path traversal vulnerability was found in pulpcore's relative_path_validator (pulpcore/app/serializers/fields.py). The validator only checks os.path.isabs() to block paths starting with "/", but does not block "../" directory traversal sequences anywhere in the path.

When a user creates content via POST /api/v3/content/file/files/ with a crafted relative_path (e.g., "looking/normal/../../../../etc/cron.d/backdoor"), the value passes validation and is stored in ContentArtifact.relative_path. During FilesystemExport (pulpcore/app/tasks/export.py), os.path.join(path, relative_path) resolves outside the export directory, and the raw artifact content (fully attacker-controlled) is written to the escaped path.

The process runs as the "pulp" system user. File permission bits cannot be set by the attacker. FilesystemExport is only accessible to admin-level users (SSL cert auth in Satellite, admin role in RBAC deployments).

Affected: pulpcore (all versions through current HEAD 3.110.0.dev)
Fix: Not yet available (coordinating with upstream)
Reporter: Martin Brodeur (independent security researcher)
PSIRT Ticket: PSIRTSUPT-7617

Comment 2 errata-xmlrpc 2026-07-20 16:00:03 UTC
This issue has been addressed in the following products:

  Red Hat Ansible Automation Platform 2.5 for RHEL 9
  Red Hat Ansible Automation Platform 2.5 for RHEL 8

Via RHSA-2026:42078 https://access.redhat.com/errata/RHSA-2026:42078

Comment 3 errata-xmlrpc 2026-07-20 16:01:24 UTC
This issue has been addressed in the following products:

  Red Hat Satellite 6.16 for RHEL 8
  Red Hat Satellite 6.16 for RHEL 9

Via RHSA-2026:42082 https://access.redhat.com/errata/RHSA-2026:42082

Comment 4 errata-xmlrpc 2026-07-20 16:02:44 UTC
This issue has been addressed in the following products:

  Red Hat Ansible Automation Platform 2.6 for RHEL 9
  Red Hat Ansible Automation Platform 2.6 for RHEL 10

Via RHSA-2026:42079 https://access.redhat.com/errata/RHSA-2026:42079

Comment 5 errata-xmlrpc 2026-07-20 19:29:21 UTC
This issue has been addressed in the following products:

  Red Hat Satellite 6.17 for RHEL 9

Via RHSA-2026:42150 https://access.redhat.com/errata/RHSA-2026:42150

Comment 6 errata-xmlrpc 2026-07-20 19:29:38 UTC
This issue has been addressed in the following products:

  Red Hat Satellite 6.18 for RHEL 9

Via RHSA-2026:42151 https://access.redhat.com/errata/RHSA-2026:42151


Note You need to log in before you can comment on or make changes to this bug.