微信小程序场景下的安全问题从一张流程图简单说明

陌陌小程序场景

在计算机网路的世界中,每种新技术、新产品或新平台的面世还会衍生出新的安全问题,为网路安全发展注入新鲜血液。在陌陌巨大用户基础和腾讯公司对小程序平台的大力推广之下,近几年来小程序堪称是发展迅速、遍地开花,为联通互联网又带来了一场繁荣。

从安全的角度来看,尽管小程序技术从本质上只是WEB应用在B/S网路构架上的另一种实践,其安全也更多的是常见基础网路安全的堆叠。但因为小程序依赖于陌陌相对封闭的生态而存在,面向的却可能是国外互联网上跨径最广、数量最大的用户群体。因而对于小程序技术,虽然是基础安全问题也值得挖掘与思索,进一步针对小程序的奇特性进行安全性的研究。

小程序场景下的安全问题

从一张流程图简单说明陌陌小程序的构架拓扑。

图片[1]-微信小程序场景下的安全问题从一张流程图简单说明-唐朝资源网

由图中可见小程序的网路构架主要包含后端与前端两个部份。其中后端部份是坐落用户侧的顾客端,包含陌陌App和小程序顾客端(即小程序后端);而前端部份为远离用户的服务端,包括坐落腾讯公司服务器的陌陌服务器前端,以及提供小程序的业务方前端服务器与数据库等。

在小程序的运行过程中,须要与业务前端进行网路数据通讯,以完成业务上的功能;同时小程序的运行环境又依赖于陌陌生态,因而小程序常常须要调用陌陌提供的API,比如调用陌陌顾客端的二维码辨识、人像辨识等API,或调用陌陌前端提供的用户身分认证等插口。简单说完陌陌小程序的构架和通讯场景,下边针对上述场景阐述可能存在的安全问题。

后端安全

后端包括陌陌顾客端和小程序两个部份,其中陌陌顾客端主要以App或应用程序方式存在,具体而言就是基于x86或ARM的Android、iOS、Windows或MacOS应用程序;小程序主体为采用陌陌定义的形式进行打包、编码甚至加密的web应用。

源码泄露

从二补码逆向来说,陌陌App采用的保护举措并不多,虽然练习时长三年半的逆向工程师也能比较容易进行关键函数hook,进而达到预期的逆向目的。而小程序部份主要为web,由于没有编译过程所以代码基本上以源码形式运行,相较与二补码逆向便天然增加了门槛。虽然陌陌团队在小程序供应链上对构造和分发过程采取了一定的安全举措,但相应的小程序逆向技术更堪称是魔高一丈。诸如知名的wxappUnpacker对陌陌小程序的打包算法进行了逆向,实现了小程序解包,这样小程序的逆向就剩下源码审计了。

图片[2]-微信小程序场景下的安全问题从一张流程图简单说明-唐朝资源网

通过逆向技术对小程序进行源码级调试

源码分发是web后端技术的一大特点,因而web后端代码保护技术也是一个亘古的话题。web后端技术是小程序的基石,因而web后端代码保护技术也可以用于于小程序中,对小程序的web后端代码进行保护,虽然代码被解包也无法被理解、调试和更改。

在腾讯官方提供的小程序开发工具中提供了压缩代码和代码保护选项,可以在打包的过程中对小程序中的JS代码进行混淆与压缩。也可以使用好评如潮的等第三方开源工具进行JS代码混淆保护。

源码信息泄露

功击者获取了小程序的源码,不仅可以对小程序的特定功能流程、API调用等进行剖析与更改,也可能在代码审计过程中发觉因为开发者失误而留在web后端代码中的敏感信息。诸如帐号密码敏感数据、数据库地址或身分证等个人信息。前阵子有由于在某技术平台进行交流时在代码注释处泄露数据库密码造成大量信息泄露风波,可见在对发布的代码进行信息脱敏的重要性。对于web后端代码这些几乎以明文分发的代码,对敏感信息的扫描则更变得尤为重要。

在小程序开发工具中似乎对特定数据如身分证、手机号、银行卡等敏感数据有一定的扫描能力,但对于用户名密码等敏感数据的扫描与测量一般还是须要人工代码审计进行,同时加大开发人员的安全意识。

恶意代码

在小程序供应链上,开发堪称是最重要的一环。开死党程序的工具主要有三种:使用腾讯官方提供的小程序开发环境进行开发、使用第三方小程序开发环境进行开发、交给外包团队进行开发。不仅直接使用官方工具进行开发之外,后两者就会存在一定的风险,比如被第三方植入恶意代码;假如把后端和前端都交给外包团队进行开发的话,则恶意代码的风险不仅剩在于小程序顾客端,也可能存在于服务端,比如外包团队在服务器上留下侧门。

