<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>160680</bug_id>
          
          <creation_ts>2016-08-08 17:22:56 -0700</creation_ts>
          <short_desc>Use after free in JS array sort</short_desc>
          <delta_ts>2018-02-16 13:40:25 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>Safari 8</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Major</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Don Olmstead">don.olmstead</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1218642</commentid>
    <comment_count>0</comment_count>
      <attachid>285614</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2016-08-08 17:22:56 -0700</bug_when>
    <thetext>Created attachment 285614
Example exploit

A use after free occurs in the sort of the JS array. In the attached exploit `z.toString()` was evaluated and a new element was pushed to W in the function triggering a growth and reallocation of the array. However it tried to write the sorted elements onto the old already freed memory. The patch updates the location of `data` before writing to it.

This bug was present from revisions 130826 to 183570. It has not been exploitable for awhile but is being reported in case there are other places that may have similar issues, and so a test case might be implemented to ensure it doesn&apos;t crop up again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1218643</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-08-08 17:23:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/27757708&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1218649</commentid>
    <comment_count>2</comment_count>
      <attachid>285617</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2016-08-08 17:24:48 -0700</bug_when>
    <thetext>Created attachment 285617
Fix for use after free</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1218650</commentid>
    <comment_count>3</comment_count>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2016-08-08 17:26:00 -0700</bug_when>
    <thetext>Fixed in 183570</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1218651</commentid>
    <comment_count>4</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-08-08 17:27:33 -0700</bug_when>
    <thetext>Fix committed in r183570 &lt;https://trac.webkit.org/changeset/183570/&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1219090</commentid>
    <comment_count>5</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-08-10 13:09:04 -0700</bug_when>
    <thetext>Note: We should turn the exploit example into a test case so we can guard against this in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1219103</commentid>
    <comment_count>6</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-08-10 13:24:08 -0700</bug_when>
    <thetext>Test case added:
Committed in r204344 &lt;https://trac.webkit.org/changeset/204344&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1400008</commentid>
    <comment_count>7</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-02-16 13:40:25 -0800</bug_when>
    <thetext>This fix shipped a few years ago, opening for public access.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>285614</attachid>
            <date>2016-08-08 17:22:56 -0700</date>
            <delta_ts>2016-08-08 17:22:56 -0700</delta_ts>
            <desc>Example exploit</desc>
            <filename>exploit.html</filename>
            <type>text/html</type>
            <size>331</size>
            <attacher name="Don Olmstead">don.olmstead</attacher>
            
              <data encoding="base64">PGh0bWw+DQo8aGVhZD4NCjxzY3JpcHQ+DQpmdW5jdGlvbiBmb28oKSB7DQogICAgdmFyIE4gPSAx
MjI4ODsgLy8gMzAwMGgNCiAgICB2YXIgVyA9IEFycmF5LnByb3RvdHlwZS5jb25zdHJ1Y3Rvci5h
cHBseShudWxsLCBuZXcgQXJyYXkoTikpOw0KICAgIHZhciB6ID0ge307DQogICAgei50b1N0cmlu
ZyA9IGZ1bmN0aW9uKCkgew0KICAgICAgICBXLnB1c2goMTIzNDUpOw0KICAgICAgICByZXR1cm4g
IiINCiAgICB9Ow0KICAgIFdbMF0gPSB6Ow0KICAgIFcuc29ydCgpOw0KfQ0KPC9zY3JpcHQ+DQo8
L2hlYWQ+DQo8Ym9keSBvbmNsaWNrPSJmb28oKSI+PC9ib2R5Pg0KPC9odG1sPg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>285617</attachid>
            <date>2016-08-08 17:24:48 -0700</date>
            <delta_ts>2016-08-08 17:24:48 -0700</delta_ts>
            <desc>Fix for use after free</desc>
            <filename>JSArray.patch</filename>
            <type>text/plain</type>
            <size>1883</size>
            <attacher name="Don Olmstead">don.olmstead</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTQXJyYXkuY3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gSlNBcnJheS5jcHAJKHJldmlzaW9u
