Flexport今年在Hackerone被报告的6个有趣的漏洞(2)

将目标转到我们的Ruby on Rails后端,我们收到了两份关于双因素身份验证的漏洞报告。首先,我们收到的一份报告显示攻击者可以通过暴力攻击的手段,获取对非授权帐户的访问权限。

形成原因

我们选择使用了Authy作为我们的2FA合作伙伴,但他们的rails gem并未对验证速率做任何限制。

修复

我们在程序中添加了相应的速率限制,一旦输入频率超过我们的限制,我们就会对账户进行锁定。

6. 2FA绕过

另外份报告显示攻击者可以绕过我们的2FA,使我们的第二个认证因素完全失效。攻击者只需忽略2FA页面,直接在浏览器地址栏输入需要导航的到页面地址即可成功绕过2FA。

形成原因

这是本文所提及的漏洞中,最难以被追踪的一个漏洞。Authy rails gem hook至Devise,并在登录后使用以下代码要求2FA:

def check_request_and_redirect_to_verify_token ... id = warden.session(resource_name)[:id] warden.logout warden.reset_session! session["#{resource_name}_id"] = id ... redirect_to verify_authy_path_for(resource_name) end

从理论上讲,这串代码在成功登录后会将用户重定向到第二个因素身份验证页面。然而事实并非如此,而是直接将用户重定向到了其导航的页面。

def authenticate?(*args) result = !!authenticate(*args) # Try to log the user in yield if result && block_given? result end 修复

将warden.logout行更改为sign_out即可。我们在本地修复了这个问题,并向Authy发起了一个pull request希望为更多的人修复这个问题。

吸取的教训

对于一个企业而言即使安全做的再好,也难免会出现一些疏忽。而解决这个问题的最好方法,就是与类似于HackerOne这类的漏洞众测平台建立合作,借助大家的力量来共同维护我们的企业安全。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/e41ef96d8e31648c06c47ac9857ecad8.html