

berial 久违更新:沙箱逃逸
source link: https://zhuanlan.zhihu.com/p/284428468
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

berial 久违更新:沙箱逃逸
halo 大家好,俺是 132,今天啥也没干,纠结了一天去哪家公司的问题……
晚上来自未来公司的小哥哥给 berial 提了一个问题:webpack代码切割生成的js/css能够做到沙箱隔离吗? · Issue #62 · berialjs/berial
经典的沙箱逃逸问题……
沙箱逃逸
简单说就是你在沙箱里跑 js,但是这段 js 往沙箱外面插了一个 js,这个 js 就逃逸到外面了
哎呀我好困,大家自行体会伐
解决思路
解决逃逸问题主要有两种方式
- Proxy 劫持 dom 操作
这个思路是 qiankun 正在使用的方式,主要是劫持 createElement 等方法,然后让 script 不要插到外面
话说我在 fard 中也是用 Proxy 劫持 dom 操作,然后传送到主线程
这个思路要想搞得好,必须有一个苛刻的封装才行,否则就很容易变成一种 case by case 的 hack 行为
2. MutationObserver
使用 MutationObserver 检测 document 对象,对当前的 shadow dom 之外的操作进行劫持,然后在下一个 tick 的时候塞到沙箱里跑
new MutationObserver((mutations) => {
mutations.forEach(async (m: any) => {
switch (m.type) {
case 'childList':
if (m.target !== host) {
for (let i = 0; i < m.addedNodes.length; i++) {
const node = m.addedNodes[i]
if (node instanceof HTMLScriptElement) {
const src = node.getAttribute('src') || ''
const script = await request(src)
scriptsNextTick.push(script)
}
}
}
break
default:
}
})
}).observe(document, { childList: true, subtree: true })
这个思路的实现不难,但整个过程不需要和 qiankun 那样憋屈
总结
以上,berial 的沙箱从理论上可以说近乎完美了……
使用 Proxy 劫持 window,使用 MutationObserver 侦测 document
前阵子我写了一个一个回答:当前市面上的微前端是否有真正解决方案?
我说 berial,qiankun 这个思路的微前端,最后被一些新的提案所替代,但是我也不后悔写了 berial ……
因为,作为一个前端,还能在 runtime 做什么呢?没那么多东西可以做的……
纵使未来微前端被内置,berial 这套代码也仍旧有意义
最后放一下 berial 的 github:berialjs/berial
对微前端感兴趣的可以随便玩~
Recommend
-
58
火萤酱 - PC 端久违的一款效率神器,支持本地、网络搜索,还有 N 多小程序哦~ - NEXT
-
44
来源:湛庐阅读都说作家靠文字生存,但有一位作家已经不是简单生存了,在被他“收割”的万千读者中,第一大“迷弟”居然是美国前任总统奥巴马!奥巴马公开称,其在总统任期的最后圣诞假期里携带的四本书里,有一本是刘慈欣的小说。甚至,奥巴马还亲自给刘慈欣
-
75
原文: http://phrack.org/papers/escaping_the_java_sandbox.html –[ 1 – 引言 如今,Jav...
-
23
大家好,我是 132,今天给大家带来一篇文章,是有关于 berial 新的 RFC 的,这个 RFC 非常重要,涉及到的东西可能会比较多,请容我一一道来 这个 RFC 对于 berial 来说非常重要,甚至说对于微前端框架来说都是颠覆的
-
17
halo,大家好,今天抽时间对 berial 进行了大重构,这次重构还是非常重要的,我准备重新写一篇文章来详细介绍 先前的文章不用看啦,微前端看这一篇就足够了 异步渲染管线 微前端的本质就...
-
41
0x00 前言 最近开始着手研究Chrome沙箱逃逸,正好借着本题学习一下。FullChain的漏洞利用一般需要依靠两个漏洞,首先是通过RCE开启Mojo(一种Chrome用于子进程与父进程进行通信的机制),然后通过Mojo漏洞逃离出沙箱。 0x01 前置知识
-
6
利用CVE-2020-0986实现IE沙箱逃逸 - FreeBuf网络安全行业门户限时体验 主站 漏洞 工具 极客 Web安全...
-
10
Chrome Mojo 组件的沙箱逃逸漏洞分析 12小时之前 2022年04月06日
-
7
0x01 简介在2020年6月的一天发现在0day.today上有一个关于360沙盒逃逸的漏洞360 Security Sandbox Escape,当时简单测试了下便获得了逃逸的POC(explorer.exe /e /s...
-
5
VM2 沙箱逃逸漏洞分析 13小时之前 2023年04月20日 ...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK