验证码盗刷指攻击者利用您的短信验证码接口,通过程序批量对单个或多个号码进行验证码重复请求,给用户发送大批量短信。短信服务为您提供验证码防盗刷监控功能,保障您的资金安全和业务稳定,帮助您有效预防验证码被盗刷或短信轰炸带来的不良影响。验证码防盗刷更需要你我共同的努力,建议您参照本文,加强客户端的防御措施。
本文中含有重要信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。
什么是验证码盗刷
在注册、登录、重置密码等身份验证场景中,验证码短信是一种常见的验证方式。服务提供方会在用户验证操作时发送一个一次性验证码,用户需要输入验证码来完成身份验证。如果您的验证码系统防御不足或存在安全漏洞,就可能被攻击者利用,通过程序批量对单个或多个号码进行验证码重复请求,这种行为就是验证码盗刷。验证码被盗刷可能出现的几种特征如下:
短信数量骤增:短信发送数量和发送频率大大增加,远超正常的业务量级。
目标手机尾号连号:如133****1247、133****1248、133****1249等。
攻击请求呈现集中性:如请求的IP地址集中、目标手机尾号相连、攻击时间段集中等。
验证码盗刷的危害
验证码被盗刷将直接导致您的经济损失、对收到短信轰炸的用户造成骚扰,甚至产生账号挟持与信息窃取等安全问题,最终引发品牌信任度下降、安全隐私泄露及各种负面后果。
经济损失:短信盗刷会产生大批量的短信发送,给您带来经济损失。
运营中断:发生短信盗刷后,服务方需要资源和时间来处理盗刷攻击、用户投诉和升级安全措施,影响正常的核心业务运营。
信息泄露:盗刷直接发送短信给个人手机号,若攻击者获取到验证码,更有用户隐私泄露和账号挟持的风险。
信任受损:当手机终端用户未执行任何验证操作却收到大批量验证码时,会损耗用户对品牌的信任。
防盗刷建议措施
通过加强防范意识、持续监控异常和提升技术防御手段,可以有效抵御大部分盗刷攻击。建议您在程序中增加多种防御措施,如在请求验证码操作时收集请求信息,识别并前置拦截异常请求,防止攻击者利用安全漏洞发送批量盗刷短信。此外,应在短信服务控制台配置防盗刷监控和短信发送频率限制,对异常发送量的短信进行后置拦截。若未对接防御导致盗刷,应按照止损方案紧急处理,并尽快实施防盗刷措施。建议的盗刷防御方式如下:
完善程序:在您的程序中完善验证操作,识别异常的短信请求并进行拦截。
设置预警:在短信服务控制台开启验证码监控并设置验证码短信发送频率,当触发阈值时,平台将告知联系人并拦截超出限制的短信发送请求。
开启防盗刷监控 | 设置短信发送频率 | 设置国际短信发送阈值 | 操作指引
保护账号:建议您通过RAM账户调用API,并妥善保管您的AccessKey,定期轮转,降低泄露风险。
止损方案:发生盗刷时,您可以通过暂停短信接口或删除短信模板快速止损。紧急止损后请尽快对接上述盗刷防御方式,避免再次发生盗刷。
请继续阅读,了解措施的详细内容。
加强您的程序防御
攻击者盗刷短信接口的行为主要发生在客户端,加强客户端的安全防控措施以应对盗刷风险是至关重要的,不能仅仅依赖于服务端的防护。
增加验证操作复杂度建议您在程序中增加客户端用户验证操作复杂度。例如使用图形验证码,用户在获取验证码前,需要正确通过图形交互操作,达到区分人机请求、识别虚拟流量的目的,提高盗刷难度。您可以使用号码认证服务下的图形认证功能,含有滑块、点选和九宫格等验证方式。具体介绍,请参见图形认证。 | 使用一键登录认证如果您的使用场景为用户登录或注册,并且为手机端应用,您可以使用号码认证服务。号码认证服务整合运营商的数据网关能力,无需短信验证码即可实现一键快捷登录,不对外暴露短信请求接口,避免批量盗刷。 |
阿里云还提供了融合认证等多种认证方式可用于对接,请参见什么是号码认证服务和号码认证最佳实践。
限制异常客户端请求
需要您在程序中收集请求特征,对异常的集中性请求进行识别并拦截。强烈建议您实现以下方式,可有效抵御盗刷攻击:
限制验证码获取频率:限制用户获取验证码的最小间隔时间,一般限制为60秒,60秒后可重新获取验证码。
限制验证码时效性:设定验证码有效时间,超过有效时间没有输入的验证码则作废,需重新获取。
限制请求IP地址:识别请求的IP地址,对单个IP请求的验证码频率和量级进行限制,限制异常IP访问。
限制发送手机号:识别接收短信的手机号,对同一手机号请求的验证码数量和频率进行限制。
开启短信服务预警
阿里云短信服务支持多种预警设置,建议您设置联系人并配置预警。当触发预警时,平台会通知到联系人,联系人可第一时间收到预警通知后及时处理。
设置联系人:设置短信预警提醒联系人,当短信用量达到您设定的阈值时,平台会发送预警短信至联系人手机号码。
开启验证码防盗刷监控:设置国内消息的监控阈值和预警阈值后,当触发预警阈值时,会发送告警。
设置短信发送量预警:支持按日或按月设置。当发送总量达到您设置的预警值及限额值时,会发送告警。
设置验证码短信发送频率:设置国内消息下同一个号码的每分钟/小时/自然日的发送上限,当达到上限时会进行拦截。
设置国际消息发送阈值:设置国际短信每日/月的发送量上限,也可按国家/地域维度设置发送上限。
开启验证码防盗刷监控
仅国内短信支持使用防盗刷监控功能。
登录短信服务控制台通用设置-国内消息设置-安全设置页面。
打开验证码防盗刷监控开关。
单击修改配置,填写监控开启阈值和预警触发阈值。
当验证码短信同时满足设置的监控开启阈值和预警触发阈值时,将触发防盗刷预警,系统会发送短信到联系人。
监控开启阈值:设置每小时验证码短信发送条数。
预警触发阈值:设置当前一小时验证码成功率和当前一小时较前一天同时间段验证码增长率。
示例:如果某企业监控开启阈值设置为1000条、预警触发阈值中当前一小时验证码成功率设置为低于80%、当前一小时较前一天同时间段验证码增长率设置为高于50%,该企业验证码短信发送情况同时满足以上三个设置(每小时验证码短信发送条数超过1000条、且当前一小时验证码成功率低于80%、当前一小时较前一天同时间段验证码增长率高于50%)时,将触发防盗刷预警,系统会发送短信到联系人。
单击确定,完成设置。
设置短信发送量预警
登录短信服务控制台通用设置-国内消息设置-安全设置页面。
在发送总量阈值区域,单击修改配置,支持按日/月设置预警值和限额值。
预警值:达到预警值时短信服务会向联系人发送预警提醒。
限额值:到限额值时暂停短信发送业务。
单击确定,完成设置。
设置验证码短信发送频率
登录短信服务控制台通用设置-国内消息设置-发送频率设置页面。
单击发送频率设置,设置同签名、同号码的验证码发送频率在分钟/小时/自然日维度的限制。
单击确定,完成配置。配置在15分钟后生效。当短信发送频率达到阈值时,平台会拦截短信发送。
设置国际消息发送阈值
登录短信服务控制台国际/港澳台短信-国际消息设置页面。
选择全局配置或路由配置。具体操作,请参见设置短信发送预警。
全局配置:配置全局每日/每月发送量阈值。达到阈值后将进行告警提示或直接暂停短信发送。
路由管理:按国家/地区维度配置每日发送量的阈值。达到阈值后将进行告警提示。
保护阿里云账号安全
您可以为阿里云账号创建RAM用户并为其授权,让不同的RAM用户拥有不同资源访问权限,授权范围需谨慎。访问密钥(AccessKey,AK)则是阿里云提供给用户的永久访问凭证,需妥善保管避免泄露。
使用RAM账户:阿里云主账号拥有的权限较高,建议您通过RAM用户进行API调用和日常运维。
设置最小权限:查看和管理RAM用户的安全设置,给用户设置最小可用权限。具体操作,请见管理RAM用户安全设置。
避免AK硬编码:请不要将您的AccessKey直接编写在代码中,推荐您通过环境变量使用AccessKey,避免泄露造成资产损失。
定期轮转AK:建议您对使用超过90天的AccessKey及时轮转,降低泄露风险。具体操作,请参见轮转RAM用户的AccessKey。
盗刷快速止损方案
若您已经发现产生盗刷情况,可采取以下措施紧急止损。止损操作可能影响短信正常发送,建议您处理后尽快加强您的程序防御。
暂停短信接口:禁用您的程序中发送短信的接口,并在后续完善网站或接口的防御措施。
暂时删除模板:删除被盗刷的短信模板,模板被删除后就无法发送短信。若您采用此方案,如果需要恢复业务,还需要重新申请短信模板。
处理AK泄露:请参见AccessKey泄露处理方案,处理AK泄露问题。处理完成后请进一步确认并缩小AK权限,保持定期轮转AK,降低泄露风险。
后续操作
如果您开启验证码防盗刷监控后,收到系统发送的预警短信,建议您查看短信的发送频率、短信发送量和联系人手机号是否和当前业务现状相匹配。如果不匹配,可以根据您的业务场景设置日发送阈值上限值或短信发送频率,达到设置阈值后,短信接口会调用失败,及时保障您的资金安全;如果匹配,可以考虑是否需要调整监控开启阈值和预警触发阈值。