所以我逆向设计了两个约会应用

2020-05-03 11:46:12

在这篇文章中,我展示了我在Coffee Meets、Bagel和The League应用程序逆向工程过程中的一些发现。在研究过程中,我发现了几个关键漏洞,所有这些漏洞都已报告给受影响的供应商。

在这个前所未有的时代,越来越多的人逃往数字世界,以应对社会距离。在这些时期,网络安全比以往任何时候都更加重要。根据我有限的经验,很少有初创公司会注意到安全最佳实践。负责大量约会应用的公司也不例外。我开始了这个小小的研究项目,看看最新的约会应用有多安全。

此帖子中披露的所有严重漏洞都已报告给供应商。到发布时,相应的补丁已经发布,我已经独立地验证了修复已经到位。

咖啡遇见百吉饼或简称CMB,于2012年推出,以每天向用户展示有限数量的火柴而闻名。他们在2019年曾被黑客入侵过一次,600万个账户被盗。泄露的信息包括全名、电子邮件地址、年龄、注册日期和性别。近年来,中巴越来越受欢迎,是这个项目的一个很好的候选者。

联盟应用程序的口号是“智能约会”。它于2015年推出,是一款仅限会员使用的应用,基于LinkedIn和Facebook个人资料进行接受和匹配。这款应用程序比它的替代品更贵,更有选择性,但安全性与价格持平吗?

对于逆向工程,我采用静态分析和动态分析相结合的方法。对于静态分析,我主要使用apktool和jadx对APK进行反编译。对于动态分析,我使用具有SSL代理功能的MITM网络代理。

大部分测试都是在一个运行Android 8 Oreo的带根的Android模拟器中完成的。需要更多功能的测试是在运行Lineage OS16(基于Android Pie)、根植于Magisk的真实Android设备上进行的。

这两款应用都有很多跟踪器和遥测功能,但我想这就是行业现状。不过,招商银行的跟踪器比联盟还多。

该接口在每个百吉饼对象中都包含一个Pair_action字段,它是一个具有下列值的枚举:

有一个API可以在给定百吉饼ID的情况下返回百吉饼对象。百吉饼ID显示在每日百吉饼批次中。因此,如果您想查看是否有人拒绝了您,您可以尝试以下操作:

在打电话获取每日推荐的百吉饼之后,保存你喜欢的人的百吉饼ID。

这是一个无害的漏洞,但有趣的是,此字段通过API公开,但不能通过应用程序使用。

CMB显示其他用户的经度和纬度,小数点后最多2位,约为1平方英里。幸运的是,这些信息不是实时的,只有当用户选择更新他们的位置时才会更新。(我想这一定是应用程序用于配对的目的。我还没有验证这一假设。)。

该应用程序发送一个POST请求,其中包含电话号码、动态口令和持有者值,后者是一个16字节的UUID。

服务器接收请求,如果动态口令与电话号码匹配,则持有者将成为用户的登录令牌。

从这一点来看,对需要身份验证的端点的后续请求将包括头Authorization:承载SMS:{THE_UUID}。

成为承载的UUID完全由客户端生成。更糟糕的是,服务器没有验证承载器值是否为实际有效的UUID。它可能会导致碰撞和其他问题。

我建议更改登录模型,以便在服务器从客户端接收到正确的OTP后,在服务器端生成承载令牌并将其发送到客户端。

在联盟中,存在一个接受电话号码作为查询参数的未经验证的API。API会泄漏HTTP响应代码中的信息。当电话号码注册时,它返回200OK,但当号码未注册时,它返回418I';m一个茶壶。它可能会以几种方式被滥用,例如,将所有号码映射到一个区号下,以查看谁在联盟,谁不在联盟。或者,当你的同事发现你在……时,可能会导致潜在的尴尬。

此后,当向供应商报告该错误时,该问题已得到修复。现在API只为所有请求返回200。

该联盟与LinkedIn集成,在用户的个人资料中显示用户的雇主和职称。有时候收集信息有点过头了。Profile API返回从LinkedIn抓取的详细职位信息,如开始年、结束年等。

虽然这款应用确实会要求用户允许阅读LinkedIn个人资料,但用户可能并不希望详细的职位信息包含在他们的个人资料中,供其他所有人查看。我不认为这类信息是应用程序运行所必需的,而且很可能可以从个人资料数据中排除这些信息。

通常用于图片