CVE-2026-89091
Ansible-core: ansible-core: ansible-galaxy collection install symlink path escape allows arbitrary file write / code execution
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.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- None
- User interaction
- Required
What an attacker can affect
- Confidentiality
- High
- Integrity
- High
- Availability
- High
Exploit likelihood
What each source reports
CVE List Score used
8.8
Ansible-core: ansible-core: ansible-galaxy collection install symlink path escape allows arbitrary file write / code execution
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.
- Record
CVE-2026-89091- CVSS 3.1
- 8.8 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H - Weakness
- CWE-59
- Updated
- 2026-11-03
EUVDEUVD-2026-95346
8.8
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.
- Record
EUVD-2026-95346- CVSS 3.1
- 8.8 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H - Updated
- 2026-11-03
GitHub AdvisoriesGHSA-4jhw-j7jr-j479
8.8
A flaw was found in ansible-core. When installing a collection with `ansible-galaxy collection...
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.
- Record
GHSA-4jhw-j7jr-j479- CVSS 3.1
- 8.8 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H - Weakness
- CWE-59
- Updated
- 2026-11-02
NVD
8.8
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.
- Record
CVE-2026-89091- CVSS 3.1
- 8.8 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H - Weakness
- CWE-59
- Updated
- 2026-11-05
OSVDEBIAN-CVE-2026-89091
8.8
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.
- Record
DEBIAN-CVE-2026-89091- CVSS 3.1
- 8.8 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H - Updated
- 2026-11-05
OSVUBUNTU-CVE-2026-89091
8.8
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.
- Record
UBUNTU-CVE-2026-89091- CVSS 3.1
- 8.8 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
Show 7 moreShow less
OSVAZL-107132 No score
CVE-2026-89091 affecting package ansible 2.17.11-1
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.
- Record
AZL-107132- Updated
- 2026-11-05
OSVopenSUSE-SU-2026:12172-1 No score
ansible-core-2.21.5-2.1 on GA media
These are all security issues fixed in the ansible-core-2.21.5-2.1 package on the GA media of openSUSE Tumbleweed.
- Record
openSUSE-SU-2026:12172-1- Updated
- 2026-11-02
OSVopenSUSE-SU-2026:12173-1 No score
ansible-core-2.18-2.18.19-3.1 on GA media
These are all security issues fixed in the ansible-core-2.18-2.18.19-3.1 package on the GA media of openSUSE Tumbleweed.
- Record
openSUSE-SU-2026:12173-1- Updated
- 2026-11-02
OSVopenSUSE-SU-2026:12174-1 No score
ansible-core-2.19-2.19.14-2.1 on GA media
These are all security issues fixed in the ansible-core-2.19-2.19.14-2.1 package on the GA media of openSUSE Tumbleweed.
- Record
openSUSE-SU-2026:12174-1- Updated
- 2026-11-02
OSVopenSUSE-SU-2026:12175-1 No score
ansible-core-2.20-2.20.10-2.1 on GA media
These are all security issues fixed in the ansible-core-2.20-2.20.10-2.1 package on the GA media of openSUSE Tumbleweed.
- Record
openSUSE-SU-2026:12175-1- Updated
- 2026-11-02
OSVopenSUSE-SU-2026:22172-1 No score
Security update for ansible-core
This update for ansible-core fixes the following issues:
- CVE-2026-89091: an attacker 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 (bsc#1284847).
- Record
openSUSE-SU-2026:22172-1- Updated
- 2026-11-02
OSVSUSE-SU-2026:24464-1 No score
Security update for ansible-core
This update for ansible-core fixes the following issues:
- CVE-2026-89091: an attacker 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 (bsc#1284847).
- Record
SUSE-SU-2026:24464-1- Updated
- 2026-11-04
Affected products
- red hat migration toolkit for applications 8
- red hat migration toolkit for virtualization
- red hat openshift service mesh 3
- red hat advanced cluster management for kubernetes 2
- red hat ansible automation platform 2
- red hat ansible automation platform ansible core 2
- red hat certification program for red hat enterprise linux 9
- red hat discovery 2
- red hat enterprise linux 10
- red hat enterprise linux 8
- red hat enterprise linux 9
- red hat openshift container platform 4
Affected packages
| Package | Affected | Fixed |
|---|---|---|
ansibleAzure Linux:3 |
through 2.17.11-1 | None known |
ansible-coreDebian:12 |
All versions, plus listed versions 2.14.10-12.14.11-12.14.11-22.14.13-12.14.16-0+deb12u1 Show 45 moreShow less2.14.18-0+deb12u12.14.18-0+deb12u22.14.3-12.14.6-12.14.7-12.14.8-12.14.9-12.14.9-22.16.5-12.16.6-12.17.0-12.17.1-12.17.2-12.17.3-12.17.5-12.17.5-22.17.5-32.17.5-42.17.5-52.18.0-12.18.0-22.18.1-12.18.1-22.18.1-32.18.1-42.18.3-12.19.0-12.19.0~beta1-12.19.0~beta1-22.19.0~beta2-12.19.0~beta4-12.19.0~beta5-12.19.0~beta6-12.19.0~rc2-12.19.1-12.19.2-12.19.3-12.19.3-22.19.4-12.19~pre20250506~462affa7c4-12.19~pre20250510~5347d4d4fc-12.20.1-12.20.3-12.21.0-12.21.1~rc1-1 |
None known |
ansible-coreDebian:13 |
All versions, plus listed versions 2.19.0-12.19.0~beta6-12.19.0~rc2-12.19.1-0+deb13u12.19.1-1 Show 14 moreShow less2.19.11-0+deb13u12.19.2-12.19.3-12.19.3-22.19.4-0+deb13u12.19.4-12.20.1-12.20.3-12.21.0-12.21.1~rc1-12.21.1~rc1-22.21.2-12.22.0~beta1-12.22.0~beta2-1 |
None known |
ansible-coreDebian:14 |
All versions, plus listed versions 2.19.0-12.19.0~beta6-12.19.0~rc2-12.19.1-12.19.2-1 Show 11 moreShow less2.19.3-12.19.3-22.19.4-12.20.1-12.20.3-12.21.0-12.21.1~rc1-12.21.1~rc1-22.21.2-12.22.0~beta1-12.22.0~beta2-1 |
None known |
ansible-coreSUSE:Linux Enterprise Server 16.0 |
before 2.18.3-160000.5.1 | 2.18.3-160000.5.1 |
ansible-coreSUSE:Linux Enterprise Server for SAP applications 16.0 |
before 2.18.3-160000.5.1 | 2.18.3-160000.5.1 |
ansibleUbuntu:Pro:14.04:LTS |
All versions, plus listed versions 1.1+dfsg-11.3.4+dfsg-11.4.0+dfsg-11.4.1+dfsg-11.4.3+dfsg-1 Show 5 moreShow less1.4.4+dfsg-11.5.4+dfsg-11.5.4+dfsg-1ubuntu0.1~esm11.5.4+dfsg-1ubuntu0.1~esm21.5.4+dfsg-1ubuntu0.1~esm3 |
None known |
ansibleUbuntu:Pro:16.04:LTS |
All versions, plus listed versions 1.9.2+dfsg-21.9.4-12.0.0.2-22.0.0.2-2ubuntu12.0.0.2-2ubuntu1.1 Show 8 moreShow less2.0.0.2-2ubuntu1.22.0.0.2-2ubuntu1.32.0.0.2-2ubuntu1.3+esm12.0.0.2-2ubuntu1.3+esm22.0.0.2-2ubuntu1.3+esm32.0.0.2-2ubuntu1.3+esm42.0.0.2-2ubuntu1.3+esm52.0.0.2-2ubuntu1.3+esm6 |
None known |
ansibleUbuntu:Pro:18.04:LTS |
All versions, plus listed versions 2.3.1.0+dfsg-22.5.0+dfsg-12.5.1+dfsg-12.5.1+dfsg-1ubuntu0.12.5.1+dfsg-1ubuntu0.1+esm1 Show 4 moreShow less2.5.1+dfsg-1ubuntu0.1+esm22.5.1+dfsg-1ubuntu0.1+esm32.5.1+dfsg-1ubuntu0.1+esm42.5.1+dfsg-1ubuntu0.1+esm5 |
None known |
ansibleUbuntu:Pro:20.04:LTS |
All versions, plus listed versions 2.8.3+dfsg-12.8.6+dfsg-12.9.2+dfsg-12.9.4+dfsg-12.9.6+dfsg-12.9.6+dfsg-1ubuntu0.1~esm12.9.6+dfsg-1ubuntu0.1~esm22.9.6+dfsg-1ubuntu0.1~esm3 |
None known |
Show 13 moreShow less
| Package | Affected | Fixed |
|---|---|---|
ansible-coreUbuntu:22.04:LTS |
All versions, plus listed versions 2.12.0-12.12.0-1ubuntu0.1 |
None known |
ansibleUbuntu:Pro:22.04:LTS |
All versions, plus listed versions 2.10.7+merged+base+2.10.8+dfsg-12.10.7+merged+base+2.10.8+dfsg-1ubuntu0.1~esm12.10.7+merged+base+2.10.8+dfsg-1ubuntu0.1~esm4 |
None known |
ansibleUbuntu:24.04:LTS |
All versions, plus listed versions 7.7.0+dfsg-17.7.0+dfsg-39.2.0+dfsg-0ubuntu49.2.0+dfsg-0ubuntu5 |
None known |
ansible-coreUbuntu:24.04:LTS |
All versions, plus listed versions 2.14.9-22.14.11-12.14.11-22.14.13-12.16.3-0ubuntu12.16.3-0ubuntu2 |
None known |
ansibleUbuntu:26.10 |
All versions, plus listed versions 13.1.0+dfsg-1ubuntu113.4.0+dfsg-1 |
None known |
ansible-coreUbuntu:26.10 |
All versions, plus listed versions 2.20.1-12.21.1~rc1-12.21.1~rc1-22.21.1~rc1-2ubuntu12.22.0~beta2-1 |
None known |
ansibleUbuntu:26.04:LTS |
All versions, plus listed versions 12.0.0~b1+dfsg-112.0.0+dfsg-112.2.0+dfsg-113.1.0+dfsg-113.1.0+dfsg-1ubuntu1 |
None known |
ansible-coreUbuntu:26.04:LTS |
All versions, plus listed versions 2.19.0-1ubuntu12.19.4-12.20.1-1 |
None known |
ansible-coreopenSUSE:Tumbleweed |
before 2.21.5-2.1 | 2.21.5-2.1 |
ansible-core-2.18openSUSE:Tumbleweed |
before 2.18.19-3.1 | 2.18.19-3.1 |
ansible-core-2.19openSUSE:Tumbleweed |
before 2.19.14-2.1 | 2.19.14-2.1 |
ansible-core-2.20openSUSE:Tumbleweed |
before 2.20.10-2.1 | 2.20.10-2.1 |
ansible-coreopenSUSE:Leap 16.0 |
before 2.18.3-160000.5.1 | 2.18.3-160000.5.1 |
History
| Recorded | Changed | Sources |
|---|---|---|
| affected, aliases, facts, references | EUVD, NVD, OSV | |
| products | CVE List | |
| first indexed | CVE List, EUVD, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2026-89091 is a high vulnerability (CVSS 8.8) in Red Hat Migration Toolkit For Applications 8, published October 8, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.48%, the 41st percentile. Fixed in ansible-core 2.18.3-160000.5.1.
References
Left out here: 4 versions. The JSON record has them.