收藏
评论

安全课堂|关于小程序AppSecret密钥泄露漏洞官方

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

一、漏洞介绍

AppSecret是小程序的唯一凭证密钥,也是获取小程序全局唯一后台接口调用凭证(access_token)的重要参数,需要开发者妥善保管至后台服务器中,并严格保密,不向任何第三方等透露。小程序若存在AppSecret密钥泄露漏洞的情况,会造成身份信息仿冒、敏感数据外泄等严重后果,开发者应及时发现该漏洞并快速修复相应问题。

二、漏洞案例

某小程序因为AppSecret泄露,导致攻击者可以通过调用API获取该小程序敏感数据,如接口调用凭证、用户信息、用户使用数据等,造成了极大的安全风险。

通过以下展示我们可以明晰该小程序敏感数据外泄的原因,测试者先对小程序网络请求进行抓包,发现请求响应中包含了appid和AppSecret敏感信息:

 

通过上述获取的appid和AppSecret敏感信息,可以利用接口获取到相应的access_token:

最后可以实现使用access_token调用该小程序所有后台接口的目的,后台服务端接口已涵盖数据、运维、消息等多方面场景能力。

下面我们再具体举几个利用access_token调用小程序后台接口的例子:

1.获取小程序用户评论

2.获取小程序用户访问数据

3.冒用小程序身份给用户发送消息



AppSecret密钥泄露漏洞其他的危害包括但不限于:冒用小程序身份给用户发送客服消息/模板消息、获取小程序session_key(用于解密微信侧提供的用户敏感数据)、获取小程序运维信息、日志等敏感信息、更改小程序相关的配置等。

三、漏洞修复

若小程序存在相应的AppSecret密钥泄露漏洞问题,请开发者尽快根据以下修复指引进行调整,以便消除风险:

1.后端API接口请勿把AppSecret敏感信息返回给前端(包括前端请求或小程序代码内传输、记录AppSecret)

2.立即登录小程序管理后台,在【开发-开发管理-开发设置】中对AppSecret进行重置。由于Appsecret存在历史泄露且仍然有效,务必进行重置才可消除风险,以免被攻击者恶意利用,请尽快按指引进行修复;

3.对AppSecret进行重置后,请及时修改后台代码,以免无法使用微信API

其他常见问题

Q1: 小程序提审不通过,显示小程序AppSecret存在历史泄露且仍然有效,是否需要重置AppSecret?

A1: 需要,请重置AppSecret后再提审,若审核通过,说明该问题已消除,若审核不通过,说明仍存在明文的AppSecret,需进一步排查并去除AppSecret字段及其对应值

Q2: 重置小程序AppSecret会影响到线上小程序吗?

A2: auth.getAccessToken需要使用AppSecret进行调用入参,重置AppSecret后,如果用新的AppSecret去获取access_token,那么旧的access_token会在5分钟内失效,如果未使用新的AppSecret,旧的access_token会在两小时内失效,故即使重置AppSecret,access_token仍有一定的缓冲期,可及时修改后台代码,不会对线上小程序造成影响。


相关文章

安全课堂|关于小程序session_key泄露漏洞

安全课堂|关于小程序云AK/SK泄露漏洞



如有其他相关疑问,欢迎随时参与官方社区讨论。


93108浏览
最后一次编辑于  2022-09-09
收藏

30 个评论

  • 魏巍
    魏巍
    2022-05-18

    后来都咋解决了,还是卡在这边,都不知道那个接口泄露了

    2022-05-18
    赞同
    回复
  • 魏巍
    魏巍
    2022-05-17

    不告诉你们扫描的那个接口有问题,排查好痛苦,你们不是扫描到那个接口出参有问题,应该在驳回里边展示一下呗多好

    2022-05-17
    赞同
    回复 1
    • 社区运营专员-wetingtu
      社区运营专员-wetingtu
      2022-05-18
      你好,请开发者自行排查相应的漏洞问题,按修复指引进行操作即可
      2022-05-18
      回复
  • 含光
    含光
    2022-05-16

    整个小程序都没有用到AppSecret,请问我为什么也报这个错误,小程序里面有个Secret,但不是小程序的

    2022-05-16
    赞同
    回复 4
    • 玛格尔
      玛格尔
      2022-05-17回复社区运营专员-wetingtu
      我们都没用到这个接口,全盘找了也没有这样的“AppSecret”字,怎么一直通不过呢?
      2022-05-17
      回复
    • 社区运营专员-wetingtu
      社区运营专员-wetingtu
      2022-05-17回复玛格尔
      请确认是否包含Appsecret的值,请勿只排查AppSecret该字段名
      2022-05-17
      回复
    • TimeOut
      TimeOut
      2022-05-20
      有secret字也不行,上次就是因为后台的接口名称叫个secret,最后求了半天后台才把参数名称改成别的了
      2022-05-20
      回复
    • 含光
      含光
      2022-06-20回复TimeOut
      这么奇葩
      2022-06-20
      回复
  • 🏸双人鱼月月鸟飞🏂
    🏸双人鱼月月鸟飞🏂
    2022-05-13

    重置AppSecret会有什么影响?重置后旧的AppSecret马上就不能用的吗?如何重置不影响现在的程序


    2022-05-13
    赞同
    回复 1
    • 社区运营专员-wetingtu
      社区运营专员-wetingtu
      2022-05-23
      你好,auth.getAccessToken需要使用AppSecret进行调用入参,AppSecret重置后,如果用新的AppSecret去获取access_token,那么旧的access_token会在5分钟内失效,如果未使用新的AppSecret,旧的access_token会在两小时内失效,故即使AppSecret重置,access_token仍有一定的缓冲期,可及时修改后台代码
      2022-05-23
      回复
  • dilmurat
    dilmurat
    2022-05-13

    未通过原因太模糊了,能不能原因详细的解释?

    2022-05-13
    赞同
    回复
  • dilmurat
    dilmurat
    2022-05-13

    我用access_token来检查了我的代码,检查了, appid, appsecret 等关键字,返回结果是 errcode: 0, errmsg: "ok",但是你们一直没审核我的小程序。

    2022-05-13
    赞同
    回复 1
    • 社区运营专员-wetingtu
      社区运营专员-wetingtu
      2022-05-17
      请确认是否包含Appsecret的值,请勿只排查AppSecret该字段名
      2022-05-17
      回复
  • dilmurat
    dilmurat
    2022-05-13

    我的小程序前端没有任何AppSecret,appID 等敏感信息,后端也没有返回AppSecret,appID等敏感信息。我好几次上传代码,一直没有通过。能不能具体的展示出来未通过的原因。

    2022-05-13
    赞同
    回复 2
    • 社区运营专员-wetingtu
      社区运营专员-wetingtu
      2022-05-13
      请根据修复指引进行操作:1.后端API接口请勿把AppSecret敏感信息返回给前端2.务必对Appsecret进行重置
      2022-05-13
      回复
    • dilmurat
      dilmurat
      2022-05-13回复社区运营专员-wetingtu
      我没有这种情况啊,你们有没有服务热线,我电话上跟你们沟通吧,我找了半天也找不到我代码有问题的部分。
      2022-05-13
      回复
  • LZzzz.
    LZzzz.
    2022-04-27

    appid不是公开的?

    2022-04-27
    赞同
    回复 3
  • Dawnset
    Dawnset
    2022-04-27

    2022-04-27
    赞同
    回复
  • 小黎
    小黎
    2022-04-27

    用心了


    2022-04-27
    赞同
    回复

正在加载...

登录 后发表内容