Ansible FreeBSD Jail Connection Plugin: Jail escape via symlink following in put_file (host-side root mv)
Key facts
- Attack vector
- Network
- Privileges required
- None
- User interaction
- None
- Attack complexity
- High
- Attack requirements
- None
- Impact type
- —
- Confidentiality · integrity · availability
- None · High · None
- Fix status
- Fixed
Attack profile from CVSS 4.0 · CNA. Fix status from CNA and GitHub.
Summary
Ansible FreeBSD Jail Connection Plugin is an Ansible connection plugin for FreeBSD Jails via jexec. Through version 1.3.0, the jailexec connection plugin's put_file resolved a transfer's destination to a path on the jail host ( + ) and ran mkdir -p and mv there as root on the host. Those commands follow symbolic links, and the path was operated on outside the jail, so a symlink existing inside the jail was followed by the host-side, root-privileged mv. A party controlling content inside a managed jail (the jail's root, or any process able to create a symlink in a directory an Ansible task later writes to) can therefore cause an arbitrary root-owned write on the host, outside the jail — a full jail escape. Arbitrary root-owned host writes are readily escalated to host compromise (e.g. cron, rc.d, authorized_keys). Preconditions for this vulnerability are that the operator runs a copy/template/fetch-style task (anything using put_file) against the jail, and the attacker can place a symlink inside the jail at or above the task's destination before the transfer runs. This issue has been fixed in version 2.0.0.
Why it matters now
SSVC decision points
CISA ADP · SSVC 2.0.3
- Exploitation
- None
- Automatable
- No
- Technical impact
- Partial
The decision (Track, Attend, Act) also depends on your mission and well-being impact; see CISA's SSVC guide.
Affected products
| Vendor | Product | Affected versions | Fixed in | Status | Source |
|---|---|---|---|---|---|
| chofstede | ansible_jailexec | before 2.0.0 | 2.0.0 | Patch available | CNA |
| — | ansible-jailexec (PyPI) | before 2.0.0 | 2.0.0 | Patch available | GHSA-cxgv-hp74-jj7r |
- ansible_jailexec Vendorchofstede Affected before 2.0.0 Fixed in 2.0.0 Patch available CNA
- ansible-jailexec (PyPI) Vendor— Affected before 2.0.0 Fixed in 2.0.0 Patch available GHSA-cxgv-hp74-jj7r
Remediation
- Fix · CNA ansible_jailexec (chofstede) Fixed in 2.0.0
- Fix · GHSA-cxgv-hp74-jj7r ansible-jailexec (PyPI) Fixed in 2.0.0 Advisory →
Timeline
- 2026-10-02 Threatist record created from CVE-2026-55074
- 2026-10-03 Alias added: GHSA-cxgv-hp74-jj7r
References
Other 6
- https://github.com/chofstede/ansible_jailexec/security/advisories/GHSA-cxgv-hp74-jj7r
- https://github.com/chofstede/ansible_jailexec/pull/6
- https://github.com/chofstede/ansible_jailexec/commit/6e80eecb2db7aebd1258fded6ae5c3aba1dd4123
- https://github.com/chofstede/ansible_jailexec/blob/main/docs/security/advisory-2.0.0-jail-escape.md
- https://github.com/chofstede/ansible_jailexec/releases/tag/v2.0.0
- https://github.com/chofstede/ansible_jailexec
Sources
- CVE-2026-55074 · CVE Program
- CVE-2026-55074 · NVD
- FIRST EPSS
- GHSA-cxgv-hp74-jj7r · GitHub Advisory Database · CC BY 4.0
This product uses the NVD API but is not endorsed or certified by the NVD. Sources and licences