{"id":"CVE-2026-16493","title":"Ansible-core: argument injection in ansible-galaxy collection install via git clone (incomplete fix for cve-2026-11332)","summary":"A flaw was found in ansible-core. The _extract_collection_from_git() function in ansible-core's concrete_artifact_manager.py constructs git clone commands without a '--' (end-of-options) separator before user-supplied URLs when installin…","severity":"high","cvss":7.8,"cvssVector":"CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H","cvssSource":"cna","cwe":["CWE-88"],"vendor":"Red Hat","product":"ansible-core","affected":["ansible-core (all versions)","ansible-core (all versions)","pulpcore-obsolete-packages (all versions)","python3.12-pulpcore (all versions)","ansible-core (all versions)","ansible-core (all versions)","ansible-core (all versions)","ansible-core (all versions)","ansible-core (all versions)"],"ssvc":{"exploitation":"none","automatable":"no","technicalImpact":"total","timestamp":"2026-07-22T14:20:53.644688Z"},"published":"2026-07-21","updated":"2026-11-04","sourceUpdated":"2026-11-04T22:09:04.660Z","source":"CVEORG","sourceUrl":"https://www.cve.org/CVERecord?id=CVE-2026-16493","references":[{"url":"https://access.redhat.com/errata/RHSA-2026:63385","label":"RHSA-2026:63385"},{"url":"https://access.redhat.com/errata/RHSA-2026:63386","label":"RHSA-2026:63386"},{"url":"https://access.redhat.com/errata/RHSA-2026:63387","label":"RHSA-2026:63387"},{"url":"https://access.redhat.com/security/cve/CVE-2026-16493"},{"url":"https://bugzilla.redhat.com/show_bug.cgi?id=2503724","label":"RHBZ#2503724"}],"tags":["cve.org"],"epss":0.00268,"epssPercentile":0.19017,"ingestedAt":"2026-11-05T21:36:00.634Z","slug":"CVE-2026-16493","body":"## Overview\n\nA flaw was found in ansible-core. The _extract_collection_from_git() function in ansible-core's concrete_artifact_manager.py constructs git clone commands without a '--' (end-of-options) separator before user-supplied URLs when installing collections from git sources. An attacker who provides a crafted collection source URI containing git argument injection payloads can achieve arbitrary command execution when a user runs 'ansible-galaxy collection install' with the malicious source. This is an incomplete fix for CVE-2026-11332, which hardened the role install path but missed the equivalent collection install code path.\n\n## Affected\n\n- `ansible-core (all versions)`\n- `ansible-core (all versions)`\n- `pulpcore-obsolete-packages (all versions)`\n- `python3.12-pulpcore (all versions)`\n- `ansible-core (all versions)`\n- `ansible-core (all versions)`\n- `ansible-core (all versions)`\n- `ansible-core (all versions)`\n- `ansible-core (all versions)`\n\n## Remediation\n\nRefer to the linked advisories for vendor-supplied fixes and affected version ranges.\n\n### Workarounds\n\nThe following practices would help for avoiding exposure and mitigate this flaw:\n\n1. Do not install Ansible collections from untrusted or unverified git sources. Only install collections from trusted sources such as Ansible Galaxy (https://galaxy.ansible.com), Red Hat Automation Hub (https://console.redhat.com/ansible/automation-hub), or verified internal repositories using HTTPS URLs.\n\n2. Carefully inspect any requirements.yml files before running 'ansible-galaxy collection install -r requirements.yml'. Verify that all collection sources use legitimate HTTPS URLs and do not contain git+ prefixed URIs with suspicious characters (especially values starting with '-').\n\n3. Ensure your system's git version is 2.12 or later, which disables the ext:: transport by default. While this does not fully prevent exploitation (the -ccore.sshCommand technique bypasses transport restrictions), it eliminates one of the exploitation vectors.\n\n4. Restrict the GIT_ALLOW_PROTOCOL environment variable to only necessary protocols (e.g. https, ssh) and never include 'ext' unless absolutely required.","depth":"twilight","depthScore":43,"depthScoreParts":{"impact":42.9,"likelihood":0.1,"exploitation":0,"ransomware":0},"changes":[]}