Multiple Vulnerabilities in PHP Could Allow for Arbitrary Code Execution

ITS Advisory Number: 
2017-096
Date(s) Issued: 
Friday, September 29, 2017
Subject: 
Multiple Vulnerabilities in PHP Could Allow for Arbitrary Code Execution
Overview: 

Multiple vulnerabilities have been discovered in PHP, the most severe of which could allow an attacker to execute arbitrary code. PHP is a programming language originally designed for use in web-based applications with HTML content. PHP supports a wide variety of platforms and is used by numerous web-based software applications. Successfully exploiting the most severe of these vulnerabilities could allow for arbitrary code execution in the context of the affected application. Depending on the privileges associated with the application, an attacker could install programs; view, change, or delete data; or create new accounts with full user rights. Failed exploitation could result in a denial-of-service condition.

THREAT INTELLIGENCE:

There are currently no reports of these vulnerabilities being exploited in the wild.

  

Systems Affected: 
  • PHP 7.0 prior to 7.0.24
  • PHP 7.1 prior to 7.1.10
RISK
GOVERNMENT
Large and medium government entities: 
High
Small government entities: 
High
BUSINESS
Large and medium business entities: 
High
Small business entities: 
High
Home Users: 
Low
Description: 

Multiple vulnerabilities have been discovered in PHP, the most severe of which could allow an attacker to execute arbitrary code. Details of these vulnerabilities are as below:

  Prior to 7.0.24

  • Fixed bug (run-tests.php issues with EXTENSION block).
  • Fixed bug (bcpowmod() fails if scale != 0).
  • Fixed bug (BC math handles minus zero incorrectly).
  • Fixed bug (bcpowmod() may return 1 if modulus is 1).
  • Fixed bug (bcpowmod() misbehaves for non-integer base or modulus).
  • Fixed bug (Built-in server truncates headers spanning over TCP packets).
  • Fixed bug (OpenSSL support not detected).
  • Fixed bug (gdImageGrayScale() may produce colors).
  • Fixed bug (libgd/gd_interpolation.c:1786: suspicious if ?).
  • Fixed bug (textdomain(null) throws in strict mode).
  • Fixed bug (IntlGregorianCalendar doesn't have constants from parent class).
  • Fixed bug (PDO_PCO with PHP-FPM: OCI environment initialized before PHP-FPM sets it up).
  • Fixed bug (incorrect behavior of AppendIterator::append in foreach loop).
  • Fixed bug (gethostname fails if your host name is 64 chars long).

Prior to 7.1.10

  • Fixed bug (run-tests.php issues with EXTENSION block).
  • Fixed bug (bcpowmod() fails if scale != 0).
  • Fixed bug (BC math handles minus zero incorrectly).
  • Fixed bug (bcpowmod() may return 1 if modulus is 1).
  • Fixed bug (bcpowmod() misbehaves for non-integer base or modulus).
  • Fixed bug (Built-in server truncates headers spanning over TCP packets).
  • Fixed bug (OpenSSL support not detected).
  • Fixed bug (gdImageGrayScale() may produce colors).
  • Fixed bug (libgd/gd_interpolation.c:1786: suspicious if ?).
  • Fixed bug (textdomain(null) throws in strict mode).
  • Fixed bug (IntlGregorianCalendar doesn't have constants from parent class).
  • Fixed bug (segfault in collator_convert_object_to_string).
  • Fixed bug (PDO_PCO with PHP-FPM: OCI environment initialized before PHP-FPM sets it up).
  • Fixed bug (AppendIterator::append() is broken when appending another AppendIterator).
  • Fixed bug (incorrect behavior of AppendIterator::append in foreach loop).
  • Fixed bug (signed integer overflow in parse_iv).
  • Fixed bug (gethostname fails if your host name is 64 chars long).

Successfully exploiting the most severe of these vulnerabilities could allow for arbitrary code execution in the context of the affected application. Depending on the privileges associated with the application, an attacker could install programs; view, change, or delete data; or create new accounts with full user rights. Failed exploitation could result in a denial-of-service condition.

Actions: 
  • Verify no unauthorized system modifications have occurred on system before applying patch.
  • After appropriate testing, immediately upgrade to the latest version of PHP.
  • Apply the principle of Least Privilege to all systems and services.
  • Remind users not to visit websites or follow links provided by unknown or untrusted sources.

 

References: 

NOTE: Visiting these links may trigger an IDS signature match for a Possible Encrypted Webshell Download. This is a false positive alert that is matching content on the pages below.

 

PHP:

http://php.net/ChangeLog-7.php#7.0.24

http://php.net/ChangeLog-7.php#7.1.10