点击上方 "编程技术圈"关注, 星标或置顶一起成长
后台回复“大礼包”有惊喜礼包!
每日英文
Smile, Because you’re beautiful; stand strong, Because haters can't bring you down.
微笑吧,因为你笑起来很美丽;保持坚强吧,因为这样谁都不可以打倒你。
每日掏心话
人,总是会经历一些事情,如爱情,如友情。没有人是能够永远的快乐幸福的过每一天,没有人能够坦然的面对自己的坚强和软弱。责编:乐乐 | 来自:架构头条
编程技术圈(ID:study_tech)第 1248 次推文
往日回顾:2021 年 4 月程序员工资统计,这太可怕了……
正文
作者 | Aviran Hazum,Aviad Danin 等策划 | 晓旭基于现代云环境的解决方案已然成为移动应用开发领域的客观标准。只需单击操作,开发者就能将云端存储、实时数据库、通知管理、分析等服务全面接入应用程序。然而,对于这些云服务自身的安全性、配置及具体情况,开发人员们似乎不甚了然。本次研究主要从配置及实施的角度介绍云服务滥用引发的广泛隐患,并阐述“错误实践”可能给应用开发者及用户造成的实际影响。1概述Check Point Research (CPR) 最近发现,过去几个月来不少应用程序开发者将应用数据与用户数据置于危险境地。由于在向应用程序内配置与集成第三方云服务时未能遵循最佳实践,已经有无数用户的个人数据意外泄露。在某些情况下,甚至开发者自己的数据也极易受到影响。总之,错误配置已经令用户的个人数据及开发者的内部资源(包括更新机制与存储系统)面临严峻风险。在本项研究中,CPR 将向大家简要介绍滥用实时数据库、通知管理器以及存储系统的行为如何令过亿用户的个人数据(电子邮件、密码、姓名等)暴露于网上,又怎样令企业资源陷入攻击者的瞄准范围。2错误配置实时数据库实时数据库允许应用程序开发者将数据存储在云端,并确保将数据实时同步至接入的每一个客户端处。这类服务解决了应用程序开发中最常见的一大难题,即保证所有客户端平台均由同一套数据库提供支持。但如果应用程序开发者未能对实时数据库进行正确的身份验证配置,结果又会如何?事实上,这类错误配置在实时数据库中屡见不鲜。更令我们惊讶的是,此问题影响范围极广并涉及到数百万用户。在尝试访问相关数据之后,研究人员发现自己的未授权访问行为居然一路畅通无阻。图一:Google Play 上使用全开放式实时数据库的部分应用 在调查这些公开数据库中的内容时,我们提取到大量敏感信息,包括用户身份、电子邮件地址、密码、私人聊天以及设备位置等等。一旦攻击者访问到这些数据,极有可能引发服务撞库(即使用相同的用户名及密码组合尝试登录其他服务)、欺诈与身份盗用。搜索公众号后端架构师后台回复“架构整洁”,获取一份惊喜礼包。图二:Logo Maker 上的用户邮件、密码、用户名及 IDAstro Guru 是一款颇具人气的占星、星座与手相测试应用,目前下载量已经超过 1000 万。用户只需要输入个人信息(包括姓名、出生日期、性别、居住地、电子邮件及付款信息),Astro Guru 就能为您生成个人占星术及星座预测报告。但它的实时数据库也处于开放状态,这么多敏感数据一股脑外泄,想想就觉得刺激……图三:Astro Guru 上共享的用户位置、电子邮件与个人文件 除了个人信息之后,实时数据也未能逃过类似的命运。目前搭载有 5 万多台出租车上的 T’Leva 应用同样开放了后端实时数据库,我们借此访问到驾驶员与科员间的聊天消息,并成功检索到了用户全名、电话号码及所在位置(目的地与出发地)——只消发送一条请求即可获取,就这么简单。图四:T’Leva 上出租车司机与乘客间的私人聊天内容 如前所述,这类数据一旦公开将对开发者及用户造成巨大影响。从开发者的角度出发,参考平台上的这些可用数据甚至能够引导应用程序的行为模式。此外,我们发现大多数应用程序都具备“读取”与“写入”权限,单此一项就足以给数据库内容乃至开发商声誉造成巨大打击。3推送通知推送通知管理器是移动领域使用范围最广的服务之一。开发者需要经由推送通知才能与用户展开互动。例如,我们可以通过推送通知标记新的可用内容(例如发布新视频)、显示聊天消息、提示新邮件等等。大多数推送通知服务需要一个或多个密钥以标识请求提交者的身份。那么如果把这些密钥嵌入到应用程序本体之内,结果会如何?图五:将推送通知服务凭证嵌入应用程序本体 虽然推送通知服务中的数据往往不太敏感,但恶意攻击者仍然对夺取这种通知能力抱有兴趣。想象一下,如果新闻发布应用向用户推送了伪造的通知内容,将他们定向至某个伪造页面,并提示用户续订订阅服务……因为通知来自官方应用,用户们绝对不会有任何怀疑,麻烦也将由此开始。4云存储移动应用配合云存储带来了一套优雅便捷的解决方案,极大降低了开发者或已安装应用的共享文件访问门槛。以我们在 Google Play 找到的两款应用为例:首先是下载次数超过 1000 万的 Screen Recorder 录屏应用,它会将录制好的内容存储在云服务内。虽然通过云端访问屏幕录像非常方便,但如果开发者将访问密钥嵌入到存储这些录像的同一服务之内,则很可能造成严重后果。通过快速分析应用程序文件,我们成功恢复了访问密钥,从而掌握了读取各条存储记录的权限。第二款应用名为 iFax,它不仅把云存储密钥嵌入到应用程序本体,还保存了所有传真传输内容。在分析应用程序之后,我们发现攻击者能够一口气访问到使用这款应用的 50 多万用户曾经发送过的全部文档。图六:Google Play 上的应用未能妥善保护云存储密钥 出于道德考量,我们没有使用密钥访问这些存储账户。相反,我们只是通过应用程序内的实际代码收集到相关证据,用以证明这类敏感信息正处于风险威胁之下。5极力掩盖不少开发者自己也清楚把云存储密钥放在应用程序里不是什么好办法。在分析了几十个案例后,我们发现有些人宁愿花心思搞“看不见就是没问题”那套鸵鸟哲学。是的,某些开发者是真的认为客户发现不了的问题,也就不是问题。6把密钥藏起来下面来看几个滥用云服务密钥的示例。在使用 Jdax 等开源工具检查了公开发布的应用程序之后,我们整理出了部分开发者在应用程序代码中体现出的设计逻辑。在以下示例中,开发者使用 Base64 编码来隐藏密钥。问题是 Base64 不仅可逆,而且不需要任何共享 secret。我们只要使用相同代码行并输出解码函数的结果,就能轻松还原应用程序中的密钥。图七:iFax 应用上传的文档 图八:Screen Recording 上传的视频 即使应用程序中不使用明文密钥,我们只要找到负责初始化云服务接口的代码片段,即可从其参数的值中获取密钥内容。总而言之,只要开发者把密钥嵌入到应用程序之内,我们总能把它提取出来。图九:变量存储密钥“b.a”与“b.c”图十:使用 XOR 初始化 secret 密钥 7恶意移动软件没错,某些开发者会故意在移动软件当中引入恶意软件。下面来看之前报告过的 CopyCat 恶意软件。CopyCat 恶意软件在对 XOR 进行编码的同时,会将云服务凭证存储在类文件之内。通过对这款恶意应用的快速分析,我们不仅能够获得 CopyCat 所使用的云存储密钥,甚至还能修改所有存储数据。这里存储的不仅有恶意软件中的部分关键组件——例如 CopyCat 需要下载的恶意载荷托管服务——还包括恶意软件中的更新组件。图十一:CopyCat 的云存储密钥解码结果 原文链接:https://research.checkpoint.com/2021/mobile-app-developers-misconfiguration-of-third-party-services-leave-personal-data-of-over-100-million-exposed/PS:欢迎在留言区留下你的观点,一起讨论提高。如果今天的文章让你有新的启发,欢迎转发分享给更多人。
版权申明:内容来源网络,版权归原创者所有。除非无法确认,我们都会标明作者及出处,如有侵权烦请告知,我们会立即删除并表示歉意。谢谢!
欢迎加入后端架构师交流群,在后台回复“学习”即可。
最近面试BAT,整理一份面试资料《Java面试BAT通关手册》,覆盖了Java核心技术、JVM、Java并发、SSM、微服务、数据库、数据结构等等。在这里,我为大家准备了一份2021年最新最全BAT等大厂Java面试经验总结。别找了,想获取史上最简单的Java大厂面试题学习资料扫下方二维码回复「面试」就好了猜你还想看阿里、腾讯、百度、华为、京东最新面试题汇集我见过最“骚”的代码注释!神兽版都来了
程序员缺乏经验的 7 种表现
一个基于SpringBoot + Mybatis + Vue的代码生成器
嘿,你在看吗?