1、总体概况
谈起短信验证码的安全,首先从脑海中蹦出来的可能有:短信炸弹、验证码暴力破解、验证码重复利用、短信验证绕过……追究其根源,大致可以分为短信相关接口、验证码的特性甚至与业务逻辑验证相关联。
然而,短信验证码安全算是企业安全建设中能马上“止血见效”的突出代表,无论是从企业开销,又或实际有效性,还是用户体验来说,保护好我们的短信相关接口、完善校验逻辑是十分有必要的。本篇章将从短信验证码常见风险场景(验证码挖洞技巧)与加固措施等方面进行展开。
2、风险描述
短信任性发,慢性恶意消耗企业费用
在做验证码安全改造项目过程中,深刻的领悟到“水滴石穿”的道理,每条短信大约0.03元,目测单价很便宜但整个公司的业务短信量却很庞大,一年下来正常的总花销也是一大笔费用。如果发送短信接口被轰炸平台抓住,被用于发送恶意短信,无形之中在帮别人恶搞或出气时,还得为他买单。
曾发现某平台(gghzj.cc)在半小时内,调用我们的短信发送接口18w+次。庆幸的是该接口已经进行改良,设置了其他参数与规则进行严格校验。面临关停风险
3、参与人员
在该项目中主要涉及到三个角色:
中间件:作为基础服务的提供者(短信发送服务与验证服务),为所有业务提供短信相关接口,通常会制定一个基础的规则供各业务方使用。 |
---|
安全组:发现安全隐患与安全规则的制定者、验证人员以及推广。参与基础服务(短信服务)相关规则的安全测试、制定、验证,与中间件同学推广改造后的相关接口到各业务。 |
业务方:短信相关功能的使用者,接口调用、可灵活调整规则(比如短信发送的间隔时间基础为15s,业务方可根据实际情况调整为30s)以及对接口打包调用等。 |
4、加固措施
关于验证码的发送接口与验证码的特性可以归结为一点,即:对底层接口进行改良,涉及短信验证码的发送间隔、每分钟/小时/天的发送总条数、健壮性、有效性、一次校验失效性、手机号拉入黑名单的机制、手机号解冻的时间……
安全在其中扮演的角色主要是:规则制定与生效验证,以及协助中间件相关同学去推动业务进行改造,因为是“不参与就不给玩”的性质,再加上改动较小,所以各个业务方表现出来的积极性都比较高。部分相关的规则如下,可供大家参考:
原文发布于微信公众号 – 我的安全视界观(CANI_Security)
来源:freebuf.com 2018-07-29 14:19:47 by: 阿尔法之梦
请登录后发表评论
注册