Paypal出现漏洞,可获取账户余额和近期交易数据

PayPal的bug允许通过逐一列举的方式获取付款方式的最后四位数字以及披露任何给定PayPal账户的账户余额和近期交易数据。

Paypal出现漏洞,可获取账户余额和近期交易数据

介绍

这篇文章详细介绍了一个问题,它允许列举付款方式的最后四位数字(例如信用卡或借记卡),并且披露任何给定PayPal账户的账户余额和近期交易。

这次攻击被提交给PayPal的  bug奖励计划 ,在该程序中它被归类为超出范围,这是无可否认的,因为他们的程序范围没有提到对他们的交互式语音响应系统的任何攻击。

Paypal出现漏洞,可获取账户余额和近期交易数据

先决条件和侦察

为了开始攻击,攻击者需要知道与帐户有关的两条信息,这些信息将是与其链接的电子邮件地址和电话号码。

知道与帐户关联的电子邮件地址和电话号码后,攻击者将访问 PayPal网站上的“  忘记密码”页面,并输入与目标帐户关联的电子邮件地址。

然后,攻击者将收到链接到该帐户的卡片类型,以及该卡的最后两位数。

Paypal出现漏洞,可获取账户余额和近期交易数据

攻击交互式语音应答系统

乍一看,PayPal基于客服电话的交互式语音响应系统,似乎最多允许尝试提交三次每个电话的最后四位数字。

但是,如果第一次提交尝试不正确,则在同一通话期间的后续尝试中,将不会通知主叫方成功提交。这使得在相同的电话呼叫中给予呼叫者的任何额外尝试都是掩饰。

为了避开这个假定的限制,攻击者只需要一次尝试提交每个电话最后四位数的可能组合。

Paypal出现漏洞,可获取账户余额和近期交易数据

此外,限制每次通话一次提交的次数,使得枚举正确组合的任务更加高效,更不用说,它可以很容易地区分正确的尝试和错误的尝试。

同时,我已经用我自己的帐号测试了这个理论,我已经能够得出结论,提交尝试的数量是没有限制的,这意味着,假设攻击者可以调用10万次,以完全自己的方式列举出最后的四位数字。

然而,这忽略从忘记密码页中检索到的最后两个数字,这样的条件有效地使攻击变得更加可行——通过将可能的组合数量从10万减少到仅100。

unsuccessful-attempt音频记录,试听地址:https://soundcloud.com/sainikaran/unsuccessful-attempt(可能需要梯子)

一旦找到了最后四位数字的正确组合,攻击者只需使用交互式语音应答系统来检索关于该帐户的信息。

在输入正确的最后四位数字后,该帐户的当前余额将自动被机器读取。

account_balance_disclosure音频记录,试听地址:https://soundcloud.com/sainikaran/account-balance-disclosure(可能需要梯子)

此外,为了检索关于最近事务的信息,攻击者只需要说“最近的交易”,然后就可以读出相同的信息。

recent-transactions-disclosure音频记录,试听地址:https://soundcloud.com/sainikaran/recent-transactions-disclosure(可能需要梯子)

攻击效果和效率

如果前面提到的先决条件已经得到满足,攻击者将毫无疑问地能够列举与帐户关联的付款方式的正确最后四位数字。这些信息可以进一步用于检索帐户的当前余额和最近的交易。

此外,在对最后四位数字的提交时间进行了多次尝试后,发现提交的尝试平均需要30秒左右,最快的可能是每通电话27秒。

如果我们把尽可能快的时间作为我们的平均数,列举从00XX到99 XX的所有可能的组合,最多需要45分钟。通过在混音中添加另一部电话来连续拨打电话,这段时间可以减半。

可能的修复

用户应该被允许选择隐私设置,这样可以将在忘记密码页面上显示的数据量保持在最小值。这类似于Twitter允许用户在试图重置密码时,隐藏与他们账户关联的电子邮件地址和/或电话号码的信息。这也类似于Facebook允许用户在密码重置页面输入他们的电子邮件地址时,选择他们的全名是否出现。

也许可以部署一些措施,在此情况下,如果需要显示的是信用卡或借记卡的最后两个数字,那么只有当请求与某个特定的条件匹配时才会显示出来,比如当请求是由可识别的设备或位置发出的。

结论

这个问题允许对帐户上的付款方法的最后四位数字进行枚举,这样就可以公开帐户的当前余额和最近的交易。

如果攻击者知道目标帐户的电子邮件地址和电话号码,首先会使用PayPal的忘记密码页面来检索与该帐户关联的支付方法的最后两位数。

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

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