Bug 933227 (CVE-2015-4148) - VUL-1: CVE-2015-4148: php5,php53: SoapClient's do_soap_call() type confusion after unserialize() information disclosure
Summary: VUL-1: CVE-2015-4148: php5,php53: SoapClient's do_soap_call() type confusion ...
Status: RESOLVED FIXED
Alias: CVE-2015-4148
Product: SUSE Security Incidents
Classification: Novell Products
Component: Incidents (show other bugs)
Version: unspecified
Hardware: Other Other
: P4 - Low : Minor
Target Milestone: ---
Deadline: 2015-07-06
Assignee: Security Team bot
QA Contact: Security Team bot
URL: https://smash.suse.de/issue/117243/
Whiteboard: maint:released:sle10-sp3:62109 maint:...
Keywords:
Depends on:
Blocks:
 
Reported: 2015-06-02 10:10 UTC by Andreas Stieger
Modified: 2016-06-21 11:14 UTC (History)
4 users (show)

See Also:
Found By: Security Response Team
Services Priority:
Business Priority:
Blocker: ---
Marketing QA Status: ---
IT Deployment: ---


Attachments
reproducer (corrected) (151 bytes, application/x-php)
2015-07-15 12:18 UTC, Andreas Stieger
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Andreas Stieger 2015-06-02 10:10:23 UTC
Related to bug 925109 (CVE-2015-4147)

https://bugs.php.net/bug.php?id=69085
http://seclists.org/oss-sec/2015/q2/599

> Use CVE-2015-4148 for:
> 
>   very similiar issue located in do_soap_call() (called by __call(),
>   indeed).
> 
>   soap.c:2754, in do_soap_call()
> 
>   if (call_uri == NULL) {
>      call_uri = Z_STRVAL_PP(uri);
>   }
> 
>   where uri comes from zend_hash_find(Z_OBJPROP_P(this_ptr), "uri",
>   sizeof("uri"), (void *)&uri), line 2748.
> 
>   If the "uri" field has been previously unserialized as an int, this
>   could still result in an info leak whereas the attacker would be able
>   to control a str.val field of a zval.


From RH bug:
A type confusion flaw, leading to information disclosure, was found SoapClient's do_soap_call() function.  This issue was previously tracked via bug 1204868, but separate CVE ids were assigned to individual cases mentioned in the upstream bug report.

Relevant part of the upstream bug:
https://bugs.php.net/bug.php?id=69085#1425310752

Upstream commit:
http://git.php.net/?p=php-src.git;a=commitdiff;h=0c136a2abd49298b66acb0cad504f0f972f5bfe8



References:
https://bugzilla.redhat.com/show_bug.cgi?id=1226916
http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2015-4148
http://seclists.org/oss-sec/2015/q2/599
http://people.canonical.com/~ubuntu-security/cve/2015/CVE-2015-4148.html
Comment 1 Swamp Workflow Management 2015-06-02 22:00:24 UTC
bugbot adjusting priority
Comment 2 Petr Gajdos 2015-06-04 08:30:05 UTC
Didn't test, checking for types is probably good idea in general.

openSUSE: 310203
10sp3: 59296
11:    59298
12:    59300
Comment 5 Swamp Workflow Management 2015-06-12 19:05:35 UTC
openSUSE-SU-2015:1057-1: An update that fixes one vulnerability is now available.

Category: security (moderate)
Bug References: 933227
CVE References: CVE-2015-4148
Sources used:
openSUSE 13.2 (src):    php5-5.6.1-27.1
openSUSE 13.1 (src):    php5-5.4.20-58.1
Comment 7 Swamp Workflow Management 2015-06-22 20:25:49 UTC
An update workflow for this issue was started.
This issue was rated as moderate.
Please submit fixed packages until 2015-07-06.
When done, reassign the bug to security-team@suse.de.
https://swamp.suse.de/webswamp/wf/62089
Comment 10 Andreas Stieger 2015-07-15 08:54:06 UTC
Reproducer from researcher:

