Vulnerabilities > CVE-2020-1733 - Race Condition vulnerability in multiple products

047910
CVSS 5.0 - MEDIUM
Attack vector
LOCAL
Attack complexity
HIGH
Privileges required
LOW
Confidentiality impact
LOW
Integrity impact
LOW
Availability impact
LOW
local
high complexity
redhat
fedoraproject
debian
CWE-362
nessus

Summary

A race condition flaw was found in Ansible Engine 2.7.17 and prior, 2.8.9 and prior, 2.9.6 and prior when running a playbook with an unprivileged become user. When Ansible needs to run a module with become user, the temporary directory is created in /var/tmp. This directory is created with "umask 77 && mkdir -p <dir>"; this operation does not fail if the directory already exists and is owned by another user. An attacker could take advantage to gain control of the become user as the target directory can be retrieved by iterating '/proc/<pid>/cmdline'.

Vulnerable Configurations

Part Description Count
Application
Redhat
398
OS
Fedoraproject
3
OS
Debian
2

Common Attack Pattern Enumeration and Classification (CAPEC)

  • Leveraging Race Conditions
    This attack targets a race condition occurring when multiple processes access and manipulate the same resource concurrently and the outcome of the execution depends on the particular order in which the access takes place. The attacker can leverage a race condition by "running the race", modifying the resource and modifying the normal execution flow. For instance a race condition can occur while accessing a file, the attacker can trick the system by replacing the original file with his version and cause the system to read the malicious file.
  • Leveraging Time-of-Check and Time-of-Use (TOCTOU) Race Conditions
    This attack targets a race condition occurring between the time of check (state) for a resource and the time of use of a resource. The typical example is the file access. The attacker can leverage a file access race condition by "running the race", meaning that he would modify the resource between the first time the target program accesses the file and the time the target program uses the file. During that period of time, the attacker could do something such as replace the file and cause an escalation of privilege.

