不是什么大事儿,但是鉴于新闻热度等等原因可能还是开一贴给普通开发者解释一下比较好。
压缩文件是允许路径指向类似../A/../B
这种格式的, UNIX下../
代表这个文件夹的上一层。比如说/A/B/../C
实际上指的是/A/C
有问题的解压库没有对这种../
做过滤,也就是说可以往解压路径外的地方解压文件。这不是一个系统级的沙盒逃逸漏洞
现在重点来了:
很多App会把所谓的热更新补丁放在沙盒内的某个路径下,比如说我们叫Documents/A.js
吧,如果热更新的传输过程有中间人攻击的问题或者app被通过某种方式打开恶意的压缩包, 攻击者就可以覆盖A.js的内容,这样下次app启动加载热更新补丁A.js时
就会执行恶意代码。
修复
原版的几个库下啊都有人提交了修复的PR, 老外破逼事多不一定merge,自己实现一遍也不难。另外做好SSL Pinning并且最重要的是,我说了无数遍了: 热更新绝大多数时候都是给18线三流程序员擦屁股用的,也是同样的一批人根本不知道怎么正确的做安全,引入巨量的隐患。 这都第几次了
感想
还是那句话,漏洞本身其实不是什么太复杂的事儿,但是确实暴露出来一些普通开发者的问题。
另外没记错的话盘古6还是哪一代的越狱也利用了类似的漏洞