网络家庭于日前推出的 PChome IM(中文名:连络),遭网友连日在网络爆料其设计有资讯安全问题,除了明码在本机端的记忆卡存取资料、传输过程未经加密、大量主机私钥存于手机 App 本机端外,又遭爆其简讯认证机制与传输推播机制设计,异于大多数目前的手机程式设计逻辑,因此恐会造成严重的中间人问题。由于简讯认证、推播讯息、主机金钥认证、传输、行动装置本机端储存都是现有行动装置 App 设计所必备的项目,且被认定是无论何种 App 服务的基础,故会引起开发者与资讯安全研究社群的持续关注与研究,并不令人意外。
行之有年的行动装置推播机制
推播 Push Notification 是一个现今行动应用平台常见的功能;最早由 Apple 在 2009 于 iOS 平台上推出,是一种可以让行动装置使用者在没有打开行动装置主要操作界面前,就可以收到行动装置操作系统商透过基础网络强制推往装置上的通知服务。一般而言还会搭配行动装置内设计有通知中心来整理这些通知,这些通知主要包含有未接来电、新讯息(SMS 或其他任何 IM)、交易通知、App 内容更新、系统更新讯息等,是今日行动装置使用者不可或缺的其中一项讯息统整服务,几乎所有 App 都会用到这个基础服务。
关于推播机制的设计流程,Apple 在 iOS 的开发者教程其实是有很仔细的教学这段定义的。(iOS 开发者平日的其中一项痛苦就是只要弄错 Apple 对程式设计的逻辑,就有可能没有办法通过 iOS 上架验证,所以一定要读 Developer Guide 啊!)
▲ Apple 在 iOS 开发者教程里讲解从服务提供端推送远端通知到装置 App 上的流程。(Source:翻拍苹果 iOS 教程)
Apple 的 iOS 开发者教程,把推播机制分成服务提供端与装置端,介于 APNs(Apple Push Notification Service)的两边,在 Apple 的定义里,服务提供端不限制只有一个机器或装置,但必须能够与 APNs 建立稳定且安全的连接。透过这个连接,服务提供端将通知透过 APNs 送到装置上。
PChome IM 诡异的推播机制设计
PChome IM 这次的设计让人感到意外的主要是服务提供端与 APNs 建立连接的部分。
▲ 一般 IM 推播机制与 PChome IM 推播机制设计的异同。
大部分服务提供端的设计,为了建立稳定且安全的连接,会将这段连接设计在自家的服务器端与 APNs 之间。这样的设计考量,可以保证以下的好处:
- 以主机的安全性维护,来保有与 APNs 通讯所需金钥的安全性(不需要公开)。
- 主机与 APNs 连接过程不会容易被发现、窃听。
- 由主机建立与 APNs 的连接,绝对远比一般行动装置所处的实体环境网络(3G / 4G / LTE / Wi-Fi)等的连线品质还稳定。
- 保障接收对象的 APNs token 不被外界轻易得知。
PChome IM 的设计是将与 APNs 的连线交给使用者行动装置自己直接与 APNs 建立连线。因此会有以下问题:
- 装置本机端势必有 APNs 连线所需的认证金钥,无论是事先储存或当下下传(这问题更大,还好 PChome IM 设计选择了前者),都比较危险。
- 行动装置本身与 APNs 连接品质视行动装置所处网络连线环境而定。
- APNs token 以明码回传,且存于本机端装置内。
也因此,恶意使用者有机会透过这中间的任何一个环节假造 PChome IM 的推播通知,推送讯息给已经被知道 APNs token 的使用者。一般而言,因为伪造讯息的恶意使用者介在实际受害使用者的两端,因此这样的资讯安全问题又被称做中间人攻击。
▲ PChome IM 准备送出推送需求时的指令,可见以明码向 PChome IM 主机要求。(Source:DevCore 资讯安全顾问 Anfa Sam)
▲ PChome IM 主机在收到上述推送需求后,回给 PChome IM 本机端的资料,其中有被通知者 token 明码的详细字段资讯。(Source:DevCore 资讯安全顾问 Anfa Sam)
由于行动装置的普及,包含手机、平板甚至部分物联网装置、轻型电脑深度应用已经深入到许多寻常百姓家。行动程式设计与资讯安全对人们生活的实际影响,将会越来越剧烈,影响范围与损失可能性也随之升高。无论对一般人或业主而言,这类的行动程式设计常识也将越来越普及。不得不说,笔者与数位时代也借由 PChome IM 程式设计有资讯安全问题的这次机会,再次上了一堂行动程式设计的资讯安全课。
(本文由 数位时代 授权转载;首图来源:PChome)
延伸阅读:
- PChome IM 设计遭爆资讯安全问题
- PChome Online 推即时通讯 IM App,串接 Skype、贴图免费、聊天室人数无上限