Multiple Vulnerabilities in PHP Could Allow for Arbitrary Code Execution

MS-ISAC ADVISORY NUMBER:

2018-101

DATE(S) ISSUED:

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.2 prior to 7.2.10

PHP 7.1 prior to 7.1.22

PHP 7.0 prior to 7.0.32

PHP 5.6 prior to 5.6.38

RISK:

Government: Large and medium government entities: HIGH

Small government entities: HIGH Businesses: Large and medium business entities: HIGH

Small business entities: HIGH Home Users: LOW

TECHNICAL SUMMARY:

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:

Version 7.2.10 & Version 7.1.22

Bug #55146 (iconv_mime_decode_headers() skips some headers).

Bug #60494 (iconv_mime_decode does ignore special characters).

Bug #63839 (iconv_mime_decode_headers function is skipping headers).

Bug #65988 (Zlib version check fails when an include/zlib/ style dir is passed to the --with-zlib configure option).

Bug #68175 (RegexIterator pregFlags are NULL instead of 0).

Bug #68180 (iconv_mime_decode can return extra characters in a header).

Bug #68825 (Exception in DirectoryIterator::getLinkTarget()).

Bug #72443 (Generate enabled extension).

Bug #74484 (MessageFormatter::formatMessage memory corruption with 11+ named placeholders).

Bug #76517 (incorrect restoring of LDFLAGS).

Bug #76582 (Apache bucket brigade sometimes becomes invalid).

Bug #76595 (phpdbg man page contains outdated information).

Bug #76704 (mb_detect_order return value varies based on argument type).

Bug #76705 (unusable ssl => peer_fingerprint in stream_context_create()).

Bug #76709 (Minimal required zlib library is 1.2.0.4).

Bug #76747 (Opcache treats path containing "test.pharma.tld" as a phar file).

Bug #76754 (parent private constant in extends class memory leak).

Bug #76777 ("public id" parameter of libxml_set_external_entity_loader callback undefined).

Bug #76778 (array_reduce leaks memory if callback throws exception).

Fixed arginfo for bzcompress.

Version 7.2.10

Bug #75797 (Memory leak when using class_alias() in non-debug mode).

Version 7.0.32 & Version 5.6.38

Bug #76582 (XSS due to the header Transfer-Encoding: chunked)

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.

RECOMMENDATIONS:

We recommend the following actions be taken:

Upgrade to the latest version of PHP immediately, after appropriate testing.

Verify no unauthorized system modifications have occurred on system before applying patch.

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 potentially a false positive alert that is matching content on the pages below.