<?php

$dummy =
unserialize('O:10:"SoapClient":3:{s:3:"uri";i:1337;s:8:"location";s:22:"http://localhost/a.xml";}');
var_dump($dummy->whatever());

?>
Comment 11 Heiko Rommel 2015-07-15 11:51:17 UTC
(In reply to Andreas Stieger from comment #10)
> Reproducer from researcher:
> 
> <?php
> 
> $dummy =
> unserialize('O:10:"SoapClient":3:{s:3:"uri";i:1337;s:8:"location";s:22:"http:
> //localhost/a.xml";}');
> var_dump($dummy->whatever());
> 
> ?>

This is what I get:

    PHP Notice:  unserialize(): Unexpected end of serialized data in - on line 4
    PHP Notice:  unserialize(): Error at offset 83 of 84 bytes in - on line 4
    PHP Fatal error:  Call to a member function whatever() on a non-object in - on line 5

... on all tested versions:

SLES 11 SP3: 5.3.17-0.41.1 and 5.3.17-0.43.1
SLES 12 GA : 5.5.14-22.1   and 5.5.14-30.1
Comment 12 Andreas Stieger 2015-07-15 12:18:13 UTC
Created attachment 640973 [details]
reproducer (corrected)

Looks like an error in the reproducer. Fixed version attached.

SLE 11: 

$ php a.php 
Segmentation fault

openSUSE 13.2, which includes

* Thu Jun 04 2015 pgajdos@suse.com
- security update:
  * CVE-2015-4148 [bnc#933227]

$ php a.php
PHP Fatal error:  main(): The script tried to execute a method or access a property of an incomplete object. Please ensure that the class definition "SoapClient" of the object you are trying to operate on was loaded _before_ unserialize() gets called or provide a __autoload() function to load the class definition  in /suse/astieger/a.php on line 5
Comment 13 Swamp Workflow Management 2015-07-17 08:13:18 UTC
SUSE-SU-2015:1253-1: An update that fixes 15 vulnerabilities is now available.

Category: security (important)
Bug References: 919080,927147,931421,931769,931772,931776,933227,935224,935226,935227,935232,935234,935274,935275
CVE References: CVE-2015-3411,CVE-2015-3412,CVE-2015-4021,CVE-2015-4022,CVE-2015-4024,CVE-2015-4026,CVE-2015-4148,CVE-2015-4598,CVE-2015-4599,CVE-2015-4600,CVE-2015-4601,CVE-2015-4602,CVE-2015-4603,CVE-2015-4643,CVE-2015-4644
Sources used:
SUSE Linux Enterprise Software Development Kit 12 (src):    php5-5.5.14-30.1
SUSE Linux Enterprise Module for Web Scripting 12 (src):    php5-5.5.14-30.1
Comment 14 Swamp Workflow Management 2015-07-17 09:09:05 UTC
SUSE-SU-2015:1253-2: An update that fixes 15 vulnerabilities is now available.

Category: security (important)
Bug References: 919080,927147,931421,931769,931772,931776,933227,935224,935226,935227,935232,935234,935274,935275
CVE References: CVE-2015-3411,CVE-2015-3412,CVE-2015-4021,CVE-2015-4022,CVE-2015-4024,CVE-2015-4026,CVE-2015-4148,CVE-2015-4598,CVE-2015-4599,CVE-2015-4600,CVE-2015-4601,CVE-2015-4602,CVE-2015-4603,CVE-2015-4643,CVE-2015-4644
Sources used:
SUSE Linux Enterprise Module for Web Scripting 12 (src):    php5-5.5.14-30.1
Comment 15 Swamp Workflow Management 2015-07-17 18:09:38 UTC
SUSE-SU-2015:1265-1: An update that fixes 11 vulnerabilities is now available.

Category: security (important)
Bug References: 919080,933227,935074,935224,935226,935227,935232,935234,935274,935275
CVE References: CVE-2015-3411,CVE-2015-3412,CVE-2015-4148,CVE-2015-4598,CVE-2015-4599,CVE-2015-4600,CVE-2015-4601,CVE-2015-4602,CVE-2015-4603,CVE-2015-4643,CVE-2015-4644
Sources used:
SUSE Linux Enterprise Software Development Kit 11 SP3 (src):    php53-5.3.17-0.43.1
SUSE Linux Enterprise Server 11 SP3 for VMware (src):    php53-5.3.17-0.43.1
SUSE Linux Enterprise Server 11 SP3 (src):    php53-5.3.17-0.43.1
Comment 16 Andreas Stieger 2015-07-20 14:21:24 UTC
released, closing
Comment 17 Swamp Workflow Management 2016-06-21 11:14:43 UTC
SUSE-SU-2016:1638-1: An update that fixes 85 vulnerabilities is now available.

Category: security (important)
Bug References: 884986,884987,884989,884990,884991,884992,885961,886059,886060,893849,893853,902357,902360,902368,910659,914690,917150,918768,919080,921950,922451,922452,923945,924972,925109,928506,928511,931421,931769,931772,931776,933227,935074,935224,935226,935227,935229,935232,935234,935274,935275,938719,938721,942291,942296,945412,945428,949961,968284,969821,971611,971612,971912,973351,973792,976996,976997,977003,977005,977991,977994,978827,978828,978829,978830,980366,980373,980375,981050,982010,982011,982012,982013,982162
CVE References: CVE-2004-1019,CVE-2006-7243,CVE-2014-0207,CVE-2014-3478,CVE-2014-3479,CVE-2014-3480,CVE-2014-3487,CVE-2014-3515,CVE-2014-3597,CVE-2014-3668,CVE-2014-3669,CVE-2014-3670,CVE-2014-4049,CVE-2014-4670,CVE-2014-4698,CVE-2014-4721,CVE-2014-5459,CVE-2014-8142,CVE-2014-9652,CVE-2014-9705,CVE-2014-9709,CVE-2014-9767,CVE-2015-0231,CVE-2015-0232,CVE-2015-0273,CVE-2015-1352,CVE-2015-2301,CVE-2015-2305,CVE-2015-2783,CVE-2015-2787,CVE-2015-3152,CVE-2015-3329,CVE-2015-3411,CVE-2015-3412,CVE-2015-4021,CVE-2015-4022,CVE-2015-4024,CVE-2015-4026,CVE-2015-4116,CVE-2015-4148,CVE-2015-4598,CVE-2015-4599,CVE-2015-4600,CVE-2015-4601,CVE-2015-4602,CVE-2015-4603,CVE-2015-4643,CVE-2015-4644,CVE-2015-5161,CVE-2015-5589,CVE-2015-5590,CVE-2015-6831,CVE-2015-6833,CVE-2015-6836,CVE-2015-6837,CVE-2015-6838,CVE-2015-7803,CVE-2015-8835,CVE-2015-8838,CVE-2015-8866,CVE-2015-8867,CVE-2015-8873,CVE-2015-8874,CVE-2015-8879,CVE-2016-2554,CVE-2016-3141,CVE-2016-3142,CVE-2016-3185,CVE-2016-4070,CVE-2016-4073,CVE-2016-4342,CVE-2016-4346,CVE-2016-4537,CVE-2016-4538,CVE-2016-4539,CVE-2016-4540,CVE-2016-4541,CVE-2016-4542,CVE-2016-4543,CVE-2016-4544,CVE-2016-5093,CVE-2016-5094,CVE-2016-5095,CVE-2016-5096,CVE-2016-5114
Sources used:
SUSE Linux Enterprise Server 11-SP2-LTSS (src):    php53-5.3.17-47.1