收藏
评论

安全课堂|关于小程序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泄露漏洞



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


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

30 个评论

  • 吴奕群
    吴奕群
    2022-04-27

    阅!

    2022-04-27
    赞同 1
    回复
  • 蛋白质。
    蛋白质。
    04-05

    我不理解的是,非云开发的小程序,如果要获取到openid,得向官方发起请求,而请求参数是需要携带appsecret的,这样被抓包不是也直接泄漏了吗?

    04-05
    赞同
    回复
  • 【醉乡村】朝天硬核桃
    【醉乡村】朝天硬核桃
    发表于移动端
    2023-10-31
    司马昭之心
    2023-10-31
    赞同
    回复
  • 戴华兵
    戴华兵
    2023-03-04

    appsecret密钥重置下载的Key文件如何在后台使用?有没有文档教程麻烦提供一下可以吗,谢谢!

    2023-03-04
    赞同
    回复 1
  • Seven
    Seven
    2022-09-15

    官方你好!

    AppSecret(小程序密钥)重置后,其一:之前放服务器上校验文件是否需要重新更换?其二:重置AppSecret,access_token仍有一定的缓冲期,这个缓存期多久?

    2022-09-15
    赞同
    回复 3
    • 社区运营专员-wetingtu
      社区运营专员-wetingtu
      2022-09-15
      你好,1.需要更改的地方就是后端有使用到AppSecret的地方 2.参考本文其他常见问题Q2,已经说得非常清楚了哈
      2022-09-15
      回复
    • Seven
      Seven
      2022-09-15回复社区运营专员-wetingtu
      那这2小时,重置AppSecret到审核发布新版本 时间不够啊(涉及接口更换)
      2022-09-15
      回复
    • 社区运营专员-wetingtu
      社区运营专员-wetingtu
      2022-09-15回复Seven
      AppSecret只能保存在后端,重置后修改后端代码即可,然后审核通过后你再发布新版本即可
      2022-09-15
      回复
  • 绝一味鸭脖大润发总店
    绝一味鸭脖大润发总店
    发表于移动端
    2022-09-13
    你好,检测发现你的小程序appid:wx482c650d235db469明文传输AppSecret(传输url:https://waimai.oneplusone.net.cn/app/index.php),请进行重置后提审,并及时修改后台代码,避免无法使用微信API。 请妥善保存AppSecret,不要在前端请求或小程序代码内传输、记录AppSecret。
    2022-09-13
    赞同
    回复 1
  • 一笑
    一笑
    发表于小程序端
    2022-09-07

    你好!发现现在的密钥重置后与去年前年的不一样的,事需要下载的一个文件,下载后打开是很长的一串,请问密钥是下方的那一串谢谢:-----BEGIN RSA PRIVATE KEY----- MIIEogIBAAKCAQEAySM7NFdiJ4sfmVCQZSKlfjDXoRI5gcLLgWKWQFom5YuUS9qv v7wl3Mak4DfPM3CUGYBZjxQPGTyy6yyqyDf4tq++AXMjF58D6BX2OIizN3aYCfzV F62j9aztUlsYwSQGTe8OUmGIW3/K5drQFmzJAlzdINAF3GI2xQbKzceg5swriOFH GO8kQNn/V6bK

    2022-09-07
    赞同
    回复 1
    • 社区运营专员-wetingtu
      社区运营专员-wetingtu
      2022-09-08
      你好,密钥不可随意对外公布,请立即删除,请补充提供需对应下载密钥的具体页面截图
      2022-09-08
      回复
  • Mark.Zhang
    Mark.Zhang
    2022-07-19

    之前代码里面的appsecret只是申明了一个变量,并没有实际的值,我们去掉了这个变量,重新提审核还是被拒绝,请问接下来我要怎么处理?

    2022-07-19
    赞同
    回复 3
    • 社区运营专员-wetingtu
      社区运营专员-wetingtu
      2022-07-19
      你好,请描述审核不通过的具体原因,以便进行核实
      2022-07-19
      回复
    • 彩虹的微笑
      彩虹的微笑
      2022-07-20回复社区运营专员-wetingtu
      您好,我们小程序后台和前端 在做授权登录的接口的时候用到AppSecret,如果重置了AppSecret,会对之前的用户产生影响吗,用户openID是否会变?
      2022-07-20
      回复
    • 社区运营专员-wetingtu
      社区运营专员-wetingtu
      2022-07-20回复彩虹的微笑
      那首先应该把前端涉及AppSecret泄露的地方及时清除,再对AppSecret进行重置,可能会影响API的调用,主要是涉及token的生成,不会影响用户openid,可以询问下负责后端的同学
      2022-07-20
      回复
  • ~
    2022-06-24

    程序里卖年既无Appsecret的值,也没有AppSecret字段名。到底哪里有问题?你们怎么检测的?

    2022-06-24
    赞同
    回复 1
    • 社区运营专员-wetingtu
      社区运营专员-wetingtu
      发表于小程序端
      2022-06-24

      若小程序有过Appsecret历史泄露,就需要重置,已消除风险

      2022-06-24
      回复
  • 请叫我阿福
    请叫我阿福
    2022-05-19

    重置后,旧的AppSecret立马生效,后端一般也不能立刻修改生效,期间产生的问题怎么办,就不能几分钟后再失效?

    2022-05-19
    赞同
    回复 4
    • 社区运营专员-wetingtu
      社区运营专员-wetingtu
      2022-05-23
      你好,auth.getAccessToken需要使用AppSecret进行调用入参,AppSecret重置后,如果用新的AppSecret去获取access_token,那么旧的access_token会在5分钟内失效,如果未使用新的AppSecret,旧的access_token会在两小时内失效,故即使AppSecret重置,access_token仍有一定的缓冲期,可及时修改后台代码
      2022-05-23
      1
      回复
    • 代冲
      代冲
      2022-07-16回复社区运营专员-wetingtu
      那是不是说,我可以先重置了AppSecret,等小程序审核完毕上线之前修改后台API里的AppSecret,这样就不影响线上了是不是,重置了以后线上的小程序会不会用不成了
      2022-07-16
      回复
    • 代冲
      代冲
      2022-07-18回复社区运营专员-wetingtu
      问上连个话也不回??
      2022-07-18
      回复
    • 社区运营专员-wetingtu
      社区运营专员-wetingtu
      2022-07-18回复代冲
      参考这个逻辑哈,及时修改代码对线上没有影响,如果没有及时修改会有影响的
      2022-07-18
      回复

正在加载...

登录 后发表内容