由于Facebook / Google登录配置错误而导致的帐户接管

Admin 2020-05-31 101人围观 ,发现0个评论 FacebookGoogle登录配置错误Web安全

使用Facebook登录或Google登录的移动应用程序,我发现超过70%的移动应用程序在后端验证令牌时配置错误,导致帐户被接管。

Facebook和Google Login中常见的问题是什么?

image.png 由于Facebook / Google登录配置错误而导致的帐户接管 Web安全

Facebook生成的访问令牌或Google生成的ID令牌在后端未正确验证。 如果这些令牌是通过自己的应用程序生成的,则不会通过验证。 这意味着任何恶意应用都可以接管配置错误的目标应用上的用户帐户。 让我们讨论一下Facebook和Google登录的技术部分。

Facebook登入

移动应用程序通常使用Facebook SDK登录到该应用程序。 现在,当用户使用Facebook登录时,Facebook会生成访问令牌,然后将其发送到后端进行令牌验证。 应用通常是通过以下方式验证令牌的:

https://graph.facebook.com/v2.10/me?fields=verified,email,name,id&access_token=XXXXXXXXXXXXXXX

此令牌验证网址的响应如下:

{
  "verified": true,  "email": “XXXXXX@gmail.com”,  "name": "Bhavuk Jain",  "id": “XXXXXX”}

验证的参数显示为true。 验证的此参数高度误解。 真实值表示令牌有效,但这并不意味着访问令牌是否由目标应用生成,因此允许恶意应用使用为恶意应用生成的访问令牌来访问目标应用的用户帐户 应用程式。

如文档深处的Facebook所述,认证访问令牌的正确方法是:

使用访问令牌和应用密钥创建HMAC 256,然后将其发送到API,这将有助于防止这种错误配置:

https://graph.facebook.com/v2.10/me?fields=verified,email,name,id&access_token=XXXXXXXXXXXXXXX&appsecret_proof=XXXXXXXXXXXXX

这是验证访问令牌的正确方法。

此处提供更多信息:https://developers.facebook.com/docs/graph-api/securing-requests

还有另一种验证访问令牌的方法。 只需将响应中的应用程序ID与列入白名单的应用程序ID之一进行比较即可。 (尽管不推荐)。

同样,在Google登录中,Google会生成一个ID令牌,这是开发人员通常用来验证它的方式:

   API:

https://www.googleapis.com/oauth2/v3/tokeninfo?id_token=eyJhbGciOiJSUzI1NiIsImtpZCI6IjkzOXXXXXXXXXX
{
 "azp": “XXXXX.apps.googleusercontent.com",
 "aud": “XXXXX.apps.googleusercontent.com", "sub": "1000017729808XXXXXX”,
 "email": “XXXXX@gmail.com”,
 "email_verified": "true",
 "at_hash": "GfILIXhViTXXXXXXXXXX",
 "iss": "https://accounts.google.com",
 "iat": “XXXXX”,
 "exp": “XXXXXX”,
 "name": "Bhavuk Jain",
 "picture": "https://lh4.googleusercontent.com/-P3L8oCL4OhM/AAAAAAAAAAI/AAAAAAAAAMs/1ia6G7mh0lg/s96-c/photo.jpg",
 "given_name": "Bhavuk",
 "family_name": "Jain",
 "locale": "en",
 "alg": "RS256",
 "kid": “XXXXX”
}

cebook或Google。 例如,假设有Uber的竞争对手“ XYZ”应用。 Uber和XYZ都有一个共同的用户。 如果XYZ应用程序使用Facebook / Google登录名配置有误,则Uber可以使用其自己客户的访问令牌访问XYZ应用程序的用户帐户。

如何单独预防此问题

大多数时候,开发人员忘记将aud的值与列入白名单的值进行比较。 aud代表已生成此令牌的应用程序ID。如果aud值是否属于已知应用,则应对此进行验证。

这些错误配置的概念证明/影响

假设用户已经访问了恶意应用并通过Facebook / Google使用Fa进行了登录,则任何恶意应用都可以接管配置错误的目标应用的用户帐户:

在访问令牌验证API中,如果它们强制要求传递秘密令牌以处理访问令牌并获取用户数据,则所有应用程序将自动获得安全保护。我也向Facebook提出了这个问题,但他们不认为这是一个问题,因为开发人员的工作是对令牌进行正确的身份验证。

我发现这种配置错误的一些应用包括Instacart,Stackoverflow,Microsoft的GroupMe,Smartsheet,Google的Waze,Boozt Fashion等。大多数公司都将此问题作为P1并相应地付款。但是有些应用程序不认为这是一个问题,并且该漏洞仍然存在,其中包括Snapdeal,Freecharge,9Gag和Udemy。

仍然有数百个应用程序遭受这种错误配置。如果找到一个,请在Twitter上给我最高的五个,或者在这里发表评论。

请发表您的评论
请关注微信公众号
微信二维码
不容错过
Powered By 蚁人博客