你以为只是记帐?小心App的个资安全!

浏览量143 点赞418 2020-06-18
你以为只是记帐?小心App的个资安全!
你以为只是记帐?小心App的个资安全!

几天前,一则标题叫做「" 不用上班" 他每月被动收入就超过 30 万」的耸动文章引起了广大的迴响,资深一点的网路读者大概都读得出这是一则以记帐为成功之本的概念去深化记帐有多重要,进而推广某个特定记帐 APP 的文章。随后神人陆续被网友、财经部落客和媒体迅速起底。

一般人的反应大概仅只于:「喔!原来直销才是赚钱的主力。」或就认为这是一个推销某记帐 APP 的业配新闻,可以不用太在意。这里我们不讨论直销部分,要讨论的是更跟你切身相关的问题: 隐藏在 APP 里面,所有你的使用模式及财务记录到底安不安全?

实际上记帐 APP 的开发难度不高,几乎是 Android 系统入门的 APP 等级,许多新手工程师也都会写这种 APP 来练手,App Store 中的记帐 APP 也不乏其数,何以要特别製作一个很普通的记帐 APP 然后又花资源去特别推广一个很普通的记帐 APP?

较有规格的公司一般都会建有客户管理系统,为的就是从客户的消费型态上做出更精準的分析,以利于后续的客户服务及刺激客户持续消费,也能把资料拿来在异业间做广告或是其他合作。举例来说:很多银行就是从分析客户的刷卡消费纪录之后,再决定要向客户推销什幺商品。

这款特定的 APP 主要目的应该就是收集使用者日常的所有消费,连银行无法收集到的资料这个 APP 都能掌握,小额消费可能是你每天喝一杯手摇茶或咖啡、吃一块鸡排,大额消费可能是用现金买了珠宝、钻戒、手錶或是一台汽车没有贷款. 诸如此类使用现金金流又没有留下可以追蹤痕迹的消费,甚至连消费时间、发票跟店家所在位置都可完整被记录下来了。某个程度上来说,这个 APP 做到了破坏式创新:没有发行信用卡,却掌握了更详细的消费纪录。长久累积下来,如果使用者人数和纪录的消费资讯够多,在商业上的价值不言可喻。

身为一个工程师,也不会对这种商业模式太感兴趣,有兴趣的是这个 APP 是怎幺开发、怎幺纪录资讯的?但稍微看了一下之后,却发现这个 APP 在资讯处理上很不安全。解析这款记帐 APP 的 API 之后,发现居然连传送帐号、密码都使用明码,也没有 SSL 机制,没有加密、没有保护,什幺都没有!

这很重要吗?当然很重要!当然很重要!当然很重要!所以一定要说三次,没有保护机制,你跟在网路上裸奔没有两样,除了系统管理者可以拿到这些资料外,如果中途被拦截,不只你个人的财务状况是赤裸裸摊在别人眼中的,连你的生活轨迹都会被知道,这可怕吗?也许一般人不知道可怕的地步到什幺程度,下面会有简单说明。

以诈骗方式来说,绑票诈骗、中奖诈骗、分期诈骗. 族繁不及备载,一般人只知道诈骗集团很厉害、很可恶、很会骗,但为何诈骗集团可以一再得逞?那是因为诈骗集团也是有在做功课,好好分析各种资讯!譬如说,诈骗集团拿到一份国中小家长电话,要进行哪种诈骗手段?当然是先做假绑票诈骗,因为知道有小孩读什幺学校,可能连小孩手机号码都有基本资料都有了,难道你会对这份名单做假讨债公司的断手脚式诈骗吗?「喂,陈先生?你儿子跟我们借了 20 万还不出来,你不帮他的话我们要断手断脚了.」「神经病!我儿子才读国小。」。同理,当我取得这份资料时,发现有人很喜欢网路购物,当然先进行网路交易错误的假分期式诈骗。

然后归纳诈骗得逞的经验,可以得出如何再次成功的模式,比如说经过 A 模式诈骗的受害者,其实很容易再次进行同样 A 模式的诈骗,或是经历过 A 模式的受害者,比较容易进行 B 模式诈骗。跟行销的再行销有异曲同工之妙,曾经被骗成功的人,诈骗集团特别喜欢紧紧跟着。在美国着名的玛丽亚‧杜瓦邮件诈骗案中已经证明诈骗受害者名单确实较其他随机名单更容易受诈骗。

经过上面的简单说明,一个不设防看起来也没什幺大不了的记帐 APP,可能衍生的问题跟可以造成多严重的后果,相信很清楚了吧?其实真正要监理这种 Fintech 的产品或服务,不是禁止他们,而是去检验他们有没有做到最基本的资讯安全。最后,以下为此款 APP 的串接解析:

1. 登入
你以为只是记帐?小心App的个资安全!

其中我马赛克的部分是我的电话跟密码。对!你没看错,就是我的电话同时也是帐号,以及我的密码,都是用明码直接传输,前面是 http 而不是 https,这就代表任何讯息所经过的路由器,都可以知道我的帐号和密码,当然还有 Open ID 的登入方式,也就是用 Facebook 或 Google 帐号登入,这边理论上就不会有帐密曝光的问题。

不过如前面所讲的,没使用 SSL 加密,因此后面伺服器回传的资料就一样是公开的,就如下面的资料所示:

你以为只是记帐?小心App的个资安全!
你以为只是记帐?小心App的个资安全!

这边身为工程师的我搞不懂的是,何必又把密码用明文回传给使用者。先别说这个,其实看整个 data 的 key 命名,就能够知道这个 APP 想要记录起来的资讯有多少,我们可以在 APP 使用时发现这个 APP 会希望你把这些资料填满。

2. 收入/支出

这边我也只放回传资料格式,毕竟我不想再加其他的资料上去了,我们只要看记录了什幺上去就好,data0 是我随便 key 的收入资料,data1 是我拿昨天下午买的矿泉水发票扫瞄,这边的传输依然是用 http 而未加上 SSL,就不赘述了。

你以为只是记帐?小心App的个资安全!
先来看看收入部分记录了些甚幺资料:
你以为只是记帐?小心App的个资安全!

不意外的纪录了收入登入的日期、实际发生日期、修改日期,这边记录方式是採 timestamp,比较有趣的是 lon、lat 两个栏位,也就是把纪录这笔收入时,我所在的经纬度也写进伺服器,这是跟我收入完全无关的纪录。

支出部分:
你以为只是记帐?小心App的个资安全!
你以为只是记帐?小心App的个资安全!

以扫瞄发票的支出情况下,格式分为消费店家跟消费细项,消费店家上可以看到店家所在的经纬度、店家名称以及发票号码与我的当次消费金额,其他的分类 key 因为不清楚代码就不臆测,消费品项部分就是买了什幺、买几件、各多少钱。在支出这个部分倒是没甚幺太大问题,看起来没甚幺不该记的东西,不像是收入还纪录了经纬度。

APP 的串接解析就先做到这边,其实也没什幺兴趣继续写下去了。就以一个工程师的角度来看,光帐号、密码竟然还以明码传送,我就不会使用这个 APP 了。 至于这个免费的记帐 APP 拿到使用者的资料之后,衍生什幺商业模式,在这边也不臆测。天底下没有白吃的午餐,被骗的人再度被骗的机率会特别高,这是要提醒大家的。