AWS Amplify是否不安全?

时间:2019-11-08 15:18:02

标签: react-native amazon-cognito aws-amplify

我已经承担了在React Native应用程序中实现用户 Sign In / Sign Up 流的任务。特别是这个应用程序没有什么特别的。通常的“登录”,“注册”(带有SMS验证)和“密码重置”屏幕就足够了。所以我去寻找身份提供者。 Auth0和AWS Cognito是最合适的发现。我的经理认为Auth0太昂贵,因此我们将其丢弃。这让我有了Cognito选项。

根据docs,可以完全替换默认UI(这会让UI / UX团队满意),但仍使用底层基础结构。安全是我们团队最关心的一件事。根据{{​​3}}和this,授权请求只能通过外部代理(移动用户浏览器)发出。因此,我深入研究了aws-amplify的源代码,发现最终this的内容(如果我在这里错了,请纠正我),这只是对AWS auth端点的简单API请求,该API传递了我的ClientId和其他属性。

这让我有点担心与AWS交互的安全性。由于AWS端点是安全的,我知道mitm攻击已被丢弃。

但是,什么使攻击者无法反编译我的移动应用程序,访问ClientId并直接向AWS发送请求? AWS Amplify真的不安全吗?还是我在这里遗漏了一些东西?

1 个答案:

答案 0 :(得分:1)

有很多可能的攻击方式,但在较高级别3脱颖而出
凭据泄露
社会工程学
拒绝服务

凭据泄露
您的帐户凭据不应该公开,STS凭据受时间限制,并且需要您专门向池授予访问AWS服务的权限
https://docs.aws.amazon.com/cognito/latest/developerguide/role-based-access-control.html 您需要给予最小的特权,请遵循此处概述的方法
https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege

社会工程学攻击
我猜想可以使用从反编译源公开的ClientId,但需要将其与其他用户数据结合使用,以作为一般规则来锁定与您的帐户相关联的所有内容,这些内容可能会在社交攻击中与客户ID结合在一起

要做的事
AWS在池中提供了所谓的“高级安全性” https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pool-settings-advanced-security.html

在构建全面的Cognito Apps时应要求

安全威胁不断发展,AWS表现出色,使用安全性优势
Cloudfront
https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/security.html

CloudTrail
https://aws.amazon.com/cloudtrail/

相关问题