太阳集团城8722(中国·Macau)有限公司-Official website

XML 地图

在document.location.search上有一个eval调用,可以通过URL控制传入的内容。而且,Atom的Content-Security-Policy允许eval语句执行,所以打开如下所示的代码应该也会弹窗:

file:///Applications/Atom.app/Contents/Resources/app/apm/node_modules/clone/test-apart-ctx.html?foo&alert(1)

实际上,下面的Markdown文档就足以执行任意的JavaScript代码了:

未命名1511421602.png

0x05 本地任意代码执行

正如文章前面所说,在Electron应用程序中执行恶意JavaScript代码通常也就意味着本地任意代码执行。在这种情况下,一个简单的思路就是访问window.top对象,并使用NodeJS require函数访问child_process模块。 通过以下JavaScript代码可以打开Mac OS X计算器:

以前的漏洞利用方式是这样的:


只要打开构造好的Markdown文档,Calculator.app就会打开执行: 

0x06 如何实现远程任意代码执行?

虽然经过上面的研究我们已经取得了一些进展,但仍然需要受害者打开恶意的Markdown文档(需要用户交互的漏洞,价值都会大打折扣)。想了下,要知道tom渲染Markdown文档可不止这一处。 在Atom源代码上执行grep搜索之后,还有另外一个渲染Markdown文件的模块https://github.com/atom/settings-view/。看了下它的过滤手段,也没啥卵用。

const ATTRIBUTES_TO_REMOVE = [  'onabort',  'onblur',  'onchange',  'onclick',  'ondbclick',  'onerror',  'onfocus',  'onkeydown',  'onkeypress',  'onkeyup',  'onload',  'onmousedown',  'onmousemove',  'onmouseover',  'onmouseout',  'onmouseup',  'onreset',  'onresize',  'onscroll',  'onselect',  'onsubmit',  'onunload']function sanitize (html) {  const temporaryContainer = document.createElement('div')

  temporaryContainer.innerHTML = html  for (const script of temporaryContainer.querySelectorAll('script')) {

    script.remove()

  }  for (const element of temporaryContainer.querySelectorAll('*')) {    for (const attribute of ATTRIBUTES_TO_REMOVE) {

      element.removeAttribute(attribute)

    }

  }  for (const checkbox of temporaryContainer.querySelectorAll('input[type="checkbox"]')) {

    checkbox.setAttribute('disabled', true)

  }  return temporaryContainer.innerHTML

}

这里的Markdown解析器也存在安全问题,而且似乎比前者更严重。Atom支持“Packages”,可以由社区的开发者提供第三方插件的扩展。这些第三方插件中Markdown格式的README,会在Atom视图中呈现。 因此,恶意攻击者只需要注册一堆恶意软件包,或者提供一些与现有软件名称相似的软件包,再README中插入恶意代码。只要有人点击该名称即可(并不需要安装!),恶意代码就可以成功的被执行了。 

0x07 来看一下Github是怎么修复这个漏洞的

经过与GitHub开发组讨论之后,这个漏洞已经被修复了,修复方法如下:

从软件包中删除不必要的HTML文件

使用 DOMPurify (https://github.com/cure53/DOMPurify)过滤Markdown中的内容

原文来自:嘶吼

声明:所有来源为“澳门太阳集团城网址8722”的内容信息,未经本网许可,不得转载!如对内容有异议或投诉,请与我们联系。邮箱:marketing@think-land.com

API百科
生活服务 企业工商 金融科技 接口大全 电子商务
API资讯
0512-88869195
数 据 驱 动 未 来
Data Drives The Future
XML 地图