CVE-2026-89091 json
Ansible-core: ansible-core: ansible-galaxy collection install symlink path escape allows arbitrary file write / code execution
published 2026-10-08 31 d ago modified 2026-11-05 4 d ago also EUVD-2026-95346
- cvss
- 8.8
- version 3.1, CNA
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- 0.5%
- EPSS 0.5% chance of exploitation in 30 days, percentile 41%
- public exploits
- 0
- none known
Summary
A flaw was found in ansible-core. When installing a collection with `ansible-galaxy collection install`, the archive extractor validates member paths using lexical path normalisation (os.path.abspath) instead of resolving symbolic links (os.path.realpath), and it performs no containment check on symlink-typed directory members before creating them. A crafted collection tarball can chain symlink directory entries so that a subsequent file member is written outside the intended destination directory. This allows an attacker who can get a victim to install a malicious collection to overwrite arbitrary files with the privileges of the user running ansible-galaxy, leading to code execution on the control node. This is a bypass of the fix for CVE-2020-10691.
Patch / fix
- ansible-core SLES for SAP applications 16.0, SLES 16.0 2.18.3-160000.5.1
suse advisories SUSE-SU-2026:24464-1
- ansible-core-2.21 openSUSE Tumbleweed 2.21.6-1.1
- ansible-core openSUSE Leap 16.0 2.18.3-160000.5.1
- ansible-core openSUSE Tumbleweed 2.21.5-2.1
- ansible-core-2.18 openSUSE Tumbleweed 2.18.19-3.1
- ansible-core-2.19 openSUSE Tumbleweed 2.19.14-2.1
- ansible-core-2.20 openSUSE Tumbleweed 2.20.10-2.1
opensuse advisories openSUSE-SU-2026:12451-1openSUSE-SU-2026:22172-1openSUSE-SU-2026:12172-1openSUSE-SU-2026:12173-1openSUSE-SU-2026:12174-1openSUSE-SU-2026:12175-1
Vendor advisories
What the vendors themselves say about their products: affected, fixed or not affected, and what to do.
red hat product security vex CVE-2026-89091 updated cvss 8.8
ansible-core: ansible-core: ansible-galaxy collection install symlink path escape allows arbitrary file write / code execution
-
Red Hat Advanced Cluster Management for Kubernetes 2 rhacm2/volsync-rhel9, rhacm2/volsync-operator-bundleaffected: no fix available “Fix deferred”
-
Red Hat Ansible Automation Platform 2 ansible-core, ansible-automation-platform-24/hub-rhel8, ansible-automation-platform-25/hub-rhel8, ansible-automation-platform-26/hub-rhel9, ansible-automation-platform-27/hub-rhel9, ansible-automation-platform-24/ee-minimal-rhel8, +35 more Red Hat Ansible Automation Platform Ansible Core 2 ansible-automation-platform/ee-minimal-rhel8, ansible-automation-platform/ee-minimal-rhel9, ansible-automation-platform-tech-preview/ee-minimal-rhel8, ansible-automation-platform-tech-preview/ee-minimal-rhel9affected: no fix available
-
Red Hat Discovery 2 discovery/discovery-server-rhel9 Red Hat Enterprise Linux 8 ansible-core, ansible-test Red Hat Enterprise Linux 9 ansible-core, ansible-test Red Hat Enterprise Linux 10 ansible-core Red Hat OpenShift Container Platform 4 openshift4/ose-ansible-rhel9-operator Red Hat OpenShift Container Platform 5 openshift5/ose-ansible-rhel9-operatoraffected: no fix available “Fix deferred”
+3 more productsfewer
Red Hat OpenStack Platform 17.1 openstack-ansible-core Red Hat Satellite 6 ansible-core Red Hat Update Infrastructure 5 rhui5/rhua-rhel9, rhui5/rhua-tp-rhel9, rhui5/installer-rhel9, rhui5/installer-tp-rhel9 -
Red Hat Self-service automation portal 2 ansible-automation-platform/bootc-automation-portal-rhel9affected: no fix available
-
Red Hat Migration Toolkit for Applications 8 mta/mta-rhel9-operator Red Hat Migration Toolkit for Virtualization migration-toolkit-virtualization/mtv-rhel9-operator Red Hat OpenShift Service Mesh 3 openshift-service-mesh/kiali-rhel9-operator Red Hat Ansible Automation Platform 2 ansible-automation-platform-24/de-minimal-rhel8, ansible-automation-platform-24/de-minimal-rhel9, ansible-automation-platform-24/lightspeed-rhel8, ansible-automation-platform-25/de-minimal-rhel8, ansible-automation-platform-25/de-minimal-rhel9, ansible-automation-platform-25/lightspeed-rhel8, +3 more Red Hat Certification Program for Red Hat Enterprise Linux 9 rhcertification/redhat-certification-system-ai Red Hat OpenStack Platform 18.0 rhoso-operators/ee-openstack-ansible-ee-rhel9not affected: vulnerable code not present
Red Hat CSAF VEX © Red Hat, Inc., from https://security.access.redhat.com/data/csaf/v2/vex/; changed: reduced to product statuses and remediations. CC BY 4.0 · csaf
CISA SSVC
- Exploitation
- none
- Automatable
- no
- Technical impact
- total
- Assessed
- 30 d ago
Exploit prediction
0.48% chance of exploitation in the next 30 days, higher than 41% of all scored CVEs (FIRST EPSS, 2026-11-08).
CVSS scores
| assigned by | version | score | vector |
|---|---|---|---|
| CNA | 3.1 | 8.8 | CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H |
Affected products
- Red Hat Migration Toolkit for Applications 8
- Red Hat Migration Toolkit for Virtualization
- Red Hat OpenShift Service Mesh 3
- Red Hat Red Hat Advanced Cluster Management for Kubernetes 2
- Red Hat Red Hat Ansible Automation Platform 2
- Red Hat Red Hat Ansible Automation Platform Ansible Core 2
- Red Hat Red Hat Certification Program for Red Hat Enterprise Linux 9
- Red Hat Red Hat Discovery 2
- Red Hat Red Hat Enterprise Linux 10
- Red Hat Red Hat Enterprise Linux 8
- Red Hat Red Hat Enterprise Linux 9
- Red Hat Red Hat OpenShift Container Platform 4
- Red Hat Red Hat OpenShift Container Platform 5
- Red Hat Red Hat OpenStack Platform 17.1
- Red Hat Red Hat OpenStack Platform 18.0
- Red Hat Red Hat Satellite 6
- Red Hat Red Hat Update Infrastructure 5
- Red Hat Self-service automation portal 2
Classification
- Weakness
-
- CWE-59 Improper Link Resolution Before File Access
References
-
access.redhat.com
/security/cve/CVE-2026-89091
vdb-entry
-
bugzilla.redhat.com
/show_bug.cgi?id=2531646
issue-tracking
Sources
- CVE List CVE-2026-89091
- NVD CVE-2026-89091
Fencer Vulns keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.