liuxiaohao26 发表于 2022-1-24 00:42:54

2018年的第一天,微信小程序被爆出惊天BUG!

重的!微信小程序曝出重大漏洞,小程序全部源码可随意下载

一个可以随意下载源代码的重大漏洞终于大规模爆发。

2018年的第一天,微信小程序出现了一个令人震惊的Bug:任何人都可以通过AppID和版本号获取任意小程序的源代码文件!

该漏洞被广泛曝光,源于V2EX论坛上一篇关于利用微信小游戏“跳一跳”漏洞不验证帖子得分的技术文章。文章指出,这种获取源代码的方法在小程序中也很常见。

方法很简单:只要得到小程序的appid和版本号,就可以通过构造URL直接下载小程序的源代码文件。

http://tt.ccoox.cn/data/attachment/forum/20220124/1642956174476_0.jpg

理论上只有开发者自己知道小程序的appid和版本号,除非小程序开发者公布,否则其他人无法获取。在技​​术层面,我们可以通过捕获小程序与服务端的通信来获取小程序的appid和版本号。这使得下载小程序的源代码变得非常容易。

http://tt.ccoox.cn/data/attachment/forum/20220124/1642956174476_1.jpg

微信小程序官方表示,当天修复了通过构造URL下载源代码的漏洞。目前已经无法通过构造URL直接下载小程序执行包。

http://tt.ccoox.cn/data/attachment/forum/20220124/1642956174476_2.jpg

谁应该携带这个锅?

次日,有开发者在V2EX爆料称,该漏洞是由于小程序CDN服务商未能进行URL认证访问造成的。对服务器开发不熟悉,这里就不排队了。

事实上,通过构造URL下载小程序的源代码只是暴露的方法之一。我们的手机其实已经保存了我们用过的所有小程序执行包。对于已经root的安卓手机,我们可以把它放在文件中查找所有使用过的小程序文件。

http://tt.ccoox.cn/data/attachment/forum/20220124/1642956174476_3.jpg

只是命名规则比较混乱天外神坛,但这比抓包和构造URL的方法降低了技术要求。

之所以称“终于大规模爆发”,是因为这两种获取小程序源代码的方法,早在2017年6月开发者就给出了,写文章的开发者说的比较对。前端代码安全性的讨论。

正是前端代码的安全问题更值得讨论。

小程序的大部分功能都是基于前端实现的。为了省去域名备案和SSL证书部署的麻烦,很多开发者把小程序的大部分功能都写在了前端。在不可避免的被捕获、提取和执行的情况下,要求小程序官方采取足够的代码安全保护措施。

而这个,小程序开发团队也不是很好。

使用前面任何一种方法获取小程序的可执行文件,并使用版本脚本(不得不佩服我们的程序员,短短一天时间,出现了三个版本的解包脚本,PHP和js)下载下载的脚本。文件解压后,得到如下文件:

http://tt.ccoox.cn/data/attachment/forum/20220124/1642956174476_5.jpg

解码小程序文件目录

可以发现,这些文件的组成与小程序的代码非常相似。与常规的小程序代码不同,解压后的文件格式仍然是 HTML 文件。

但这不是重点。

http://tt.ccoox.cn/data/attachment/forum/20220124/1642956174476_6.webp

打开page-frame.html和app-.js,可以发现这些代码可读性很强:

http://tt.ccoox.cn/data/attachment/forum/20220124/1642956174476_7.jpg

page-frame.html 代码截图

应用程序-.js

对于熟悉小程序开发的人来说,这样的代码几乎不再需要格式化,代码的逻辑在已有的文件中一目了然。

回到代码保护。

我们得到的文件其实就是小程序的执行文件,可以简单理解为安装包。手机的安装包(xxx.apk文件)大家都很熟悉了。我们很难通过apk文件获取应用源代码,因为代码压缩有一个非常复杂的加密过程,很难被反编译。

http://tt.ccoox.cn/data/attachment/forum/20220124/1642956174476_8.jpg

但是为什么小程序的可执行包很容易被“反编译”呢?(使用“反编译”其实是对小程序的高估。可以看到我之前用过“解包”这个词,因为小程序的“反编译”过程很简单小程序源码哪里免费下载,就像解压一样。)

http://tt.ccoox.cn/data/attachment/forum/20220124/1642956174476_9.jpg

小程序的可执行文件之所以能这么容易被反编译,是因为小程序的开发团队没有对小程序的可执行文件进行有效的保护,也就是加密。使用 Hex Fiend(Mac OS 上的十六进制编辑传输)分析文件,发现大部分字段未加密,可以直接看到文件的路径。

http://tt.ccoox.cn/data/attachment/forum/20220124/1642956174476_10.jpg

其实小程序只是简单的将图片、js、json文件压缩在一起,压缩的过程无非就是Wxml-->Html,Wxml-->JS,Wxss-->Css,以及转换后文件的二进制格式跟后缀名为 wx 的二进制格式一模一样。这使得解包过程非常简单,于是就有了一天出现了三个版本的解包代码PHP和JS的情况。

事实上,早在 2017 年 10 月,就有开发者分享了简书中小程序执行包的提取解析过程,并将脚本代码开源。

所以?

http://tt.ccoox.cn/data/attachment/forum/20220124/1642956174476_11.jpg

开发者 Rolan 在《从微信小程序看前端代码的安全性》一文中提到:

微信并没有过多考虑代码的安全性。这就导致需要在申请审核过程中花费大量精力(也就是自己加密代码),否则工作太容易被复制和篡改小程序源码哪里免费下载,从而使渠道失去机会,也就是对交通造成致命打击。

由于历史原因,前端代码安全技术的发展比较缓慢。与其他编译成二进制的应用程序相比,前端纯文本应用程序太容易被识别和篡改。

保护前端代码的目的是为了让机器容易识别相关指令,让人难以理解代码的逻辑。但是在保护前端代码的过程中,很难兼顾指令的效率,降低可读性。

因此,往往需要在现有代码中添加一些额外的验证逻辑,例如添加无效代码进行混淆、使用守卫代码保护业务代码在其他域名下正常运行、添加一些断点以防止调试和跟踪等..,这些措施都增加了破解密码时的人工成本,从而增加了密码的安全性。

http://tt.ccoox.cn/data/attachment/forum/20220124/1642956174476_12.jpg

本文发表于 2017 年 6 月,比小程序源代码大范围泄露早了半年!半年前就已经被开发者认可的安全问题,小程序开发团队还没有发现,或者如 Rolan 所说,“没有过多考虑代码安全”。

几乎开源的源代码对开发者来说几乎没有盈利的可能。在当前的互联网环境下,当个别开发者(或小型开发团队)没有足够的资金和流量支持时,先发优势是他们唯一可以使用的资源,而代码的安全是先发的绝对保障-移动优势。

一旦代码开源,优质小程序可能很快被恶意资本和流量持有者抄袭所取代。

作为微信生态中的新生力量,小程序不仅受到官方的重视,也受到众多开发者和内容创业者的重视,此次曝光的Bug令人震惊。希望微信官方能够尽快修复漏洞,让刚刚兴起的小程序生态能够稳步成长。

w96680 发表于 2023-3-30 03:25:27

你们好呀,小朋友
页: [1]
查看完整版本: 2018年的第一天,微信小程序被爆出惊天BUG!