据羊了个羊官方微博,由于该游戏过于火爆,《羊了个羊》多次出现宕机的情况,服务器2天崩了3次。其创始团队在面对记者采访时表示,游戏大火之后最忙的事情就是应对持续的DDoS攻击,解决服务器反复出现的无法登录的异常情况。
众所周知,作为微信生态中的应用模块,微信小程序以其在微信内即可被便捷地获取和传播的特点,无需安装应用的便捷使用体验,逐渐深入到生活和商业中的方方面面。
那作为依附在微信之下的一种创新应用形态,为什么小程序依然会遭受网络攻击呢?微信小程序主要面临着哪些方面的安全挑战?相对于传统的Web应用和移动应用来看,小程序的安全防护又有哪些技术层面的安全侧重点?围绕这些问题,我们向业内一家专业的应用安全厂商瑞数信息进行了请教。
针对业务和敏感数据的攻击 已成为小程序面对的主要风险
瑞数信息技术总监吴剑刚告诉我们,事实上大众存在一个对微信小程序的理解误区,小程序看似是在微信中打开,但实则与微信并不存在紧密的耦合关系,微信只是为小程序开发者们提供了一个快速连接用户的入口。尽管小程序在微信体内运行,由微信提供了其运行环境和认证方面的安全保护,但业务逻辑风险、信息泄露,以及小程序自身安全性方面仍然存在问题。
“从防护的角度来看,一次合法的用户访问过程中,用户在通过手机终端向微信小程序提交访问请求后,会由微信来验证此次访问的合法性并向用户下发一个App ID,在这一环节之后用户的所有访问行为都是和小程序服务器之间的直接交互,因此,除非小程序服务器是部署在腾讯云上,否则腾讯云的防火墙、抗DDoS等安全能力是很难赋能给小程序开发者的。”
据他介绍,小程序作为一个轻量级的应用,它具备着开发成本低、使用便捷等多方面的特点,但从技术的角度看,小程序本身是一个较为简单的应用形式,开发者主要通过JavaScript 来开发业务逻辑以及调用小程序的API来完成业务需求。
小程序的JavaScript架构使得它对于网页的交互和访问都是通过调用API的接口来实现的,因此攻击者往往也会通过模拟获取App ID的方式绕开腾讯的安全校验环节,跳过通过手机访问小程序的过程,通过协议直接对小程序的API接口发起批量请求和攻击。
吴剑刚表示,协议攻击是针对小程序的最主要的攻击形式,这种攻击不需要真实的手机、群控设备等客户端,能够大幅度降低攻击的成本。同时,脱离了设备的限制后,攻击的门槛也大幅的降低,一些初级的黑灰产从业者也能够非常轻易地实施规模化攻击,导致针对小程序的攻击剧增。
在他看来,小程序面临的安全风险主要集中在业务安全和数据安全两个方面。
在业务安全层面,如应用层的DDoS攻击、刷量、薅羊毛、虚假砍价助力等都是常见的黑灰产的攻击方式,黑灰产会通过批量请求的方式进行虚假的点击和注册,来从事营销欺诈活动;在数据安全层面,攻击者则会利用小程序自身的业务逻辑缺陷,针对小程序进行越权访问攻击,通过不安全的API接口批量获取敏感的用户数据和交易数据,进而诱发更严重的数据泄露或商业信息泄露的风险。
吴剑刚告诉我们,传统的web网站应用和移动端应用中都会采用设备指纹技术来进行精准的标识,在设备指纹技术面前,尽管攻击者会使用多源低频的攻击手法,不断地变换IP地址发去访问请求,但只要设备指纹不被剥离隐藏,防御方就能够溯源到真实的攻击者IP进行封禁。
但在小程序中,由于权限的原因,小程序可采集的设备信息少到无法形成唯一的设备指纹,导致这一高效的防御技术在小程序中毫无用武之地。再有,针对小程序的攻击几乎都是协议攻击,导致设备指纹在小程序防护上的效果微乎其微。从小程序自身来说,因为黑灰产针对小程序的攻击大多是在业务层面,传统的安全防护技术如漏洞扫描、安全加固等效果也极为有限。
另外,相较于移动端应用,小程序还存在代码逻辑简单、代码无法实时更新、安全加固算法和签名校验算法薄弱等特点,一旦攻击者利用逆向技术破解,便更能够在短时间内肆意妄为。
小程序安全防护难点重重 如何应对才是良策?
据吴剑刚介绍,针对当前小程序面临复杂的安全挑战,安全行业内也提出了不同路径的解决方案。针对小程序JavaScript架构特性,业内的传统做法是帮助开发者对JavaScript进行安全加固,通过JS混淆技术去替换JavaScript代码中的一些关键函数和关键的业务逻辑,利用加密技术在攻击者对小程序代码逆向分析这一环节上接入安全防护措施,让攻击者难以对小程序代码进行逆向。
他谈道:“瑞数信息认为,安全是攻防双方的博弈,绝对的安全是不存在的,这就导致无论安全厂商在应用外层怎么加壳,攻击者仍然会想方设法地突破进来。”
因此,有别于传统安全加固厂商的做法,作为业内主流的应用安全厂商,瑞数信息的关注点在于“让攻击者逆向之后无功而返”,并提出了以“动态安全技术”为核心的小程序动态安全防护解决方案。
具体而言,瑞数信息主要通过三个维度的安全性校验,进而实现对企业小程序的安全防护:
第一个维度是进行客户端的真实性校验。在小程序用户发来访问请求时,瑞数信息的动态应用保护系统首先会协助小程序的运营团队去校验发起访问请求的客户端所在的微信环境是否涉及伪造,同时还会以SDK的形式去获取用户的App ID,并与用户提交的ID进行比对,以此来保证客户端的合法性和真实性;
第二个维度是针对自动化工具的校验。在抵御Bot自动化攻击方面,瑞数信息一直走在行业的前列。借助在人机识别技术、动态令牌技术以及动态验证技术方面的优势,瑞数信息动态应用保护系统会能够高效地发现工具性行为,将由工具发起的请求予以阻断。“微信小程序是一个以To C业务主导的场景,微信小程序端的每一次点击行为都应该由用户个人来完成,因此,工具性的访问行为注定是非法的,此类行为都会被直接拦截掉。”
第三个维度是围绕内容展开校验。针对小程序API接口容易出现的敏感数据泄露风险,瑞数信息主要通过动态算法对提交内容和请求内容进行双向混淆,将小程序提交的数据进行动态混淆成为一次性密文,极大地提高了非法访问行为的攻击成本和门槛。同时瑞数信息还将会对内容的完整性进行校验,防止内容遭到攻击者篡改。
“以《羊了个羊》的案例来看,攻击者显然是在应用层发起了大量的DDoS攻击,以自动化工具批量请求的方式集中访问应用服务器,导致了服务器的过载。如果处于瑞数信息动态应用保护系统的保护下,平台就能够通过人机识别技术,把所有的工具性访问行为识别出来并拦截掉,保证此类游戏小程序应用的业务稳定性”,吴剑刚分析称。
安全能力薄弱的小程序开发团队 应该从哪些方面着手规避安全风险?
9月15日,一张“流量主数据日报”截图在网上流传,图片显示,仅仅半天《羊了个羊》的收入就达到468万元,月收入更是高达2564万元。但就是这样一款一夜爆火的应用,其游戏的开发者曾对记者透露,整个开发团队只有3人,这一游戏应用的开发时间也仅有3个月左右。
那么,针对此类安全能力较为薄弱的小型应用开发团队,从整个小程序应用的开发到上线过程中,应该从哪些方面着手规避安全风险呢?在采访最后,我们也邀请瑞数信息的安全专家分享了一些安全建议。
吴剑刚表示,无论是何种规模的应用开发团队,都应该提高对应用安全的重视程度,最大程度地降低业务层面潜在的安全隐患。对小型开发团队而言,首先应该注意避免使用第三方开发工具,尽量选择微信官方提供的安全开发工具保障安全性。
同时开发者还应该采取一些必要的安全措施对代码采取必要的安全保护措施,包括将AppSecret在生成后需要后台应用保存维护,后台留存安全性需后台应用考虑,在获取客户敏感信息时注意加密传输、以白名单机制来限制传输通道内的互相访问等等。
他建议,尤其在自身安全能力不足的情况下,小程序的开发团队应该向第三方安全团队寻求合作,使用带有小程序安全加固、自动化Bot攻击防护类安全功能的产品来应对安全风险,尽早将黑灰产攻击掐灭于萌芽之中。