来看看美帝人民的安全意识:安全研究人员指责iOS版Outlook存在多处安全隐患
前不久微软刚刚发布了iOS版Outlook应用程序,而这几天安全研究人员René Winkelmeyer发现其数个安全隐患,包括微软可以在用户毫不知情的情况下获取用户的邮箱账户和服务器数据。
安全隐患一:云端存储用户登录信息
Winkelmeyer在安装iOS版Outlook应用程序时,发现它会询问用户是否接收推送通知,这有点匪夷所思。是这样的,可能你用过iOS自带的邮件收取工具,因为他是常驻后台可以实时推送,但是对于其他APP来讲是没有这个权限的。所以Winkelmeyer就决定测试一下为什么该应用程序会请求用户接收iOS推送。
测试内容如下:
1、首先彻底关掉这个APP;
2、用另一个邮箱向我的Outlook邮箱发送测试邮件;
3、我立即收到了新邮件的推送通知。
Winkelmeyer推测,微软可能是使用云端来记录用户的登录凭证,并实时监控他们的ActiveSync账户。
换句话说,这时候微软已经在服务器端已经获取到了你的邮件标题邮件内容,然后再推送到手机上。
这样直接推断可能不太恰当,于是他又进行了第二次测试:
首先,把所有设备设置成飞行模式(避免出现数据干扰);
然后,打开Apache服务器(作者的测试环境是把Apache放在了前端)访问日志;
居然又出现了!
54.148.96.196 – – [29/Jan/2015:16:19:50+0100] “POST/traveler/Microsoft-Server-ActiveSync?User=mysupermail%40winkelmeyer.com&DeviceId=123123123123&DeviceType=Outlook&Cmd=SyncHTTP/1.1″ 200 25 “-” “Outlook-iOS-Android/1.0″
这些测试证明,微软将其用户登录凭证和服务器数据储存在了云端,而且用户也不知情!理论上来说,微软完全可以访问所有用户的PIM数据。
小编补充:上面这段话可能大家第一次读不会太理解。其实大致是这样的,作为一个收信工具,Outlook应该只与邮件服务器通信,但是在iOS上他没有实时推送的权限,这时候一个收信工具的实时性就出了问题,总不能用户半小时手工去刷一次吧?不过微软的开发团队为了解决这个问题,在用户和邮件服务器之间又放了一台服务器用于监控你的邮箱状态,虽然你的手机是锁屏或APP退出,但是只要监控到有新邮件,服务器会直接推送到你的手机上。
虽然实时性解决了,但是美帝人民的隐私保护意识是特别强的,他们就认为微软在一定程度上获取了他们的邮件,侵犯了他们的隐私。
FreeBuf小科普
iOS的推送机制大致是按照以下的流程来的:
第一阶段:应用程序把要发送的消息、目的iPhone的标识打包,发给APNS。
第二阶段:APNS在自身的已注册Push服务的iPhone列表中,查找有相应标识的iPhone,并把消息发到iPhone。
第三阶段:iPhone把发来的消息传递给相应的应用程序, 并且按照设定弹出Push通知。
安全隐患二:邮件管理混乱
通常每个ActiveSync用户都有一个独一无二的用于同步数据的ID,这样管理员就可区分每个用户的设备。但是微软新开发的iOS版Outlook却不一样,所有用户的设备使用同一个ID,就如同一台设备,管理员根本无法区分每个用户的设备,根本分不清哪些是正常访问哪些是恶意访问。在大公司内,企业对邮件连接的控制是非常严格的,但是iOS版的Outlook开发的时候没有考虑到集中管理这一点。
安全隐患三:云存储风险
还有就是内置云端存储服务器的问题,iOS版Outlook的内置云端存储服务器有OneDrive、Dropbox和谷歌Drive。用户可以建立个人Outlook账户并共享所有邮件的附件到这些服务器上;或者直接在服务器上使用他们公司邮箱账户里的文件。虽然这不是什么漏洞,但是如果某公司员工使用iOS的Outlook来进行公司办公,比较容易出现将公司内部文件传输到第三方网盘上,有信息泄露的安全隐患。
安全建议
Winkelmeyer还解释称,苹果内置的托管和非托管应用程序是无法解决这一问题的,因为Outlook通信属于内部应用程序,用户无法控制它。他建议管理员通知所有的员工不要使用iOS版 Outlook 应用程序,并禁止该应用程序访问公司邮箱服务器。
[参考来源securityaffairs,转载请注明来自FreeBuf黑客与极客(FreeBuf.COM)]
- 巧用外部表备份历史数据(r5笔记第62天)
- Github 项目推荐 | 最小化类 AlphaGo Zero 引擎 —— Nochi
- 半自动化运维之快速连接到指定环境(一) (r5笔记第61天)
- Spring【DAO模块】知识要点
- 浅谈exp/imp(上) (r5笔记第81天)
- Java高并发秒杀系统【观后总结】
- 【专业技术】引擎算法探究
- 阅读SSM项目之scm
- 阅读SSH项目之ERP
- Hybris商品图片导入与压缩有关的配置
- 一条sql语句的建议调优分析(r5笔记第73天)
- O API - REST APIs的替代品
- 【专业技术】从4行代码看右值引用
- 【专业技术】8大你不得不知的Android调试工具
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- 微信小程序实战开发三:小程序之全局配置APP.JSON之底部菜单栏tabBar
- python 自动化测试(5):页面基类封装
- 微信小程序实战开发四:小程序获取用户信息流程及信息存储方式解析
- python 自动化测试(6):jar包调用
- 微信小程序实战开发五:使用自定义组件配置一个通用的图片轮播组件。
- 亿级流量系统如何玩转 JVM
- 微信小程序实战开发六:使用weui-flex创建一个可自由配置的布局组件。
- JDBCJava连接MySql数据库
- Python中的集合
- Centos7下误删python2和yum的解决办法
- Java正则表达式匹配日期及基本使用
- VM虚拟机中linux centOS 联网单网卡配置教程
- Python操作redis数据库
- pytest 测试框架学习(1):初识
- 爬虫工程师也应该会的 NodeJS 知识(三)- 快速抛弃 execjs