关于小程序session_key泄露漏洞

为进一步提升小程序的安全性和用户体验,目前平台对提审的小程序均需进行安全检测,在检测过程中发现仍有许多小程序存在安全漏洞,其中涉及session_key泄露漏洞,希望通过以下相关的漏洞介绍、案例分析和修复建议,开发者能更加了解如何对该漏洞进行防御。


一、漏洞介绍


为了保证数据安全,微信会对用户数据进行加密传输处理,所以小程序在获取微信侧提供的用户数据(如手机号)时,就需要进行相应的解密,这就会涉及到session_key,具体流程可参考开放数据校验与解密开发文档。


session_key指的是会话密钥,可以简单理解为微信开放数据AES加密的密钥,它是微信服务器给开发者服务器颁发的身份凭证,这个数据正常来说是不能通过任何方式泄露出去的,只能保存于开发者服务器之中。小程序若存在session_key泄露漏洞的情况,则代表微信侧传递的用户数据有被泄露、篡改等风险,开发者应及时发现该漏洞并快速修复相应问题。




二、漏洞案例


某小程序因为session_key泄露,导致该小程序可以使用任意手机号进行登录,造成了极大的安全风险。


我们可以很明显地看到,下列请求中的session_key已经被泄露:




通过获取该session_key,我们可以结合iv解密出密文:




只需如下脚本即可进行解密,所以攻击者也可利用同样的信息去篡改用户数据,然后加密后返回给服务器,从而达到使用任意手机号进行登录的目的。




三、漏洞修复


通过上述案例,我们了解到session_key泄露会对小程序造成的危害,开发者需及时排查自身小程序是否存在相应的漏洞问题,若存在,请尽快在网络请求中,去除请求和响应中的session_key字段,以便消除风险。


有话要说