IDEzMjExKQ0KKysrIEpTQXJyYXkuY3BwCSh3b3JraW5nIGNvcHkpDQpAQCAtMTA4NywxMCArMTA4
NywzNyBAQA0KICAgICB9CiB9OwogCit0ZW1wbGF0ZSA8PgorQ29udGlndW91c0pTVmFsdWVzIEpT
QXJyYXk6OnN0b3JhZ2U8QXJyYXlXaXRoSW50MzIsIFdyaXRlQmFycmllcjxVbmtub3duPiA+KCkK
K3sKKyAgICByZXR1cm4gbV9idXR0ZXJmbHktPmNvbnRpZ3VvdXNJbnQzMigpOworfQogCit0ZW1w
bGF0ZSA8PgorQ29udGlndW91c0RvdWJsZXMgSlNBcnJheTo6c3RvcmFnZTxBcnJheVdpdGhEb3Vi
bGUsIGRvdWJsZT4oKQoreworICAgIHJldHVybiBtX2J1dHRlcmZseS0+Y29udGlndW91c0RvdWJs
ZSgpOworfQorCit0ZW1wbGF0ZSA8PgorQ29udGlndW91c0pTVmFsdWVzIEpTQXJyYXk6OnN0b3Jh
Z2U8QXJyYXlXaXRoQ29udGlndW91cywgV3JpdGVCYXJyaWVyPFVua25vd24+ID4oKQoreworICAg
IHJldHVybiBtX2J1dHRlcmZseS0+Y29udGlndW91cygpOworfQorCit0ZW1wbGF0ZSA8PgorQ29u
dGlndW91c0pTVmFsdWVzIEpTQXJyYXk6OnN0b3JhZ2U8QXJyYXlXaXRoQXJyYXlTdG9yYWdlLCBX
cml0ZUJhcnJpZXI8VW5rbm93bj4gPigpCit7CisgICAgQXJyYXlTdG9yYWdlKiBzdG9yYWdlID0g
bV9idXR0ZXJmbHktPmFycmF5U3RvcmFnZSgpOworICAgIEFTU0VSVCghc3RvcmFnZS0+bV9zcGFy
c2VNYXApOworICAgIHJldHVybiBzdG9yYWdlLT52ZWN0b3IoKTsKK30KKwogdGVtcGxhdGU8SW5k
ZXhpbmdUeXBlIGluZGV4aW5nVHlwZSwgdHlwZW5hbWUgU3RvcmFnZVR5cGU+CiB2b2lkIEpTQXJy
YXk6OnNvcnRDb21wYWN0ZWRWZWN0b3IoRXhlY1N0YXRlKiBleGVjLCBDb250aWd1b3VzRGF0YTxT
dG9yYWdlVHlwZT4gZGF0YSwgdW5zaWduZWQgcmVsZXZhbnRMZW5ndGgpCiB7CisgICAgZGF0YSA9
IHN0b3JhZ2U8aW5kZXhpbmdUeXBlLCBTdG9yYWdlVHlwZT4oKTsKKwogICAgIGlmICghcmVsZXZh
bnRMZW5ndGgpCiAgICAgICAgIHJldHVybjsKICAgICAKQEAgLTExNjcsNiArMTE5NCw3IEBADQog
ICAgICAgICBDUkFTSCgpOwogICAgIH0KIAorICAgIGRhdGEgPSBzdG9yYWdlPGluZGV4aW5nVHlw
ZSwgU3RvcmFnZVR5cGU+KCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByZWxldmFudExl
bmd0aDsgaSsrKQogICAgICAgICBDb250aWd1b3VzVHlwZUFjY2Vzc29yPGluZGV4aW5nVHlwZT46
OnNldFdpdGhWYWx1ZSh2bSwgdGhpcywgZGF0YSwgaSwgdmFsdWVzW2ldLmZpcnN0KTsKICAgICAK
SW5kZXg6IEpTQXJyYXkuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIEpTQXJyYXkuaAkocmV2aXNpb24gMTMy
MTEpDQorKysgSlNBcnJheS5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMTcyLDYgKzE3Miw5IEBADQog
ICAgICAgICAKICAgICB0ZW1wbGF0ZTxJbmRleGluZ1R5cGUgaW5kZXhpbmdUeXBlPgogICAgIHZv
aWQgY29tcGFjdEZvclNvcnRpbmcodW5zaWduZWQmIG51bURlZmluZWQsIHVuc2lnbmVkJiBuZXdS
ZWxldmFudExlbmd0aCk7CisKKyAgICB0ZW1wbGF0ZTxJbmRleGluZ1R5cGUgaW5kZXhpbmdUeXBl
LCB0eXBlbmFtZSBTdG9yYWdlVHlwZT4KKyAgICBDb250aWd1b3VzRGF0YTxTdG9yYWdlVHlwZT4g
c3RvcmFnZSgpOwogfTsKIAogaW5saW5lIEJ1dHRlcmZseSogY3JlYXRlQ29udGlndW91c0FycmF5
QnV0dGVyZmx5KFZNJiB2bSwgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCYgdmVjdG9yTGVuZ3Ro
KQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>