尽管官方开发工具安全又可靠,但常常会有一些限制,因而许多开发者选择了更为自由的第三方开发工具,即便用安全换取便捷,如同多年前的Xcode侧门风波中,开发者由于官方Xcode下载速率慢而安装了第三方途径下载的Xcode,造成编译下来的App存在侧门。

在计算机发展史上,安全与效率的博弈是始终处于动态平衡的过程中,两者都是不可或缺的。

前端安全

小程序是典型的前后端分离场景小程序技术架构图,前端一般使用API方法为小程序后端提供服务。与其他前端服务类似,小程序前端也会面临常见的web功击,而又因为使用API方法提供服务,也会面临API相应的安全问题。

网路安全

作为一台服务器在网段开放端口提供服务,自然会遭到各类各样的恐吓,例如端口扫描、漏洞扫描和端口爆破等。虽然是无关业务,功击者也可以按照存活的主机与开放的端口发起DoS和DDoS功击。

所以劝说务器在外一定要学会保护好自己:在网路层上,对包长过大的PingofDeath等功击手段进行辨识;在传输层上,对SYNflood、UDPflood等功击手段进行辨识;在应用层上,还要辨识慢速HTTP、DNS洪泛等功击。其实,专业领域最好交给专业人士小程序技术架构图,应用服务器不应当疲于应对功击,搭建一个DDoS防御服务是更好的选择。

图片[3]-微信小程序场景下的安全问题从一张流程图简单说明-唐朝资源网

WEB安全

作为前端服务,面临的web安全也是耳熟能详千篇一律,比如基于PHP和MySQL搭建的前端容易遭到MySQL注入、PHP反序列化、文件上传与包含等各类功击;基于Java及其框架搭建的前端,则会遭到各类Java反序列化功击、框架漏洞功击等;基于python和Flask搭建的前端,又有模板注入等功击形式……

web安全功击手段数不胜数,也是防不胜防,但可以用一个通用招式应对,就是上WAF(WebApplicationFirewall,web应用防火墙)!

图片[4]-微信小程序场景下的安全问题从一张流程图简单说明-唐朝资源网

上图中,因为抗DDoS和WAF都前放在前端服务器并提供安全服务,因而将两者整合具象作为安全层。

API安全

API安全和web安全存在些许差别,而因为小程序场景中对API的大量使用,因而在研究小程序前端安全时,可以将API安全独立于web安全进行研究。不仅常见的web功击手段外,小程序场景下的API服务都会面临CC功击和未授权访问功击等。

许多WAF早已具备了对于CC功击的防护,但对于API功击的纵向、纵向未授权访问防御,一般须要专业API网段进行防护。除此之外,更为行之有效、低成本高利润的举措则是提升开发人员的安全意识。虽然稍为有安全意识的开发人员就不应当写出有未授权访问漏洞的API。

业务安全

说究竟小程序也是围绕着业务去提供服务,代码层面上的功击可以用代码去防御,但对于业务上的攻守,代码就更多只能起到辅助作用。

小程序业务上的一个风险点是功击者伪造相像的小程序进行用户欺瞒。伪造小程序并不困难,不仅正向开发,能够采用逆向获取源代码的形式。而伪造的小程序可以套取用户的点击则更为轻松,尽管人们往往被教育不要点击由来不明的链接,但人们常常忽视了由来不明的小程序。比起链接给人们带来的不安全感,小程序的点击页面图文并茂,用户在点击之前几乎难以判定小程序的正规性。

图片[5]-微信小程序场景下的安全问题从一张流程图简单说明-唐朝资源网

小程序的真假无法辨识

对于虚假小程序的排查,一方面须要陌陌官方提升对小程序发行的初审,制止虚假的小程序发布;另一方面对于相关的业务提供方,也可以进行小程序相像名称进行搜索,或接受用户举报,进而发觉伪造小程序。

杂记

正如前文所说,安全与效率仍然在进行着动态平衡的博弈。在联通互联网时代,其实是效率为王。快速的应用开发、功能迭代之下,必然是在安全性上做出了牺牲。小程序是联通互联网的又一次繁荣,也是对应用开发效率的进一步追求,而同样也是在安全性上的又一次牺牲。相比起桌面端应用在安全上的孜孜以求,小程序领域上满地都是未授权的API。

在一个领域发展到颠峰之时,常常是其安全才开始萌芽,而现在小程序技术已将近成熟,开发人员应当多关注关注安全了。

© 版权声明
THE END
喜欢就支持一下吧
点赞209 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片