鲤鱼ace安全漏洞
2023年11月,鲤鱼鲤鱼ace官方论坛上一条帖子被悄悄顶了上来。全漏发帖人叫“渔舟唱晚”,鲤鱼他贴了一张截图:在鲤鱼ace的全漏“附近的人”功能里,自己明明关闭了位置权限,鲤鱼但用抓包工具一看,全漏App每30秒就往服务器发一次经纬度。鲤鱼精度到小数点后六位,全漏比GPS还狠。鲤鱼帖子活了不到两小时就被删了,全漏但截图已经传开。鲤鱼 这事有意思的全漏地方在于,鲤鱼ace不是鲤鱼小作坊产品。它背后是全漏家估值过百亿的社交公司,日活三千万。鲤鱼安全团队少说几十号人,每年渗透测试预算七位数。可偏偏就在最基础的隐私开关上,玩了一手“明修栈道,暗度陈仓”。用户以为关了,代码层面根本没关。这种设计不是疏忽,是故意的。 我后来托朋友拿到一份鲤鱼ace 6.2.1版本的逆向分析报告。报告里写得很直白:位置权限的开关变量叫 更绝的是上传逻辑。它不走常规的HTTPS接口,而是混在心跳包的数据段里。心跳包每30秒发一次,内容是加密的二进制流。安全审计的人一看,哦,心跳保活,正常。谁没事去解密心跳包?可位置信息就塞在里面。这种手法在安全圈叫“隐写通道”,不算新鲜,但用在用户隐私上,性质就变了。 有人可能会说,不就是个位置嘛,至于吗?至于。鲤鱼ace的“附近的人”能精确到50米范围。你关了权限,它还在传,意味着你半夜在家刷手机,服务器知道你在哪栋楼。连续传一周,你的作息规律、常去地点、甚至公司地址全暴露。这些数据一旦泄露或者被内部人员滥用,后果不是一句“技术失误”能兜住的。 我翻了下鲤鱼ace的隐私政策,第4.2条写着“您可以选择关闭位置权限,我们将停止收集您的精确位置信息”。白纸黑字,明明白白。可代码里干的完全是另一回事。这种条款和实现之间的割裂,在互联网公司里不算罕见,但大多数是“忘了改”或者“历史遗留”。鲤鱼ace这个,两个变量名故意起得这么像,心跳包封装又这么刻意,说是无心之失,我不信。 事后鲤鱼ace发了个声明,说这是“旧版本遗留的兼容性问题”,新版本已经修复。可修复的方式是删掉了 这事给我最大的感受是:隐私开关这东西,用户看到的永远只是界面。真正决定数据去哪的,是你看不见的那几行代码。鲤鱼ace不是第一个这么干的,也不会是最后一个。但每次被揪出来,都该有人记住——那个关不掉的开关,背后可能藏着一整条数据流水线。isLocationAllowed,默认值是true。用户点击关闭,这个变量变成false。但真正决定是否上传位置的那个判断条件,读的是另一个变量isLocationEnabled。这个变量从App启动到退出,始终是true。两个变量名字像双胞胎,功能却南辕北辙。开发人员要是没点较真劲儿,根本发现不了。isLocationAllowed这个变量,只留isLocationEnabled。用户界面上那个开关,现在直接控制上传逻辑了。看起来是改好了。但那个心跳包通道还在,只是暂时没塞位置数据。哪天产品经理一拍脑袋要搞“用户活跃度分析”,再塞点别的东西进去,谁拦得住?
-
上一篇
-
下一篇