发现个数据安全漏洞差点让极客时间后端开发提桶跑路

梦康 2021-11-10 00:00:00 1112

使用过极客时间笔记功能的同学注意了,你的手机号有可能已经被灰产收走了
经过沟通已经修复,我才发出来这个帖子,但是很多不法分子估计早用这个漏洞捞了不少手机号跑了。我自己也用过很多次笔记功能。

事情的经过

我在复习之前买的课,发现有人做了笔记,我就点了进去,感觉功能做的挺好的,想看下怎么实现的,就打开控制台看了下,好家伙,直接把所有做笔记的用户的信息都返回回来了,如下图

手机号直接明文返回来了,直呼好家伙。我也第一时间反馈给理他们公众号的运营人员。第一时间没人搭理我,也不知道他们接不接受安全信息的反馈,我就反馈给迟建强老板的公众号了
发现个数据安全漏洞差点让极客时间后端开发提桶跑路

现在信息安全法律法规越来越严格,以后这样的漏洞,如果工信部发现,估计不仅企业自查自纠的事,估计还会涉及停业整改。不是说极客时间做的不好,极客时间的产品打磨得非常棒了(不然我也不会一直付费),整个互联网软件工程现在还出在开荒阶段,离工业工程还相差甚远。

扯远了,发现问题很简单,怎么避免很困难。

主动限制

对于上面发生的事情,我估计是应用层在调用服务层封装的用户对象接口的时候,将系统内部查询到的用户对象没有进行二次处理,而直接返回给了前端。
思路1 应用层在以 http json 接口输出的时候,严格来说是要对用户对象做一次对象转换的,即使都是 DTO 对象,但是使用的受众不一样。道理大家都懂,开发的时候都想偷懒,即使硬性规定或者增加代码扫描,不排除大家直接 ctrl+c 然后 ctrl+v ,为了应付规定,漏洞依旧在。
思路2 对应高度敏感的数据,通用的用户信息查询接口不返回用户的敏感信息,需要手机号、身份证号码、地址等,需要单独调用且需要单独鉴权认证,对上层调用量做总量和 qps 的限制。

我没做过账号中心,还有啥思路各位老铁?

自动检测

可以借助安全扫描的工具进行接口数据的扫描,其实99%的接口输出数据的日志记录还不至于成为性能的瓶颈,大点的企业可以在网关层做,小点的企业可以在单机上 nginx 插件,或者应用日志里直接记录都行,然后统一进行日志收集,然后对日志进行查询。以手机号为例,手机号的正则还是比较简单的,发现接口返回的数据中有手机号就报警,当然报警规则里可以排除掉某些特定的 api 接口输出。这个大家使用阿里云 sls ,搞这个很方便,报警支持短信、钉钉等。

这里只是说到了数据安全,应用系统安全,可以接入一些 waf 云产品,还有日常的一些攻防演练。

最后

跑路笔记,心血来潮偶尔更新,看别人跑路,避免自己跑路。