Bug 1391012 (CVE-2016-9138)

Summary: CVE-2016-9138 php: Use after free in unserialize() via DateInterval::__wakeup()
Product: [Other] Security Response Reporter: Adam Mariš <amaris>
Component: vulnerabilityAssignee: Red Hat Product Security <security-response-team>
Status: CLOSED WONTFIX QA Contact:
Severity: medium Docs Contact:
Priority: medium    
Version: unspecifiedCC: abhgupta, dmcphers, fedora, hhorak, jialiu, jokerman, jorton, kseifried, lmeyer, mmccomas, rcollet, sardella, tiwillia, webstack-team
Target Milestone: ---Keywords: Security
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2016-11-02 11:50:31 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Bug Depends On: 1391014    
Bug Blocks:    

Description Adam Mariš 2016-11-02 11:49:43 UTC
Use after free vulnerability was found in unserialize() exploited via DateInterval::__wakeup().

Upstream bug:

https://bugs.php.net/bug.php?id=73147

CVE assignment:

http://seclists.org/oss-sec/2016/q4/296

Comment 1 Adam Mariš 2016-11-02 11:50:31 UTC
This issue happens when untrusted input is unserialized. Doing so is documented as being unsafe:

  http://php.net/manual/en/function.unserialize.php

  Do not pass untrusted user input to unserialize(). Unserialization can
  result in code being loaded and executed due to object instantiation and
  autoloading, and a malicious user may be able to exploit this. Use a safe,
  standard data interchange format such as JSON (via json_decode() and
  json_encode()) if you need to pass serialized data to the user.

Comment 2 Adam Mariš 2016-11-02 11:51:56 UTC
Created php tracking bugs for this issue:

Affects: fedora-all [bug 1391014]