Nessus

  • NASL familyFedora Local Security Checks
    NASL idFEDORA_2020-F80154B5B4.NASL
    descriptionUpdate to upstream bugfix and security update 2.9.7. See https://github.com/ansible/ansible/blob/stable-2.9/changelogs/CHANGELO G-v2.9.rst for a detailed list of changes. Note that Tenable Network Security has extracted the preceding description block directly from the Fedora update system website. Tenable has attempted to automatically clean and format it as much as possible without introducing additional issues.
    last seen2020-06-06
    modified2020-04-27
    plugin id136002
    published2020-04-27
    reporterThis script is Copyright (C) 2020 and is owned by Tenable, Inc. or an Affiliate thereof.
    sourcehttps://www.tenable.com/plugins/nessus/136002
    titleFedora 31 : ansible (2020-f80154b5b4)
    code
    #
    # (C) Tenable Network Security, Inc.
    #
    # The descriptive text and package checks in this plugin were  
    # extracted from Fedora Security Advisory FEDORA-2020-f80154b5b4.
    #
    
    include("compat.inc");
    
    if (description)
    {
      script_id(136002);
      script_version("1.7");
      script_set_attribute(attribute:"plugin_modification_date", value:"2020/06/05");
    
      script_cve_id("CVE-2020-10684", "CVE-2020-10685", "CVE-2020-10691", "CVE-2020-1733", "CVE-2020-1735", "CVE-2020-1740", "CVE-2020-1746", "CVE-2020-1753");
      script_xref(name:"FEDORA", value:"2020-f80154b5b4");
      script_xref(name:"IAVB", value:"2019-B-0092");
    
      script_name(english:"Fedora 31 : ansible (2020-f80154b5b4)");
      script_summary(english:"Checks rpm output for the updated package.");
    
      script_set_attribute(
        attribute:"synopsis",
        value:"The remote Fedora host is missing a security update."
      );
      script_set_attribute(
        attribute:"description",
        value:
    "Update to upstream bugfix and security update 2.9.7. See
    https://github.com/ansible/ansible/blob/stable-2.9/changelogs/CHANGELO
    G-v2.9.rst for a detailed list of changes.
    
    Note that Tenable Network Security has extracted the preceding
    description block directly from the Fedora update system website.
    Tenable has attempted to automatically clean and format it as much as
    possible without introducing additional issues."
      );
      script_set_attribute(
        attribute:"see_also",
        value:"https://bodhi.fedoraproject.org/updates/FEDORA-2020-f80154b5b4"
      );
      # https://github.com/ansible/ansible/blob/stable-2.9/changelogs/CHANGELOG-v2.9.rst
      script_set_attribute(
        attribute:"see_also",
        value:"http://www.nessus.org/u?36c0680c"
      );
      script_set_attribute(
        attribute:"solution",
        value:"Update the affected ansible package."
      );
      script_set_cvss_base_vector("CVSS2#AV:L/AC:H/Au:N/C:P/I:P/A:P");
      script_set_cvss_temporal_vector("CVSS2#E:U/RL:OF/RC:C");
      script_set_cvss3_base_vector("CVSS:3.0/AV:L/AC:H/PR:L/UI:R/S:C/C:L/I:L/A:L");
      script_set_cvss3_temporal_vector("CVSS:3.0/E:U/RL:O/RC:C");
      script_set_attribute(attribute:"cvss_score_source", value:"CVE-2020-1733");
      script_set_attribute(attribute:"exploitability_ease", value:"No known exploits are available");
    
      script_set_attribute(attribute:"plugin_type", value:"local");
      script_set_attribute(attribute:"cpe", value:"p-cpe:/a:fedoraproject:fedora:ansible");
      script_set_attribute(attribute:"cpe", value:"cpe:/o:fedoraproject:fedora:31");
    
      script_set_attribute(attribute:"vuln_publication_date", value:"2020/03/11");
      script_set_attribute(attribute:"patch_publication_date", value:"2020/04/27");
      script_set_attribute(attribute:"plugin_publication_date", value:"2020/04/27");
      script_set_attribute(attribute:"generated_plugin", value:"current");
      script_set_attribute(attribute:"stig_severity", value:"II");
      script_end_attributes();
    
      script_category(ACT_GATHER_INFO);
      script_copyright(english:"This script is Copyright (C) 2020 and is owned by Tenable, Inc. or an Affiliate thereof.");
      script_family(english:"Fedora Local Security Checks");
    
      script_dependencies("ssh_get_info.nasl");
      script_require_keys("Host/local_checks_enabled", "Host/RedHat/release", "Host/RedHat/rpm-list");
    
      exit(0);
    }
    
    
    include("audit.inc");
    include("global_settings.inc");
    include("rpm.inc");
    
    
    if (!get_kb_item("Host/local_checks_enabled")) audit(AUDIT_LOCAL_CHECKS_NOT_ENABLED);
    release = get_kb_item("Host/RedHat/release");
    if (isnull(release) || "Fedora" >!< release) audit(AUDIT_OS_NOT, "Fedora");
    os_ver = pregmatch(pattern: "Fedora.*release ([0-9]+)", string:release);
    if (isnull(os_ver)) audit(AUDIT_UNKNOWN_APP_VER, "Fedora");
    os_ver = os_ver[1];
    if (! preg(pattern:"^31([^0-9]|$)", string:os_ver)) audit(AUDIT_OS_NOT, "Fedora 31", "Fedora " + os_ver);
    
    if (!get_kb_item("Host/RedHat/rpm-list")) audit(AUDIT_PACKAGE_LIST_MISSING);
    
    
    cpu = get_kb_item("Host/cpu");
    if (isnull(cpu)) audit(AUDIT_UNKNOWN_ARCH);
    if ("x86_64" >!< cpu && cpu !~ "^i[3-6]86$") audit(AUDIT_LOCAL_CHECKS_NOT_IMPLEMENTED, "Fedora", cpu);
    
    
    flag = 0;
    if (rpm_check(release:"FC31", reference:"ansible-2.9.7-1.fc31")) flag++;
    
    
    if (flag)
    {
      security_report_v4(
        port       : 0,
        severity   : SECURITY_NOTE,
        extra      : rpm_report_get()
      );
      exit(0);
    }
    else
    {
      tested = pkg_tests_get();
      if (tested) audit(AUDIT_PACKAGE_NOT_AFFECTED, tested);
      else audit(AUDIT_PACKAGE_NOT_INSTALLED, "ansible");
    }
    
  • NASL familyRed Hat Local Security Checks
    NASL idREDHAT-RHSA-2020-1541.NASL
    descriptionThe remote Redhat Enterprise Linux 7 / 8 host has packages installed that are affected by multiple vulnerabilities as referenced in the RHSA-2020:1541 advisory. - Ansible: code injection when using ansible_facts as a subkey (CVE-2020-10684) - Ansible: modules which use files encrypted with vault are not properly cleaned up (CVE-2020-10685) - Ansible: archive traversal vulnerability in ansible- galaxy collection install (CVE-2020-10691) - ansible: insecure temporary directory when running become_user from become directive (CVE-2020-1733) - ansible: path injection on dest parameter in fetch module (CVE-2020-1735) - ansible: Extract-Zip function in win_unzip module does not check extracted path (CVE-2020-1737) - ansible: svn module leaks password when specified as a parameter (CVE-2020-1739) - ansible: secrets readable after ansible-vault edit (CVE-2020-1740) - ansible: Information disclosure issue in ldap_attr and ldap_entry modules (CVE-2020-1746) - Ansible: kubectl connection plugin leaks sensitive information (CVE-2020-1753) Note that Nessus has not tested for this issue but has instead relied only on the application
    last seen2020-06-05
    modified2020-04-22
    plugin id135911
    published2020-04-22
    reporterThis script is Copyright (C) 2020 and is owned by Tenable, Inc. or an Affiliate thereof.
    sourcehttps://www.tenable.com/plugins/nessus/135911
    titleRHEL 7 / 8 : Ansible security and bug fix update (2.9.7) (Important) (RHSA-2020:1541)
  • NASL familyDebian Local Security Checks
    NASL idDEBIAN_DLA-2202.NASL
    descriptionSeveral vulnerabilities were discovered in Ansible, a configuration management, deployment, and task execution system. CVE-2019-14846 Ansible was logging at the DEBUG level which lead to a disclosure of credentials if a plugin used a library that logged credentials at the DEBUG level. This flaw does not affect Ansible modules, as those are executed in a separate process. CVE-2020-1733 A race condition flaw was found when running a playbook with an unprivileged become user. When Ansible needs to run a module with become user, the temporary directory is created in /var/tmp. This directory is created with
    last seen2020-06-06
    modified2020-05-07
    plugin id136367
    published2020-05-07
    reporterThis script is Copyright (C) 2020 and is owned by Tenable, Inc. or an Affiliate thereof.
    sourcehttps://www.tenable.com/plugins/nessus/136367
    titleDebian DLA-2202-1 : ansible security update
  • NASL familyRed Hat Local Security Checks
    NASL idREDHAT-RHSA-2020-1542.NASL
    descriptionThe remote Redhat Enterprise Linux 7 / 8 host has packages installed that are affected by multiple vulnerabilities as referenced in the RHSA-2020:1542 advisory. - Ansible: code injection when using ansible_facts as a subkey (CVE-2020-10684) - Ansible: modules which use files encrypted with vault are not properly cleaned up (CVE-2020-10685) - Ansible: archive traversal vulnerability in ansible- galaxy collection install (CVE-2020-10691) - ansible: insecure temporary directory when running become_user from become directive (CVE-2020-1733) - ansible: path injection on dest parameter in fetch module (CVE-2020-1735) - ansible: Extract-Zip function in win_unzip module does not check extracted path (CVE-2020-1737) - ansible: svn module leaks password when specified as a parameter (CVE-2020-1739) - ansible: secrets readable after ansible-vault edit (CVE-2020-1740) - ansible: Information disclosure issue in ldap_attr and ldap_entry modules (CVE-2020-1746) - Ansible: kubectl connection plugin leaks sensitive information (CVE-2020-1753) Note that Nessus has not tested for this issue but has instead relied only on the application
    last seen2020-06-05
    modified2020-04-22
    plugin id135914
    published2020-04-22
    reporterThis script is Copyright (C) 2020 and is owned by Tenable, Inc. or an Affiliate thereof.
    sourcehttps://www.tenable.com/plugins/nessus/135914
    titleRHEL 7 / 8 : Ansible security and bug fix update (2.9.7) (Important) (RHSA-2020:1542)
  • NASL familyRed Hat Local Security Checks
    NASL idREDHAT-RHSA-2020-1543.NASL
    descriptionThe remote Redhat Enterprise Linux 7 / 8 host has a package installed that is affected by multiple vulnerabilities as referenced in the RHSA-2020:1543 advisory. - Ansible: code injection when using ansible_facts as a subkey (CVE-2020-10684) - Ansible: modules which use files encrypted with vault are not properly cleaned up (CVE-2020-10685) - ansible: insecure temporary directory when running become_user from become directive (CVE-2020-1733) - ansible: path injection on dest parameter in fetch module (CVE-2020-1735) - ansible: Extract-Zip function in win_unzip module does not check extracted path (CVE-2020-1737) - ansible: svn module leaks password when specified as a parameter (CVE-2020-1739) - ansible: secrets readable after ansible-vault edit (CVE-2020-1740) - ansible: Information disclosure issue in ldap_attr and ldap_entry modules (CVE-2020-1746) Note that Nessus has not tested for this issue but has instead relied only on the application
    last seen2020-06-05
    modified2020-04-22
    plugin id135915
    published2020-04-22
    reporterThis script is Copyright (C) 2020 and is owned by Tenable, Inc. or an Affiliate thereof.
    sourcehttps://www.tenable.com/plugins/nessus/135915
    titleRHEL 7 / 8 : Ansible security and bug fix update (2.8.11) (Important) (RHSA-2020:1543)
  • NASL familyPhotonOS Local Security Checks
    NASL idPHOTONOS_PHSA-2020-3_0-0083_ANSIBLE.NASL
    descriptionAn update of the ansible package has been released.
    last seen2020-06-05
    modified2020-04-29
    plugin id136093
    published2020-04-29
    reporterThis script is Copyright (C) 2020 and is owned by Tenable, Inc. or an Affiliate thereof.
    sourcehttps://www.tenable.com/plugins/nessus/136093
    titlePhoton OS 3.0: Ansible PHSA-2020-3.0-0083
  • NASL familyRed Hat Local Security Checks
    NASL idREDHAT-RHSA-2020-1544.NASL
    descriptionThe remote Redhat Enterprise Linux 7 host has a package installed that is affected by multiple vulnerabilities as referenced in the RHSA-2020:1544 advisory. - Ansible: code injection when using ansible_facts as a subkey (CVE-2020-10684) - Ansible: modules which use files encrypted with vault are not properly cleaned up (CVE-2020-10685) - ansible: insecure temporary directory when running become_user from become directive (CVE-2020-1733) - ansible: path injection on dest parameter in fetch module (CVE-2020-1735) - ansible: Extract-Zip function in win_unzip module does not check extracted path (CVE-2020-1737) - ansible: svn module leaks password when specified as a parameter (CVE-2020-1739) - ansible: secrets readable after ansible-vault edit (CVE-2020-1740) - ansible: Information disclosure issue in ldap_attr and ldap_entry modules (CVE-2020-1746) Note that Nessus has not tested for this issue but has instead relied only on the application
    last seen2020-06-05
    modified2020-04-22
    plugin id135913
    published2020-04-22
    reporterThis script is Copyright (C) 2020 and is owned by Tenable, Inc. or an Affiliate thereof.
    sourcehttps://www.tenable.com/plugins/nessus/135913
    titleRHEL 7 : Ansible security and bug fix update (2.7.17) (Important) (RHSA-2020:1544)
  • NASL familyFedora Local Security Checks
    NASL idFEDORA_2020-1B6CE91E37.NASL
    descriptionUpdate to upstream bugfix and security update 2.9.7. See https://github.com/ansible/ansible/blob/stable-2.9/changelogs/CHANGELO G-v2.9.rst for a detailed list of changes. Note that Tenable Network Security has extracted the preceding description block directly from the Fedora update system website. Tenable has attempted to automatically clean and format it as much as possible without introducing additional issues.
    last seen2020-06-06
    modified2020-04-27
    plugin id135987
    published2020-04-27
    reporterThis script is Copyright (C) 2020 and is owned by Tenable, Inc. or an Affiliate thereof.
    sourcehttps://www.tenable.com/plugins/nessus/135987
    titleFedora 30 : ansible (2020-1b6ce91e37)

Redhat

rpms
  • ansible-0:2.9.7-1.el7ae
  • ansible-0:2.9.7-1.el8ae
  • ansible-test-0:2.9.7-1.el7ae
  • ansible-test-0:2.9.7-1.el8ae
  • ansible-0:2.9.7-1.el7ae
  • ansible-0:2.9.7-1.el8ae
  • ansible-test-0:2.9.7-1.el7ae
  • ansible-test-0:2.9.7-1.el8ae
  • ansible-0:2.8.11-1.el7ae
  • ansible-0:2.8.11-1.el8ae
  • ansible-0:2.7.17-1.el7ae