在马斯洛的人类需求层次理论里,安全的需要紧跟在生理需要之后,高居第二位。但是在数字世界里,从来都是业务优先,安全靠后的原则,安全成了奢侈品,不仅仅是用户选择将安全延迟满足,软件的开发商们也本能反应地将安全建设放在靠后的位置,因为安全的本质是“成本的对抗”,对于软件开发商来讲,建设安全的堡垒是一场看不见收益的额外付出。
评价一款软件产品的安全性,从来不是软件本身提供的安全功能,而是开发者是否具有安全的能力,以及持有额外付出安全建设成本的意愿。
任何一种软件,其安全风险的暴露面几乎趋同,这里我们将指纹浏览器这类产品做个剖析。
01 一般指纹浏览器产品的架构
市面常见的指纹浏览器,基本如出一辙,皆以下面这样的拓扑结构为主。网络安全相关的风险点,已经在图中标出,主要集中在 1、2、3、4 个位置。这些风险位置,是一个通用型的软件产品都共享的,换句话说即使拿微信这样的应用出来,画出来的最简单的技术拓扑结构也大差不差。
图中标识出的安全风险,与用户被“宣传教育”的安全风险,如指纹安全和纯净的 IP 几乎不相关。不是说指纹和 IP 不重要,而是说真正决定一个软件是否安全可信的最基本的要素,就是厂商在以上 4 点做得如何。至于指纹和 IP 我们再单独拎出来展开介绍。
02 指纹浏览器服务端的安全风险与保障
一款软件的服务端,对终端用户来讲是不可见的,但它才是一款软件的大脑和心脏。保障服务端的安全比什么都重要,还记得今年年初发生的业内一款“指纹浏览器”因为服务端被入侵,最终导致用户超过 470 万美金的资金损失吗?
该指纹浏览器团队,正是因为服务端的安全建设薄弱,从而导致了如此大规模的用户损失。服务端安全建设,是一款软件最基础的要求,但却又极其考验团队的技术能力和企业的安全投入意识,因为服务端的安全建设是一个复杂且持续的过程,需要投入大量的人力、技术和资金资源。研发团队不仅需要具备扎实的技术能力,还需要具备较强的安全意识和应急响应能力。只有通过全面的安全建设,才能有效降低服务端面临的安全风险,保障业务的稳定运行。
2.1 服务端面临的主要安全风险
-
数据泄露:服务端存储了大量用户数据和敏感信息,如用户身份信息、支付信息等。如果服务端安全措施不足,可能导致数据泄露,造成严重的经济和声誉损失。
-
SQL 注入:攻击者通过构造恶意SQL语句,绕过应用程序的安全机制,直接访问或篡改数据库中的数据。
-
跨站脚本攻击(XSS):攻击者通过在网页中注入恶意脚本,窃取用户信息或执行恶意操作。
-
DDoS 攻击:分布式拒绝服务攻击通过大量请求占用服务器资源,导致服务不可用。
-
身份验证和授权漏洞:如果身份验证机制不完善,攻击者可能通过暴力破解、会话劫持等手段获取合法用户的权限。
-
API 滥用:服务端提供的API可能被滥用,导致资源耗尽或数据泄露。
-
配置错误:服务端的安全配置不当,如默认密码、未及时更新的补丁等,可能被攻击者利用。
-
第三方组件漏洞:服务端可能依赖第三方库或组件,这些组件可能存在已知或未知的安全漏洞。
2.2 网络安全建设的投入成本
-
人力成本:需要组建专门的网络安全团队,包括安全工程师、渗透测试员、安全运维人员等。这些人员的薪资和培训成本较高。
-
工具和技术成本:购买和使用安全工具,如防火墙、入侵检测系统、漏洞扫描工具等,这些工具的采购和维护成本较高。
-
基础设施成本:建设安全的网络基础设施,如部署VPN、加密通信、备份系统等,这些基础设施的建设和维护成本较高。
-
持续监控和响应成本:网络安全是一个持续的过程,需要实时监控和快速响应安全事件,这需要投入大量的人力和技术资源。
-
合规成本:如果业务涉及敏感数据,可能需要符合各种法律法规,合规审计和认证的成本较高。
2.3 对研发团队的要求
-
安全意识:研发团队成员需要具备较强的安全意识,理解常见的安全威胁和防御措施。
-
安全开发实践:研发团队需要遵循安全开发实践,如代码审查、安全测试、最小权限原则等。
-
安全培训:定期进行安全培训,确保团队成员了解最新的安全威胁和防御技术。
-
安全工具的使用:熟练使用各种安全工具,如静态代码分析工具、动态分析工具、漏洞扫描工具等。
-
应急响应能力:具备快速响应和处理安全事件的能力,能够及时修复漏洞并恢复服务。
-
合规意识:了解并遵守相关的法律法规和行业标准,确保产品符合合规要求。
03 指纹浏览器控制台的安全风险
为了实现多用户 Profile 的本地模拟,传统指纹浏览器通常采用多进程隔离的技术手段,为每个用户 Profile 启动独立的浏览器进程,确保不同 Profile 之间的数据(如缓存、Cookie、历史记录等)不会相互干扰。同时利用 Electron 框架构建跨平台的桌面应用,支持多用户 Profile 管理。
然而这么做的缺陷是,多用户 Profile 的隔离和模拟会带来较高的资源消耗,不仅增加用户的设备采购成本,还降低了用户使用浏览器的体验,时常会感到卡顿等。
-
控制台安全缺陷
传统指纹浏览器控制台通常使用跨平台兼容性好的框架来建立,如常见的 Electron 框架,该框架由于较低的开发门槛和快速的应用建设便利深受开发者喜爱,但因为其过于灵活和宽松的开发模式,反而给开发者提出了较高的安全要求,在不遵守开发规范和不严格的开发习惯下,容易给软件本身带来较大的安全风险,容易是应用被攻击、逆向和渗透,从而导致用户数据泄露和财产受损。
04 指纹浏览器 Chromium 的安全风险
传统指纹浏览器为每个应用账号单独打开一个浏览器,实质为 Chromium 单独的进程。作为开源的 Chromium,一般的研发团队很难有掌控和深入定制化的能力,更多是在图标 Logo 的替换、界面菜单的定制,以及依赖于开发独立的浏览器插件与 Chromium 结合,从而达到浅层次控制和更改浏览器的目的。
因此一般开发团队难以针对对独立的 Chromium 进行安全控制和保护,容易遭受网络和本地缓存的攻击,从而导致用户信息泄露等风险。
05 本地 Profile 目录风险
指纹浏览器模拟指纹最常见的做法,就是为每个应用账号创建一个本地的用户目录,在启动每个独立浏览器进程的时候,将不同的用户目录与之关联。打开用户目录可以看到,基本常见的浏览器指纹信息都在里面,如字体、cookie、media 信息等,这就是一般指纹浏览器构造不同指纹的方式,而这些信息通常直接被明文存放在电脑目录里,且任何人都可以打开这些目录去任意修改,倘若有员工或者他人恶意去修改这里面的信息,那么就会直接影响每个实际应用账号的指纹信息。
06 如何判断浏览器厂商的安全能力
从上面浏览器指纹构建的方法上来讲,可以看出一般指纹浏览器的所谓指纹安全,其实相互之间并没有差异,甚至几乎和用户自己在本地电脑安装几个浏览器得到的效果是一样的,如果不是需要使用指纹浏览器自动关联 IP 的能力,那么利用通用浏览器的多用户功能也足够了。
因此,指纹的所谓安全性,并不是决定采用哪个浏览器的关键,甚至 IP 也是如此,因为深入调查会发现,各家用的 IP 源头也几乎一致。
那么用户只需遵循一般的判断原则即可,如软件厂商的规模、标杆客户案例、以及研发团队的技术实力水平即可。