企业安全项目 | 短信验证码安全

谈起短信验证码的安全,首先从脑海中蹦出来的可能有:短信炸弹、验证码暴力破解、验证码重复利用、短信验证绕过……追究其根源,大致可以分为短信相关接口、验证码的特性甚至与业务逻辑验证相关联。

1、总体概况

谈起短信验证码的安全,首先从脑海中蹦出来的可能有:短信炸弹、验证码暴力破解、验证码重复利用、短信验证绕过……追究其根源,大致可以分为短信相关接口、验证码的特性甚至与业务逻辑验证相关联。

图片.png

然而,短信验证码安全算是企业安全建设中能马上“止血见效”的突出代表,无论是从企业开销,又或实际有效性,还是用户体验来说,保护好我们的短信相关接口、完善校验逻辑是十分有必要的。本篇章将从短信验证码常见风险场景(验证码挖洞技巧)与加固措施等方面进行展开。

2、风险描述

短信任性发,慢性恶意消耗企业费用

在做验证码安全改造项目过程中,深刻的领悟到“水滴石穿”的道理,每条短信大约0.03元,目测单价很便宜但整个公司的业务短信量却很庞大,一年下来正常的总花销也是一大笔费用。如果发送短信接口被轰炸平台抓住,被用于发送恶意短信,无形之中在帮别人恶搞或出气时,还得为他买单。

曾发现某平台(gghzj.cc)在半小时内,调用我们的短信发送接口18w+次。庆幸的是该接口已经进行改良,设置了其他参数与规则进行严格校验。面临关停风险

短信滥发,客户投诉,通道面临关停风险
中间件的同学常常发来坏消息,某通道因为投诉被处罚关停,这是常见的由客户发起投诉的案例。至于原因除了短信发送接口存在安全缺陷导致不停发送外,不可忽视的还有测试环境的规范化问题,在进行功能测试时,是否操作不规范致发送短信验证码到真实用户手机。
图片.png图片.png
短信验证码失效,又或是业务逻辑背锅
短信验证码在对企业造成不良影响的同时,还可能违背设计者的初衷,并未到达预期验证、放刷等功能。其原因主要为:验证码本身与业务逻辑。如果从漏洞的角度来讲,大致可以分为以下几种:
图片.png相关漏洞的美,确实不足以在这里用思维导图简单的描绘来形容,如果对这方面感兴趣或有独到的挖洞思路,欢迎留言交流。

3、参与人员

在该项目中主要涉及到三个角色:

中间件:作为基础服务的提供者(短信发送服务与验证服务),为所有业务提供短信相关接口,通常会制定一个基础的规则供各业务方使用。
安全组:发现安全隐患与安全规则的制定者、验证人员以及推广。参与基础服务(短信服务)相关规则的安全测试、制定、验证,与中间件同学推广改造后的相关接口到各业务。
业务方:短信相关功能的使用者,接口调用、可灵活调整规则(比如短信发送的间隔时间基础为15s,业务方可根据实际情况调整为30s)以及对接口打包调用等。
图片.png

4、加固措施

关于验证码的发送接口与验证码的特性可以归结为一点,即:对底层接口进行改良,涉及短信验证码的发送间隔、每分钟/小时/天的发送总条数、健壮性、有效性、一次校验失效性、手机号拉入黑名单的机制、手机号解冻的时间……

安全在其中扮演的角色主要是:规则制定与生效验证,以及协助中间件相关同学去推动业务进行改造,因为是“不参与就不给玩”的性质,再加上改动较小,所以各个业务方表现出来的积极性都比较高。部分相关的规则如下,可供大家参考:

图片.png图片.png通过对底层短信相关接口的改造,足以解决短信验证码中的大多数问题,但在具体的一些业务场景中,可能仍然存在安全漏洞,由此需要安全人员深入各业务线,对短信验证码可能出现的场景进行安全测试,尽可能的完善安全业务逻辑。通常涉及的场景有:
图片.png至此,关于验证码安全的相关内容已经告一段落,也基本解决了目前发现的以及面临的安全风险。如果在大家的实际工作中遇到没提到的点或难题,欢迎在下方留言讨论。

原文发布于微信公众号 – 我的安全视界观(CANI_Security)

3

发表评论

已有 4 条评论

取消
Loading...

相关推荐

css.php