Vulnerabilities > CVE-2007-1884 - Format String vulnerability in PHP Printf() Function 64bit Casting

047910
CVSS 6.8 - MEDIUM
Attack vector
NETWORK
Attack complexity
MEDIUM
Privileges required
NONE
Confidentiality impact
PARTIAL
Integrity impact
PARTIAL
Availability impact
PARTIAL

Summary

Multiple integer signedness errors in the printf function family in PHP 4 before 4.4.5 and PHP 5 before 5.2.1 on 64 bit machines allow context-dependent attackers to execute arbitrary code via (1) certain negative argument numbers that arise in the php_formatted_print function because of 64 to 32 bit truncation, and bypass a check for the maximum allowable value; and (2) a width and precision of -1, which make it possible for the php_sprintf_appendstring function to place an internal buffer at an arbitrary memory location.

Nessus

  • NASL familyCGI abuses
    NASL idPHP_5_2_1.NASL
    descriptionAccording to its banner, the version of PHP installed on the remote host is older than 5.2.1. Such versions may be affected by several issues, including buffer overflows, format string vulnerabilities, arbitrary code execution,
    last seen2020-06-01
    modified2020-06-02
    plugin id24907
    published2007-04-02
    reporterThis script is Copyright (C) 2007-2018 Tenable Network Security, Inc.
    sourcehttps://www.tenable.com/plugins/nessus/24907
    titlePHP < 5.2.1 Multiple Vulnerabilities
    code
    #
    # (C) Tenable Network Security, Inc.
    #
    
    if (NASL_LEVEL < 3000) exit(0);
    
    include("compat.inc");
    
    if (description)
    {
      script_id(24907);
      script_version("1.27");
      script_cvs_date("Date: 2018/07/24 18:56:10");
    
      script_cve_id(
        "CVE-2006-6383",
        "CVE-2007-0905",
        "CVE-2007-0906",
        "CVE-2007-0907",
        "CVE-2007-0908",
        "CVE-2007-0909",
        "CVE-2007-0910",
        "CVE-2007-0988",
        "CVE-2007-1376",
        "CVE-2007-1380",
        "CVE-2007-1383",
        "CVE-2007-1452",
        "CVE-2007-1453",
        "CVE-2007-1454",
        "CVE-2007-1700",
        "CVE-2007-1701",
        "CVE-2007-1824",
        "CVE-2007-1825",
        "CVE-2007-1835",
        "CVE-2007-1884",
        "CVE-2007-1885",
        "CVE-2007-1886",
        "CVE-2007-1887",
        "CVE-2007-1889",
        "CVE-2007-1890",
        "CVE-2007-4441",
        "CVE-2007-4586"
      );
      script_bugtraq_id(
        21508, 
        22496, 
        22805,
        22806,
        22862,
        22922,
        23119,
        23120,
        23219,
        23233, 
        23234, 
        23235, 
        23236, 
        23237, 
        23238
      );
    
      script_name(english:"PHP < 5.2.1 Multiple Vulnerabilities");
      script_summary(english:"Checks version of PHP");
     
      script_set_attribute(
        attribute:"synopsis",
        value:
    "The remote web server uses a version of PHP that is affected by
    multiple flaws."
      );
      script_set_attribute(
        attribute:"description",
        value:
    "According to its banner, the version of PHP installed on the remote
    host is older than 5.2.1.  Such versions may be affected by several
    issues, including buffer overflows, format string vulnerabilities,
    arbitrary code execution, 'safe_mode' and 'open_basedir' bypasses, and
    clobbering of super-globals."
      );
      script_set_attribute(attribute:"see_also", value:"http://www.php.net/releases/5_2_1.php");
      script_set_attribute(attribute:"solution", value:
    "Upgrade to PHP version 5.2.1 or later.");
      script_set_cvss_base_vector("CVSS2#AV:N/AC:L/Au:N/C:P/I:P/A:P");
      script_set_cvss_temporal_vector("CVSS2#E:POC/RL:OF/RC:C");
      script_set_attribute(attribute:"exploitability_ease", value:"No exploit is required");
      script_set_attribute(attribute:"exploit_available", value:"false");
      script_cwe_id(20, 119, 189, 399);
    
      script_set_attribute(attribute:"vuln_publication_date", value:"2006/12/09");
      script_set_attribute(attribute:"patch_publication_date", value:"2007/02/08");
      script_set_attribute(attribute:"plugin_publication_date", value:"2007/04/02");
    
      script_set_attribute(attribute:"plugin_type", value:"remote");
      script_set_attribute(attribute:"cpe", value:"cpe:/a:php:php");
      script_end_attributes();
     
      script_category(ACT_GATHER_INFO);
      script_family(english:"CGI abuses");
    
      script_copyright(english:"This script is Copyright (C) 2007-2018 Tenable Network Security, Inc.");
    
      script_dependencies("php_version.nasl");
      script_require_ports("Services/www", 80);
      script_require_keys("www/PHP");
      exit(0);
    }
    
    
    include("global_settings.inc");
    include("misc_func.inc");
    include("http.inc");
    include("audit.inc");
    include("webapp_func.inc");
    
    port = get_http_port(default:80, php:TRUE);
    
    php = get_php_from_kb(
      port : port,
      exit_on_fail : TRUE
    );
    
    version = php["ver"];
    source = php["src"];
    
    backported = get_kb_item('www/php/'+port+'/'+version+'/backported');
    
    if (report_paranoia < 2 && backported)
      audit(AUDIT_BACKPORT_SERVICE, port, "PHP "+version+" install");
    
    if (version =~ "^5\.[01]\." || 
        version =~ "^5\.2\.0($|[^0-9])"
    )
    {
      if (report_verbosity > 0)
      {
        report =
          '\n  Version source     : '+source +
          '\n  Installed version  : '+version+
          '\n  Fixed version      : 5.2.1\n';
        security_hole(port:port, extra:report);
      }
      else security_hole(port);
      exit(0);
    }
    else audit(AUDIT_LISTEN_NOT_VULN, "PHP", port, version);
    
  • NASL familyCGI abuses
    NASL idPHP_4_4_5.NASL
    descriptionAccording to its banner, the version of PHP installed on the remote host is older than 4.4.5. Such versions may be affected by several issues, including buffer overflows, format string vulnerabilities, arbitrary code execution,
    last seen2020-06-01
    modified2020-06-02
    plugin id24906
    published2007-04-02
    reporterThis script is Copyright (C) 2007-2018 Tenable Network Security, Inc.
    sourcehttps://www.tenable.com/plugins/nessus/24906
    titlePHP < 4.4.5 Multiple Vulnerabilities
    code
    #
    # (C) Tenable Network Security, Inc.
    #
    
    if (NASL_LEVEL < 3000) exit(0);
    
    include("compat.inc");
    
    if (description)
    {
      script_id(24906);
      script_version("1.25");
      script_cvs_date("Date: 2018/07/24 18:56:10");
    
      script_cve_id(
        "CVE-2006-4625",
        "CVE-2007-0905",
        "CVE-2007-0906",
        "CVE-2007-0907",
        "CVE-2007-0908",
        "CVE-2007-0909",
        "CVE-2007-0910",
        "CVE-2007-0988",
        "CVE-2007-1286",
        "CVE-2007-1376",
        "CVE-2007-1378",
        "CVE-2007-1379",
        "CVE-2007-1380",
        "CVE-2007-1700",
        "CVE-2007-1701",
        "CVE-2007-1777",
        "CVE-2007-1825",
        "CVE-2007-1835",
        "CVE-2007-1884",
        "CVE-2007-1885",
        "CVE-2007-1886",
        "CVE-2007-1887",
        "CVE-2007-1890"
      );
      script_bugtraq_id(
        22496, 
        22805, 
        22806, 
        22833, 
        22862,
        23119, 
        23120, 
        23169, 
        23219,
        23233, 
        23234, 
        23235,
        23236
      );
    
      script_name(english:"PHP < 4.4.5 Multiple Vulnerabilities");
      script_summary(english:"Checks version of PHP");
     
      script_set_attribute(
        attribute:"synopsis",
        value:
    "The remote web server uses a version of PHP that is affected by
    multiple flaws."
      );
      script_set_attribute(
        attribute:"description",
        value:
    "According to its banner, the version of PHP installed on the remote
    host is older than 4.4.5.  Such versions may be affected by several
    issues, including buffer overflows, format string vulnerabilities,
    arbitrary code execution, 'safe_mode' and 'open_basedir' bypasses, and
    clobbering of super-globals."
      );
      script_set_attribute(attribute:"see_also", value:"http://www.php.net/releases/4_4_5.php");
      script_set_attribute(attribute:"solution", value:
    "Upgrade to PHP version 4.4.5 or later.");
      script_set_cvss_base_vector("CVSS2#AV:N/AC:L/Au:N/C:P/I:P/A:P");
      script_set_cvss_temporal_vector("CVSS2#E:F/RL:OF/RC:C");
      script_set_attribute(attribute:"exploitability_ease", value:"No exploit is required");
      script_set_attribute(attribute:"exploit_available", value:"false");
      script_set_attribute(attribute:"metasploit_name", value:'PHP 4 unserialize() ZVAL Reference Counter Overflow (Cookie)');
      script_set_attribute(attribute:"exploit_framework_metasploit", value:"true");
      script_cwe_id(20, 399);
    
      script_set_attribute(attribute:"plugin_publication_date", value:"2007/04/02");
      script_set_attribute(attribute:"vuln_publication_date", value:"2007/02/09");
    
      script_set_attribute(attribute:"plugin_type", value:"remote");
      script_set_attribute(attribute:"cpe", value:"cpe:/a:php:php");
      script_end_attributes();
    
      script_category(ACT_GATHER_INFO);
      script_family(english:"CGI abuses");
    
      script_copyright(english:"This script is Copyright (C) 2007-2018 Tenable Network Security, Inc.");
    
      script_dependencies("php_version.nasl");
      script_require_ports("Services/www", 80);
      script_require_keys("www/PHP");
      exit(0);
    }
    
    
    include("global_settings.inc");
    include("misc_func.inc");
    include("http.inc");
    include("audit.inc");
    include("webapp_func.inc");
    
    port = get_http_port(default:80, php:TRUE);
    
    php = get_php_from_kb(
      port : port,
      exit_on_fail : TRUE
    );
    
    version = php["ver"];
    source = php["src"];
    
    backported = get_kb_item('www/php/'+port+'/'+version+'/backported');
    
    if (report_paranoia < 2 && backported)
      audit(AUDIT_BACKPORT_SERVICE, port, "PHP "+version+" install");
    
    if (version =~ "^3\." ||
        version =~ "^4\.[0-3]\." ||
        version =~ "^4\.4\.[0-4]($|[^0-9])"
    )
    {
      if (report_verbosity > 0)
      {
        report =
          '\n  Version source     : '+source +
          '\n  Installed version  : '+version+
          '\n  Fixed version      : 4.4.5\n';
        security_hole(port:port, extra:report);
      }
      else security_hole(port);
      exit(0);
    }
    else audit(AUDIT_LISTEN_NOT_VULN, "PHP", port, version);
    

Statements

contributorMark J Cox
lastmodified2007-04-16
organizationRed Hat
statementThe PHP interpreter does not offer a reliable &quot;sandboxed&quot; security layer (as found in, say, a JVM) in which untrusted scripts can be run; any script run by the PHP interpreter must be trusted with the privileges of the interpreter itself. We therefore do not classify this issue as security-sensitive since no trust boundary is crossed.