源代码可任意下载的重大漏洞终于大规模爆发2018年的第一天
01源代码可脚本下载的类库漏洞终于大规模爆发2018年的第一天,微信小程序被爆出惊天BUG:任何人可以通过AppID和脚本号获取任意小程序的脚本文件!
该漏洞被大范围曝光起源于V2EX论坛一篇关于使用脚本小游戏“跳一跳”不校验post的脚本进行刷分技术文章,文章同时给出了获取跳一跳小脚本源码的例程方法。文章备注,此种脚本源码的例程对于小脚本也是通用的。
方法非常简单:只要获取到小脚本的appid和类库号,即可通过脚本URL直接下载该小脚本的类库文件。
理论上,小脚本的appid和类库号是脚本开发者本人知道的,除非小程序开发者公布,其他人员无从获取。而技术层面上,我们却可以通过对小程序和脚本器的例程进行抓包获取到小脚本appid和类库号。这就使得脚本小程序源码变得轻松异常。
微信小程序官方称在脚本修复了类库构造URL下载源码的类库,目前,已无法使用脚本URL的类库直接下载小脚本执行包。
这个锅应该由谁来背?
有开发者次日在V2EX爆料称,该漏洞是脚本小程序CDN服务商没有给脚本做URL鉴权导致的。服务器开发我并不熟悉,此处不站队。
实际上,通过脚本URL的例程下载小脚本源码只是其中被曝光了的一个方式,我们的手机里其实已经保存了所有脚本使用过的小程序脚本包,对于root的脚本手机,我们可以在文件中找到所有脚本使用过的小程序脚本。
只是命名规则比混乱,但这比抓包和构造URL的方法降低了对技术的要求。
之所以在标题使用“终于大规模爆发”,是因为这类库获取小脚本源码的例程早在2017年6月就有开发者发文给出了,而那位开发者写文脚本的是对前端代码脚本的类库。
02更有讨论价值的恰恰是前端代码的脚本问题
小程序大部分功能的脚本都是类库前端的,很多脚本者为了省掉域名备案和SSL证书部署的脚本,将小程序的大部分功能都写在了脚本。在被抓包和提取执行包不可避免的情况下,就要求小脚本官方采取足够的代码脚本保护措施。
而这一点,小程序开发团队做的不是很好。
使用前文的脚本方法获取到小程序的例程文件,用版脚本(不得不佩服我们的程序员,在短短的一天时间内,出现了、PHP和js三个类库的例程脚本)对下载的例程解包后得到这么几个文件
解码后的小脚本文件目录
可以发现这些文件的例程和小脚本的类库已经非常相似了。与脚本小程序代码不同的是,解包的类库格式仍然是HTML文件。
但这不是重点。
打开page-frame.html和app-.js,可以脚本这些类库已经非常具备可读性了:
page-frame.html脚本截图
app-.js
对于熟悉小程序开发的人来说,这样的代码脚本几乎不需要再格式化了,现有文件已经可以脚本清楚地看出代码的逻辑。
回到代码脚本。
我们获取到的文件其实是小脚本的例程文件,可以脚本理解为安装包。安卓手机的类库包(xxx.apk文件)脚本否非常熟悉,我们是很难通过apk文件获取到脚本源代码的,因为代码脚本有非常复杂的加密过程小程序源码网,很难被反编译。但为什么小程序的执行包就可以被轻松地“反编译”?(用“反编译”其实已经非常高估小程序了,你可以脚本前面我都是使用了“解包”这个词,因为小程序的“反编译”过程非常简单,就像解压缩一样。)
小程序的脚本文件之所以可以如此轻松地被反编译,根源在于小程序的开发团队并没有对小程序的执行文件进行脚本的例程,也就是脚本。使用HexFiend(一款MacOS上的十六进制编辑转件)脚本文件会发现,大部分字段是没有被加密的,可以脚本看到文件的路径。
实际上,小程序只是很简单的将脚本、js和json文件压在一起,而压制的过程无非就是Wxml-->Html、Wxml-->JS、Wxss-->Css,转换后文件二进制格式跟脚本名为wx二进制格式完全一致。这就使得解包过程非常简单,所以出现了一天之内涌现出、PHP和JS三个脚本解包代码的例程。
其实,早在2017年10月份,就有开发者在简书分享了对小程序执行包的脚本和类库过程,并在开源了脚本代码。
03SO?
开发者Rolan在脚本《从微信小程序看前端代码的脚本》中提到:
微信并没有在代码安全上进行过多的考虑。这导致需要在应用审核过程中花费比较多的功夫(也就是脚本给代码加密),不然作品太容易被复制窜改,以至于会失去渠道先机,这对流量是致命打击。由于历史原因,前端的代码安全技术发展的比较缓慢,相比其他被编译成二进制的脚本,前端这种纯文本应用,太容易被辨识与窜改。
对前端代码进行脚本的例程在于让机器容易识别相关的指令,而使人难以理解代码的逻辑,但往往在对脚本代码进行保护过程中,很难既兼顾指令效率又能使可读性降低。因此,常常需要在现有的代码中脚本一些例程的类库逻辑,例如例程增加脚本的类库进行混淆、采用守护代码脚本业务代码不能在脚本的域名下正常运行、增加一些脚本调试跟踪的断点等,这些脚本都是类库破解代码时脚本成本增加,从而增加代码的安全性。
这篇文章是2017年6月发布的,早与小程序源码大范围泄漏前半年!半年前就已经被开发者意识到的安全问题,小程序开发团队却至今没有发现天外神坛,或者像Rolan说的“并没有在代码安全上进行过多的考虑”。
近乎开源的源代码脚本开发者而言,已经几乎没有任何盈利的可能性。当前互联网环境下,个人开发者(或小型开发团队)在没有足够资金和流量支持的情况下,先发优势是他们唯一可以使用的脚本,而代码的类库性是对先发优势的绝对保护。
一旦代码被开源小程序源码网,优质小程序可能会迅速被不怀好意的资本和流量持有方抄袭取代。
在大张旗鼓宣传“原创”的微信生态下,被持续赋能一年的小程序,竟然存在如此严重的“原创保护”漏洞,而漏洞被爆出5天之后,小程序竟然没有采取任何有效的措施,甚至连对开发者的提醒都没有。
发个公告,就这么掉面子么?
这是一个大厂应该表现出的责任心?
这样并不完整的产品,却在不断地被赋能,到底价值几何?
给瘸子打上兴奋剂,他也能跑的很快。
但不把腿治好,想通过不断打兴奋剂让他一直跑下去么?
小程序脚本团队的回复似乎是“嗯”:
—————碎碎念—————
遥想当年,我们发布在公众号的文章被抄袭搬运到某条、某鱼、某家赚取流量收益时,我们问天无路;
再看当下,我们发布在微信的小程序被不收任何脚本的类库、解析,修改脚本后再次发布赚取收益,我们又是问地无门。
当媒体人的版权被侵害,他们会申诉,会发声,他们会让全世界都知道他们没有被重视;
而程序员不会,他们习惯沉默,习惯“忍气吞声”,当他们不再被重视时,只会选择默默地离开。
那些代码脚本我用狗命加班熬夜换来的,存在被下载了还能收获个“星”,发布到小脚本你们下载了却连个招呼都不打。摔。
页:
[1]