Vulnerabilities > CVE-2016-1000104 - Improper Input Validation vulnerability in multiple products

047910
CVSS 6.5 - MEDIUM
Attack vector
NETWORK
Attack complexity
LOW
Privileges required
SINGLE
Confidentiality impact
PARTIAL
Integrity impact
PARTIAL
Availability impact
PARTIAL
network
low complexity
apache
opensuse
CWE-20
nessus

Summary

A security Bypass vulnerability exists in the FcgidPassHeader Proxy in mod_fcgid through 2016-07-07.

Common Weakness Enumeration (CWE)

Common Attack Pattern Enumeration and Classification (CAPEC)

  • Buffer Overflow via Environment Variables
    This attack pattern involves causing a buffer overflow through manipulation of environment variables. Once the attacker finds that they can modify an environment variable, they may try to overflow associated buffers. This attack leverages implicit trust often placed in environment variables.
  • Server Side Include (SSI) Injection
    An attacker can use Server Side Include (SSI) Injection to send code to a web application that then gets executed by the web server. Doing so enables the attacker to achieve similar results to Cross Site Scripting, viz., arbitrary code execution and information disclosure, albeit on a more limited scale, since the SSI directives are nowhere near as powerful as a full-fledged scripting language. Nonetheless, the attacker can conveniently gain access to sensitive files, such as password files, and execute shell commands.
  • Cross Zone Scripting
    An attacker is able to cause a victim to load content into their web-browser that bypasses security zone controls and gain access to increased privileges to execute scripting code or other web objects such as unsigned ActiveX controls or applets. This is a privilege elevation attack targeted at zone-based web-browser security. In a zone-based model, pages belong to one of a set of zones corresponding to the level of privilege assigned to that page. Pages in an untrusted zone would have a lesser level of access to the system and/or be restricted in the types of executable content it was allowed to invoke. In a cross-zone scripting attack, a page that should be assigned to a less privileged zone is granted the privileges of a more trusted zone. This can be accomplished by exploiting bugs in the browser, exploiting incorrect configuration in the zone controls, through a cross-site scripting attack that causes the attackers' content to be treated as coming from a more trusted page, or by leveraging some piece of system functionality that is accessible from both the trusted and less trusted zone. This attack differs from "Restful Privilege Escalation" in that the latter correlates to the inadequate securing of RESTful access methods (such as HTTP DELETE) on the server, while cross-zone scripting attacks the concept of security zones as implemented by a browser.
  • Cross Site Scripting through Log Files
    An attacker may leverage a system weakness where logs are susceptible to log injection to insert scripts into the system's logs. If these logs are later viewed by an administrator through a thin administrative interface and the log data is not properly HTML encoded before being written to the page, the attackers' scripts stored in the log will be executed in the administrative interface with potentially serious consequences. This attack pattern is really a combination of two other attack patterns: log injection and stored cross site scripting.
  • Command Line Execution through SQL Injection
    An attacker uses standard SQL injection methods to inject data into the command line for execution. This could be done directly through misuse of directives such as MSSQL_xp_cmdshell or indirectly through injection of data into the database that would be interpreted as shell commands. Sometime later, an unscrupulous backend application (or could be part of the functionality of the same application) fetches the injected data stored in the database and uses this data as command line arguments without performing proper validation. The malicious data escapes that data plane by spawning new commands to be executed on the host.

