Lucene search
K

PEAR HTML_AJAX 0.5.7 (PHP Serializer) PHP Object Injection Vulnerability

🗓️ 07 Feb 2017 00:00:00Reported by Egidio RomanoType 
zdt
 zdt
🔗 0day.today👁 37 Views

PEAR HTML_AJAX 0.5.7 PHP Object Injection Vulnerability from unserialize() function

Related
Code
ReporterTitlePublishedViews
Family
CNVD
PEAR HTML_AJAX PHP Object Injection Vulnerability
9 Feb 201700:00
cnvd
CVE
CVE-2017-5677
6 Feb 201718:00
cve
Cvelist
CVE-2017-5677
6 Feb 201718:00
cvelist
EUVD
EUVD-2017-14754
7 Oct 202500:30
euvd
NVD
CVE-2017-5677
6 Feb 201718:59
nvd
Prion
Design/Logic Flaw
6 Feb 201718:59
prion
seebug.org
PEAR HTML_AJAX <= 0.5.7 (PHP Serializer) PHP object injection vulnerability
8 Feb 201700:00
seebug
---------------------------------------------------------------------------
PEAR HTML_AJAX <= 0.5.7 (PHP Serializer) PHP Object Injection Vulnerability
---------------------------------------------------------------------------


[-] Software Link:

https://pear.php.net/package/HTML_AJAX


[-] Affected Versions:

All versions from 0.3.0 to 0.5.7.


[-] Vulnerability Description:

The vulnerable code is located within the HTML_AJAX_Serializer_PHP class defined into
the /AJAX/Serializer/PHP.php script. Such a class uses the unserialize() PHP function
with user-controlled input unless a class name which is not in the provided array
of allowed classes is found within the serialized string. Class names are
extracted by using the _getSerializedClassNames() method:

68. function _getSerializedClassNames($string) {
69. // Strip any string representations (which might contain object syntax)
70. while (($pos = strpos($string, 's:')) !== false) {
71. $pos2 = strpos($string, ':', $pos + 2);
72. if ($pos2 === false) {
73. // invalidly serialized string
74. return false;
75. }
76. $end = $pos + 2 + substr($string, $pos + 2, $pos2) + 1;
77. $string = substr($string, 0, $pos) . substr($string, $end);
78. }
79.
80. // Pull out the class names
81. preg_match_all('/O:[0-9]+:"(.*)"/U', $string, $matches);
82.
83. // Make sure names are unique (same object serialized twice)
84. return array_unique($matches[1]);
85. }

By default the array of allowed classes is empty, meaning that no classes are allowed
to be unserialized. However, due to the faulty regular expression used at line 81, it
might be possible to bypass such a restriction by replacing "O:X" with "O:+X" from
within the serialized string, where X is the length of the class name. This can be
exploited by unauthenticated attackers to inject arbitrary PHP objects into the
application scope, allowing to perform "POP chain" attacks or exploit memory
corruption vulnerabilities within the PHP's serialization internals, potentially
leading to execution of arbitrary code on the web server.


[-] Solution:

Update to version 0.5.8 or disable the PHP Serializer.


[-] Disclosure Timeline:

[19/01/2017] - Issue reported to https://pear.php.net/bugs/bug.php?id=21165
[01/02/2017] - CVE number requested
[01/02/2017] - CVE number assigned
[02/02/2017] - Version 0.5.8 released: http://blog.pear.php.net/2017/02/02/security
[06/02/2017] - Public disclosure


[-] CVE Reference:

The Common Vulnerabilities and Exposures project (cve.mitre.org)
has assigned the name CVE-2017-5677 to this vulnerability.


[-] Credits:

Vulnerability discovered by Egidio Romano.


[-] Original Advisory:

http://karmainsecurity.com/KIS-2017-01

#  0day.today [2018-01-02]  #

Data

Build on a solid foundation with Vulners data

We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data

Api

Power your application with Vulners API

The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access

App

Assess and manage vulnerabilities with Vulners tools

Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation

07 Feb 2017 00:00Current
9.2High risk
Vulners AI Score9.2
EPSS0.06321
37