在对客户网站以及APP进行安全检测的同时,我们SINE安全对验证码功能方面存在的安全
问题,以及验证码漏洞检测有着十多年的经验,在整个APP,网站的安全方面,验证码又分2种
,第一个是登陆的身份验证码,再一个对重要的操作进行的操作验证码,虽然从名字上都是验证
码,但这两种所包含的内容是不一样的。
登陆身份验证码的功能是用来判断当前账户登陆的是否是账户者本身,简单来说是判断是否是账
户的拥有者,用验证码来效验,用户注册账号的时候都会填写手机号,那么手机号就作为身份唯
一的证明,通过接收短信验证码来登陆网站,以及APP。重要操作方面的验证码,比如一些资金
,提现,转币,充值,修改银行卡,牵扯资金类的重要操作,含有这个修改密码等等的属于操作
类型的验证码,为的是防范别人盗用账户,对账户进行篡改,给账户拥有者带来损失,把握风控。
这两种验证码的功能都不一样,所以在对APP,网站进行安全检测的同时,查找出来的漏洞,以
及发生的安全问题,都不一样。我们SINE安全工程师在对其他客户平台,APP进行测试总结下来
的经验,来跟大家讲将验证码安全上的问题。
使用验证码为的就是提高APP安全,网站的安全性能,解决网站账户被暴力破解,频繁的API访
问,重要操作上的验证码二次确认,防止恶意操作导致用户账户本身受损失,这些安全方面,
都是为了区别开软件与人工,当用户被暴力破解,一般都是采用软件进行攻击操作,包括频繁
的访问某一个API接口,也都是由软件实施,人工根本不可能实现。验证码安全检测,主要从以
下几个方面进行测试: 验证码是否可以重复利用,验证码是否可被软件ocr文字自动识别,验证码是否被可以被绕过,验
证码在一分钟内是否有数量的安全限制,验证码的生成规则是否可逆,输入验证码出错的次数是否
会开启二次安全验证,根据近10年的安全测试经验,我们SINE安全统计发现验证码被重复利用,
被自动识别这些漏洞是经常出现的,下面讲一下验证码被重复利用漏洞:
正常来讲验证码在设计过程都是与session值进行绑定,当session产生第一时间,验证码也会紧跟
其后,也会直接生成与当前的session值进行双向的绑定。当用户访问APP,网站登录的时候,会
自动加载验证码,登录请求到数据库进行查询比对,用户的账号密码是否正常,验证码也会判断是
否正确,但这两个请求是分开来的,一个走数据库,一个走验证码,各尽其责。如果是可以先请求
验证码,再请求数据库,这就导致安全问题的发生,APP的开发人员在设计的时候大多数考虑的是
验证码是否输入正确,如果正确就通过,而忽略掉了可以调换业务流程的先后顺序,要判断登陆与
验证码的请求是否同步,在这个细节上,导致验证码被重复利用。
我们在测试其他客户APP,网站的时候,用户登陆时候先输入验证码,验证码通过安全效验后,直
接可以进行登陆用户账户与密码,在这个过程可以导致暴力破解的漏洞产生。
下一篇我们将会分享验证码被自动识别漏洞,希望我们的分享能给网站运营者与开发人员一些帮
助,当在开发APP,网站验证码功能上一定要谨慎,根据我们分享的安全问题着重测试,并修复
漏洞,完善网站的整体功能。
还没有评论,来说两句吧...