Booking.com修补可能导致账号接管的OAuth漏洞

安全公司Salt Security发现住宿预订服务Booking.com,其在登录功能的OAuth实例,可能导致恶意攻击者接管用户的账号,而且黑客也能够以同样的手法,登录Booking.com子公司Kayak.com。Booking.com在收到Salt Security的漏洞通报后,已经迅速修复问题,并且确认未有黑客利用该漏洞入侵平台。

OAuth(Open Authorization)是目前的开放身份验证标准,使用户可以允许应用程序读取脸书或Google等账号资料进行身份验证,方便地登录应用程序。研究人员发现Booking.com上由于不安全的OAuth设计缺陷,使攻击者有机会接管以脸书登录的账号,而且一旦接管成功,攻击者便可以假冒用户执行任意操作,包括访问所有个人资讯。

在Booking.com以脸书账号登录,需要用户、Booking.com和脸书三方,通过连接中所带的参数通信,Booking.com网站上“以脸书登录”按钮的连接,带着重新定向回Booking.com的路径参数redirect_uri,当redirect_uri限制不够严谨,便让攻击者有机可乘。

恶意攻击者可以精心设计OAuth验证连接,再以社交工程的手法欺骗受害者点击,由于OAuth连接使用脸书域名,乍看之下非常合理,因此受害者很容易上当。

这项账号接管攻击,需要用上Booking.com上三个较小的不安全设计,第一个不安全的设计(下图)是当Booking.com向脸书注册OAuth身份验证服务时,并没有明确指定redirect_uri路径,因此脸书接受所有account.booking.com以下的路径,如此攻击者只要在account.booking.com域名下,寻找开放重定向漏洞,就有机会将用户定向至恶意站点。

而攻击者刚好发现Booking.com“我的仪表板”功能,存在开放重定向(Open Redirection)漏洞这个不安全的设计,系统会根据连接所带的变量决定重新定向的位置,因此黑客只要精心设计连接网址的变量,就能够将受害者导向恶意网站。

由于脸书仍会验证过程中redirect_uri的一致性,因此如果一开始redirect_uri路径,与之后遭到变造的redirect_uri路径不一致,便会被脸书阻挡。但安全人员在Booking.com的移动应用程序上,发现第三个不安全的设计,使得攻击者能够绕过脸书对redirect_uri路径的一致性验证。

移动应用程序会以Post的方式,传递一串代码给Booking.com系统,攻击者只要替换掉其中的resultURi(下图),便能够顺利将受害者导向恶意网站,借此拦截受害者的登录凭证,最终使用偷来的凭证接管受害者Booking.com的账号。

这项漏洞不只让使用脸书账号登录Booking.com的用户受到影响,即便用户是使用Google或其他登录方式创建账号,攻击者同样也可以使用脸书登录功能接管其Booking.com账号。攻击者只要向使用Google身份验证的Booking.com用户发送恶意连接,由于受害者电子邮件地址相同,Booking.com便会自动关联拥有相同电子邮件的账户允许登录。

研究人员提到,这类OAuth配置错误对公司和用户造成重大影响,攻击者可能会代替受害者提出未经授权的请求、取消预订,或是访问敏感个人资讯,包括预定历史记录、个人喜好或是未来订单。

虽然要完成这项攻击,需要结合三个不安全的设计,但安全人员提到,重点在于攻击者有能力在redirect_uri使用不同的路径,因此提醒应用程序在与脸书或是其他OAuth供应商集成时,配置中的redirect_uri必需要是写死的路径,而移动应用程序的问题也与redirect_uri有关,这个数值不应该来自用户输入。