Every CVE Search/ Get API key

CVE-2026-89091

Ansible-core: ansible-core: ansible-galaxy collection install symlink path escape allows arbitrary file write / code execution

8.8 HighFix available

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

0.48%Unchanged since Oct 9, 2026
90%50%10%1%

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 HighCVSS: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 HighCVSS: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 HighCVSS: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 HighCVSS: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 HighCVSS: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 HighCVSS: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

Show 6 moreShow less

Affected packages

Affected packages
PackageAffectedFixed
ansible
Azure Linux:3
through 2.17.11-1 None known
ansible-core
Debian: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 less
2.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-core
Debian: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 less
2.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-core
Debian: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 less
2.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-core
SUSE:Linux Enterprise Server 16.0
before 2.18.3-160000.5.1
2.18.3-160000.5.1
ansible-core
SUSE:Linux Enterprise Server for SAP applications 16.0
before 2.18.3-160000.5.1
2.18.3-160000.5.1
ansible
Ubuntu: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 less
1.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
ansible
Ubuntu: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 less
2.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
ansible
Ubuntu: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 less
2.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
ansible
Ubuntu: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
Affected packages
PackageAffectedFixed
ansible-core
Ubuntu:22.04:LTS
All versions, plus listed versions
2.12.0-12.12.0-1ubuntu0.1
None known
ansible
Ubuntu: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
ansible
Ubuntu: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-core
Ubuntu: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
ansible
Ubuntu:26.10
All versions, plus listed versions
13.1.0+dfsg-1ubuntu113.4.0+dfsg-1
None known
ansible-core
Ubuntu: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
ansible
Ubuntu: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-core
Ubuntu:26.04:LTS
All versions, plus listed versions
2.19.0-1ubuntu12.19.4-12.20.1-1
None known
ansible-core
openSUSE:Tumbleweed
before 2.21.5-2.1
2.21.5-2.1
ansible-core-2.18
openSUSE:Tumbleweed
before 2.18.19-3.1
2.18.19-3.1
ansible-core-2.19
openSUSE:Tumbleweed
before 2.19.14-2.1
2.19.14-2.1
ansible-core-2.20
openSUSE:Tumbleweed
before 2.20.10-2.1
2.20.10-2.1
ansible-core
openSUSE:Leap 16.0
before 2.18.3-160000.5.1
2.18.3-160000.5.1

History

History
RecordedChangedSources
affected, aliases, facts, referencesEUVD, NVD, OSV
productsCVE List
first indexedCVE 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

Show 4 moreShow less
This page doesn't list everything

Left out here: 4 versions. The JSON record has them.

MoveEnter Open