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