一. 概述
用户认证安全的问题,仅仅从技术层面来说,可能并不是一个很复杂的问题,因为解决起来并没有那么难;但如果从交易所实际交易业务水平来看,如果用户认证存在安全隐患,那将是非常可怕的。试想一下,如果黑客可以通过任意账户的用户认证,那么攻击者会对那些账户里的余额做什么?
这只是用户认证安全性的一个小例子。当然,类似的问题还有很多。虽然它们不同,但它们的破坏作用同样可怕。零点技术安全团队已经对这类问题进行了梳理。有关详细信息,请参考以下测试列表。建议各大贸易行查看此列表,避免不必要的安全风险。
二. 测试列表
服务端配置安全
用户注册过程测试用户登录过程测试密码恢复过程测试设备解除绑定过程测试验证码策略测试帐户权限更改测试帐户枚举测试弱密码策略测试密码信息加密传输测试默认密码测试帐户锁定机制测试认证旁路测试浏览器缓存测试权限提升测试授权旁路测试库碰撞攻击测试三. 案件分析
口令信息加密传输测试
“反正数据包只是在用户和交换机之间传输,为什么要加密密码?”有些粗心的开发者可能会这么想,但事实真的是这样吗?密码加密真的没用吗?显然,当然不是。但有些开发者可能真的是这么想的,所以密码信息不加密传输就成了各大交易所最常见的问题之一。
密码加密有很多优点,比如可以在一定程度上防止爆炸;比如用户在登录交易所过程中被中间人攻击,如果攻击者截获的数据包中没有明确的密码信息,攻击者就无法轻易获取密码,等等。技术安全团队在测试一个交换机时,发现该交换机的密码信息在传输过程中已经被前端加密。零点技术团队的安全研究员立即对网站前端的js代码进行审计,寻找登录/重置密码时需要提交的参数,找到后根据js内容要求构造未加密的数据包来请求api。幸运的是,交换对未加密的数据包是开放的,只要参数正确,即使是明文数据包也能发挥作用。最后,利用该漏洞和其他漏洞成功登录其他用户账户。
零点技术安全团队建议,各大交易所在传输密码信息时,可以采用加密传输,最好不要留下明显的加密算法线索(加密用的是哪种算法,密钥是什么等等。)来保证信息安全。
撞库攻击测试
爆破,即暴力破解,是指将大量可能有效的潜在答案逐一使用,最后留下一个真正有效的答案的攻击技术。爆破虽然繁琐,但往往有效,配合其他问题更能有效发挥作用。
撞库,类似于爆破,是黑客在互联网上收集用户和密码的泄露信息,生成相应的字典表,并尝试批量登录其他网站,然后得到一系列可以登录的用户。
零点的安全团队在对某交易所进行安全测试时,发现该交易所的账号登录存在问题。虽然每个用户的试错登录次数是有限的,但并没有限制同一个IP试图登录不同用户的请求次数。零点,科技安全研究员立即对交易所进行了攻击,最终成功破解了部分用户密码。
零点技术安全团队建议各大交易所在登录页面同时使用图形或更复杂的验证码;限制同一IP发出请求的频率和数量。
验证码策略
验证码在正常使用的情况下可以起到一定的安全作用,但是如果使用不当或者省略,也会留下隐患。有了验证码,很多交易所似乎松了一口气。其实可能只是“皇帝的新装”。技术安全团队在对某交易所进行安全测试时,发现该交易所需要在手机登录时向用户发送验证码并进行验证。兑换验证码6位数,看似安全,实际上有增加趋势,增加速度缓慢。在爆破验证码时,可以很容易地确认当前验证码值的范围。对于交易所来说,这样的验证码机制是“皇帝的新衣”;对于攻击者来说,降低了攻击成本,提高了攻击效率。
零点技术安全团队建议,各大交易所在使用验证码保证自身安全时,应使用多位数的随机验证码。有条件的话,最好使用字母和数字混合的高强度验证码,限制验证码输入错误的次数采取一定的措施。
账户枚举测试
很多交易所会在有登录功能的点设置不恰当的错误提示,比如“用户不存在”、“密码不正确”等等,但实际上这些错误提示会泄露一些关键信息。
安全小组在0: 00进行交换
安全测试时,发现该交易所登录框处存在报错提示不安全的问题。这样的安全问题看似无关紧要,但在黑客进行攻击时,如果可以枚举出存在的用户,无疑可使得攻击范围缩小,为攻击提供便利。假作真时真亦假,但凭伪造之证,信手指鹿为马,登堂入室。
罔顾用户之安危,岂非人为刀俎,我为鱼肉乎?
标签: 2022