Nessus

  • NASL familySuSE Local Security Checks
    NASL idOPENSUSE-2016-1005.NASL
    descriptionThis update for apache2-mod_fcgid fixes the following issues : - CVE-2016-1000104 / CVE-2016-5387: A remote attacker could have set the HTTP_PROXY environment variable of CGI scripts (boo#988488)
    last seen2020-06-05
    modified2016-08-22
    plugin id93065
    published2016-08-22
    reporterThis script is Copyright (C) 2016-2020 and is owned by Tenable, Inc. or an Affiliate thereof.
    sourcehttps://www.tenable.com/plugins/nessus/93065
    titleopenSUSE Security Update : apache2-mod_fcgid (openSUSE-2016-1005) (httpoxy)
    code
    #%NASL_MIN_LEVEL 80502
    #
    # (C) Tenable Network Security, Inc.
    #
    # The descriptive text and package checks in this plugin were
    # extracted from openSUSE Security Update openSUSE-2016-1005.
    #
    # The text description of this plugin is (C) SUSE LLC.
    #
    
    include("compat.inc");
    
    if (description)
    {
      script_id(93065);
      script_version("2.7");
      script_set_attribute(attribute:"plugin_modification_date", value:"2020/06/04");
    
      script_cve_id("CVE-2016-1000104", "CVE-2016-5387");
    
      script_name(english:"openSUSE Security Update : apache2-mod_fcgid (openSUSE-2016-1005) (httpoxy)");
      script_summary(english:"Check for the openSUSE-2016-1005 patch");
    
      script_set_attribute(
        attribute:"synopsis", 
        value:"The remote openSUSE host is missing a security update."
      );
      script_set_attribute(
        attribute:"description", 
        value:
    "This update for apache2-mod_fcgid fixes the following issues :
    
      - CVE-2016-1000104 / CVE-2016-5387: A remote attacker
        could have set the HTTP_PROXY environment variable of
        CGI scripts (boo#988488)"
      );
      script_set_attribute(
        attribute:"see_also",
        value:"https://bugzilla.opensuse.org/show_bug.cgi?id=988488"
      );
      script_set_attribute(
        attribute:"solution", 
        value:"Update the affected apache2-mod_fcgid packages."
      );
      script_set_cvss_base_vector("CVSS2#AV:N/AC:L/Au:S/C:P/I:P/A:P");
      script_set_cvss3_base_vector("CVSS:3.0/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H");
    
      script_set_attribute(attribute:"plugin_type", value:"local");
      script_set_attribute(attribute:"cpe", value:"p-cpe:/a:novell:opensuse:apache2-mod_fcgid");
      script_set_attribute(attribute:"cpe", value:"p-cpe:/a:novell:opensuse:apache2-mod_fcgid-debuginfo");
      script_set_attribute(attribute:"cpe", value:"p-cpe:/a:novell:opensuse:apache2-mod_fcgid-debugsource");
      script_set_attribute(attribute:"cpe", value:"cpe:/o:novell:opensuse:13.2");
      script_set_attribute(attribute:"cpe", value:"cpe:/o:novell:opensuse:42.1");
    
      script_set_attribute(attribute:"vuln_publication_date", value:"2016/07/19");
      script_set_attribute(attribute:"patch_publication_date", value:"2016/08/19");
      script_set_attribute(attribute:"plugin_publication_date", value:"2016/08/22");
      script_set_attribute(attribute:"in_the_news", value:"true");
      script_set_attribute(attribute:"generated_plugin", value:"current");
      script_end_attributes();
    
      script_category(ACT_GATHER_INFO);
      script_copyright(english:"This script is Copyright (C) 2016-2020 and is owned by Tenable, Inc. or an Affiliate thereof.");
      script_family(english:"SuSE Local Security Checks");
    
      script_dependencies("ssh_get_info.nasl");
      script_require_keys("Host/local_checks_enabled", "Host/SuSE/release", "Host/SuSE/rpm-list", "Host/cpu");
    
      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/SuSE/release");
    if (isnull(release) || release =~ "^(SLED|SLES)") audit(AUDIT_OS_NOT, "openSUSE");
    if (release !~ "^(SUSE13\.2|SUSE42\.1)$") audit(AUDIT_OS_RELEASE_NOT, "openSUSE", "13.2 / 42.1", release);
    if (!get_kb_item("Host/SuSE/rpm-list")) audit(AUDIT_PACKAGE_LIST_MISSING);
    
    ourarch = get_kb_item("Host/cpu");
    if (!ourarch) audit(AUDIT_UNKNOWN_ARCH);
    if (ourarch !~ "^(i586|i686|x86_64)$") audit(AUDIT_ARCH_NOT, "i586 / i686 / x86_64", ourarch);
    
    flag = 0;
    
    if ( rpm_check(release:"SUSE13.2", reference:"apache2-mod_fcgid-2.3.9-2.5.1") ) flag++;
    if ( rpm_check(release:"SUSE13.2", reference:"apache2-mod_fcgid-debuginfo-2.3.9-2.5.1") ) flag++;
    if ( rpm_check(release:"SUSE13.2", reference:"apache2-mod_fcgid-debugsource-2.3.9-2.5.1") ) flag++;
    if ( rpm_check(release:"SUSE42.1", reference:"apache2-mod_fcgid-2.3.9-7.1") ) flag++;
    if ( rpm_check(release:"SUSE42.1", reference:"apache2-mod_fcgid-debuginfo-2.3.9-7.1") ) flag++;
    if ( rpm_check(release:"SUSE42.1", reference:"apache2-mod_fcgid-debugsource-2.3.9-7.1") ) flag++;
    
    if (flag)
    {
      if (report_verbosity > 0) security_warning(port:0, extra:rpm_report_get());
      else security_warning(0);
      exit(0);
    }
    else
    {
      tested = pkg_tests_get();
      if (tested) audit(AUDIT_PACKAGE_NOT_AFFECTED, tested);
      else audit(AUDIT_PACKAGE_NOT_INSTALLED, "apache2-mod_fcgid / apache2-mod_fcgid-debuginfo / etc");
    }
    
  • NASL familyMisc.
    NASL idSECURITYCENTER_5_4_3_TNS_2017_04.NASL
    descriptionAccording to its version, the installation of Tenable SecurityCenter on the remote host is affected by multiple vulnerabilities : - A flaw exists in the mod_session_crypto module due to encryption for data and cookies using the configured ciphers with possibly either CBC or ECB modes of operation (AES256-CBC by default). An unauthenticated, remote attacker can exploit this, via a padding oracle attack, to decrypt information without knowledge of the encryption key, resulting in the disclosure of potentially sensitive information. (CVE-2016-0736) - A denial of service vulnerability exists in the mod_auth_digest module during client entry allocation. An unauthenticated, remote attacker can exploit this, via specially crafted input, to exhaust shared memory resources, resulting in a server crash. (CVE-2016-2161) - The Apache HTTP Server is affected by a man-in-the-middle vulnerability known as
    last seen2020-06-01
    modified2020-06-02
    plugin id97726
    published2017-03-14
    reporterThis script is Copyright (C) 2017-2019 and is owned by Tenable, Inc. or an Affiliate thereof.
    sourcehttps://www.tenable.com/plugins/nessus/97726
    titleTenable SecurityCenter 5.x < 5.4.3 Multiple Vulnerabilities (TNS-2017-04) (httpoxy)
    code
    #
    # (C) Tenable Network Security, Inc.
    #
    
    include("compat.inc");
    
    if (description)
    {
      script_id(97726);
      script_version("1.12");
      script_cvs_date("Date: 2019/03/27 13:17:50");
    
      script_cve_id(
        "CVE-2016-0736",
        "CVE-2016-2161",
        "CVE-2016-5387",
        "CVE-2016-7055",
        "CVE-2016-8740",
        "CVE-2016-8743",
        "CVE-2016-9594",
        "CVE-2016-10158",
        "CVE-2016-10159",
        "CVE-2016-10160",
        "CVE-2016-10161",
        "CVE-2016-10167",
        "CVE-2016-1000102",
        "CVE-2016-1000104",
        "CVE-2017-3731",
        "CVE-2017-3732"
    );
      script_bugtraq_id(
        91816,
        91822,
        94242,
        94650,
        95076,
        95077,
        95078,
        95094,
        95764,
        95768,
        95774,
        95783,
        95813,
        95814,
        95869
      );
      script_xref(name:"CERT", value:"797896");
      script_xref(name:"EDB-ID", value:"40961");
    
      script_name(english:"Tenable SecurityCenter 5.x < 5.4.3 Multiple Vulnerabilities (TNS-2017-04) (httpoxy)");
      script_summary(english:"Checks the SecurityCenter version.");
    
      script_set_attribute(attribute:"synopsis", value:
    "An application installed on the remote host is affected by multiple
    vulnerabilities.");
      script_set_attribute(attribute:"description", value:
    "According to its version, the installation of Tenable SecurityCenter
    on the remote host is affected by multiple vulnerabilities :
    
      - A flaw exists in the mod_session_crypto module due to
        encryption for data and cookies using the configured
        ciphers with possibly either CBC or ECB modes of
        operation (AES256-CBC by default). An unauthenticated,
        remote attacker can exploit this, via a padding oracle
        attack, to decrypt information without knowledge of the
        encryption key, resulting in the disclosure of
        potentially sensitive information. (CVE-2016-0736)
    
      - A denial of service vulnerability exists in the
        mod_auth_digest module during client entry allocation.
        An unauthenticated, remote attacker can exploit this,
        via specially crafted input, to exhaust shared memory
        resources, resulting in a server crash. (CVE-2016-2161)
    
      - The Apache HTTP Server is affected by a
        man-in-the-middle vulnerability known as 'httpoxy' due
        to a failure to properly resolve namespace conflicts in
        accordance with RFC 3875 section 4.1.18. The HTTP_PROXY
        environment variable is set based on untrusted user data
        in the 'Proxy' header of HTTP requests. The HTTP_PROXY
        environment variable is used by some web client
        libraries to specify a remote proxy server. An
        unauthenticated, remote attacker can exploit this, via a
        crafted 'Proxy' header in an HTTP request, to redirect
        an application's internal HTTP traffic to an arbitrary
        proxy server where it may be observed or manipulated.
        (CVE-2016-5387, CVE-2016-1000102, CVE-2016-1000104)
    
      - A carry propagation error exists in the
        Broadwell-specific Montgomery multiplication procedure
        when handling input lengths divisible by but longer than
        256 bits. This can result in transient authentication
        and key negotiation failures or reproducible erroneous
        outcomes of public-key operations with specially crafted
        input. A man-in-the-middle attacker can possibly exploit
        this issue to compromise ECDH key negotiations that
        utilize Brainpool P-512 curves. (CVE-2016-7055)
    
      - A denial of service vulnerability exists in the
        mod_http2 module due to improper handling of the
        LimitRequestFields directive. An unauthenticated, remote
        attacker can exploit this, via specially crafted
        CONTINUATION frames in an HTTP/2 request, to inject
        unlimited request headers into the server, resulting in
        the exhaustion of memory resources. (CVE-2016-8740)
    
      - A flaw exists due to improper handling of whitespace
        patterns in user-agent headers. An unauthenticated,
        remote attacker can exploit this, via a specially
        crafted user-agent header, to cause the program to
        incorrectly process sequences of requests, resulting in
        interpreting responses incorrectly, polluting the cache,
        or disclosing the content from one request to a second
        downstream user-agent. (CVE-2016-8743)
    
      - A flaw exits in libcurl in the randit() function within
        file lib/rand.c due to improper initialization of the
        32-bit random value, which is used, for example, to
        generate Digest and NTLM authentication nonces,
        resulting in weaker cryptographic operations than
        expected. (CVE-2016-9594)
    
      - A floating pointer exception flaw exists in the
        exif_convert_any_to_int() function in exif.c that is
        triggered when handling TIFF and JPEG image tags. An
        unauthenticated, remote attacker can exploit this to
        cause a crash, resulting in a denial of service
        condition. (CVE-2016-10158)
    
      - An integer overflow condition exists in the
        phar_parse_pharfile() function in phar.c due to improper
        validation when handling phar archives. An
        unauthenticated, remote attacker can exploit this to
        cause a crash, resulting in a denial of service
        condition. (CVE-2016-10159)
    
      - An off-by-one overflow condition exists in the
        phar_parse_pharfile() function in phar.c due to improper
        parsing of phar archives. An unauthenticated, remote
        attacker can exploit this to cause a crash, resulting in
        a denial of service condition. (CVE-2016-10160)
    
      - An out-of-bounds read error exists in the
        finish_nested_data() function in var_unserializer.c due
        to improper validation of unserialized data. An
        unauthenticated, remote attacker can exploit this to
        cause a crash, resulting in a denial of service
        condition or the disclosure of memory contents.
        (CVE-2016-10161)
    
      - A denial of service vulnerability exists in the
        gdImageCreateFromGd2Ctx() function within file gd_gd2.c
        in the GD Graphics Library (LibGD) when handling images
        claiming to contain more image data than they actually
        do. An unauthenticated, remote attacker can exploit this
        to crash a process linked against the library.
        (CVE-2016-10167)
    
      - An out-of-bounds read error exists when handling packets
        using the CHACHA20/POLY1305 or RC4-MD5 ciphers. An
        unauthenticated, remote attacker can exploit this, via
        specially crafted truncated packets, to cause a denial
        of service condition. (CVE-2017-3731)
    
      - A carry propagating error exists in the x86_64
        Montgomery squaring implementation that may cause the
        BN_mod_exp() function to produce incorrect results. An
        unauthenticated, remote attacker with sufficient
        resources can exploit this to obtain sensitive
        information regarding private keys. Note that this issue
        is very similar to CVE-2015-3193. Moreover, the attacker
        would additionally need online access to an unpatched
        system using the target private key in a scenario with
        persistent DH parameters and a private key that is
        shared between multiple clients. For example, this can
        occur by default in OpenSSL DHE based SSL/TLS cipher
        suites. (CVE-2017-3732)
    
      - An out-of-bounds read error exists in the
        phar_parse_pharfile() function in phar.c due to improper
        parsing of phar archives. An unauthenticated, remote
        attacker can exploit this to cause a crash, resulting in
        a denial of service condition.
    
      - Multiple stored cross-site scripting (XSS)
        vulnerabilities exist in unspecified scripts due to a
        failure to validate input before returning it to users.
        An authenticated, remote authenticated attacker can
        exploit these, via a specially crafted request, to
        execute arbitrary script code in a user's browser
        session.
    
    Note that Nessus has not tested for these issues but has instead
    relied only on the application's self-reported version number.");
      script_set_attribute(attribute:"see_also", value:"https://www.tenable.com/security/tns-2017-04");
      script_set_attribute(attribute:"see_also", value:"https://httpoxy.org");
      script_set_attribute(attribute:"solution", value:
    "Upgrade to Tenable SecurityCenter version 5.4.3 or later.
    Alternatively, apply the appropriate patch according to the vendor
    advisory.");
      script_set_cvss_base_vector("CVSS2#AV:N/AC:L/Au:S/C:N/I:N/A:C");
      script_set_cvss_temporal_vector("CVSS2#E:POC/RL:OF/RC:C");
      script_set_cvss3_base_vector("CVSS:3.0/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H");
      script_set_cvss3_temporal_vector("CVSS:3.0/E:P/RL:O/RC:C");
      script_set_attribute(attribute:"cvss_score_source", value:"manual");
      script_set_attribute(attribute:"cvss_score_rationale", value:"Score based on analysis of the vendor advisory.");
      script_set_attribute(attribute:"exploitability_ease", value:"Exploits are available");
      script_set_attribute(attribute:"exploit_available", value:"true");
    
    
      script_set_attribute(attribute:"vuln_publication_date", value:"2016/07/18");
      script_set_attribute(attribute:"patch_publication_date", value:"2017/02/14");
      script_set_attribute(attribute:"plugin_publication_date", value:"2017/03/14");
    
      script_set_attribute(attribute:"plugin_type", value:"local");
      script_set_attribute(attribute:"cpe", value:"cpe:/a:tenable:securitycenter");
      script_set_attribute(attribute:"in_the_news", value:"true");
      script_end_attributes();
    
      script_category(ACT_GATHER_INFO);
      script_family(english:"Misc.");
    
      script_copyright(english:"This script is Copyright (C) 2017-2019 and is owned by Tenable, Inc. or an Affiliate thereof.");
    
      script_dependencies("securitycenter_installed.nbin", "securitycenter_detect.nbin");
      script_require_ports("Host/SecurityCenter/Version", "installed_sw/SecurityCenter");
    
      exit(0);
    }
    
    include("audit.inc");
    include("global_settings.inc");
    include("install_func.inc");
    include("misc_func.inc");
    include("install_func.inc");
    
    version = get_kb_item("Host/SecurityCenter/Version");
    port = 0;
    if(empty_or_null(version))
    {
      port = 443;
      install = get_single_install(app_name:"SecurityCenter", combined:TRUE, exit_if_unknown_ver:TRUE);
      version = install["version"];
    }
    fix = "5.4.3";
    
    # Affects 5.0.2, 5.1.0, 5.2.0, 5.3.1, 5.3.2, 5.4.0, 5.4.1, 5.4.2
    if ( version =~ "^5\.(0\.2|1\.0|2\.0|3\.[12]|4\.[0-2])([^0-9]|$)" )
    {
      items = make_array(
        "Installed version", version,
        "Fixed version", fix
      );
    
      order = make_list("Installed version", "Fixed version");
      report = report_items_str(report_items:items, ordered_fields:order);
    
      security_report_v4(severity:SECURITY_WARNING, port:port, extra:report, xss:TRUE);
    }
    else
      audit(AUDIT_INST_VER_NOT_VULN, 'SecurityCenter', version);