勿让API接口成为过度收集和个人信息泄漏的源头
自2019年1月,中央网信办、工信部、公安部、市场监督管理总局四部门联合开展“App违法违规收集使用个人信息专项治理”以来,随着《APP违法违规收集使用个人信息行为认定方法》《个人信息安全规范》等标准规范相继出台完善,App运营者普遍关注和重视App个人信息保护的氛围基本形成,无隐私政策、强制索权、无注销渠道等问题明显改善。关注App安全,一方面要关注App收集使用个人信息流程上的合规,切实保障用户权利,例如App是否有隐私政策,是否在申请权限时进行目的告知,收集个人敏感信息时是否明示告知,是否征得用户同意后收集个人信息,是否可以响应用户的更正、删除等权利等等;另一方面,也要关注App个人信息保护的措施有无落实到位,而要做到这一点,需要App运营者不断“修炼内功”,其实并非易事。
就在近期,Facebook(脸书)再次被曝出由于其API(应用程序接口)可能存在安全漏洞,导致Facebook一个存有2亿余条记录的数据库被公开,有两周时间它可以被任何人访问,其中每条记录包括Facebook用户的ID、姓名以及电话号码等个人信息。无独有偶,新浪微博也被曝出有5.38亿条微博用户信息在暗网出售,其中1.72亿有账号基本信息,包括用户ID、性别、地理位置等。对此,微博方面回应称此次的数据泄漏源于2019年被黑灰产利用通讯录上传接口进行暴力匹配,通过通讯录、手机号反查微博好友昵称的方式,获取大量账号、昵称、账号与手机信息的绑定关系等。此外,检测评估也发现,个别人脸识别、疫情防控等相关的App、小程序等也因为API接口安全措施不足,大量个人信息存在被非授权遍历、进而导致数据被泄露的风险。
一言以概之,API接口安全一旦出现问题,可能导致的不是一两个、几百、几千个人信息的泄露,而是涉及百万、千万、甚至亿级个人信息的数量,这也是黑灰产盗取大量个人信息的常见渠道。而实际情况是,承载数据交互的API接口往往由于其“不可见”的特点,其安全问题易被App运营者忽略。API接口基本原理如何,为何重要?存在哪些安全风险?应采取哪些安全措施?本文将逐一详解。
API的基本原理和应用场景
App已经被大家所熟知,是移动互联网应用程序(Application)的简称,也是应用层软件向手机终端的延伸,是企业业务场景服务线上客户(To C)的主要渠道。而API则是应用程序接口(Application Programming Interface)的简称,其含义比较宽泛,泛指一组定义、程序及协议的集合。本文主要探讨将前端App界面与后端服务器相连接的一类API,其主要以网络通信方式进行交互,此类API通过预先设定的参数维持前端界面与后台服务器之间的数据互通,是当下应用最为广泛的技术解决方案。
API运作的示意图
该类API的主要由通信协议、域名、路径、请求方式、传入参数、响应参数和接口文档等部分组成。常见的API的请求方式通常有GET、POST、PUT和DELETE。而API根据使用的协议和架构的不同也可以分为SOAP(简单对象访问协议)API和RESTful(表述性状态传递)API,其中SOAP API是Web服务安全性内置协议,采用保密和身份验证规则集的方式,支持结构化信息标准促进组织(OASIS)和万维网联盟(W3C)制定的标准,它们结合使用XML加密、XML签名和SAML令牌等方式来验证身份和授权,而REST API支持HTTP以及HTTPS两种传输协议,不需要存储或重新打包数据,因此传输速度比SOAP API协议要快得多。简言之,SOAP API更安全,适合处理敏感数据的机构,但同时也更为笨重;而RESTful API更为轻便,但是安全性能有待加强。
API的出现,使得使用不同编程语言、不同操作系统、不同版本的App与后台服务器的交互,以及App之间的交互更加顺畅。API不仅为App的开发提供了便捷,它也是SDK(Software Development Kit,软件开发工具包)与其后台服务端实现交互功能必不可少的组件。
除App和SDK依赖API外,API自身还能被单独包装成一种服务模式。随着移动互联智能化技术的推进,越来越多的企业将服务封装成数据接口进行开放,供第三方开发者使用,这类API接口通常被称为OpenAPI。OpenAPI由于具有标准化、通用性等优势,不断被运用到“快捷”服务场景,比如开放API银行,互联网开放医院等信息化项目中。
可见,API虽然不为大众所知,但在技术、开发人员眼里则是“必需品”,可以说几乎没有人可以绕过其构建信息系统和App。可以预见,API在今后将继续扮演连接用户前台与后台服务的关键桥梁作用,其类型、性能等还将进一步扩展,应用范围还将进一步扩大。
API带来哪些数据安全风险?
API的出现和广泛使用给快速开发提供前所未有的便利条件,但是这种便利的背后也伴随着不容忽视的风险,常见的API安全风险就包括:
风险一:API接口鉴权失效
调用API其实本质上就是对后端服务的调用,但后端服务并不对所有人开放,除少数API(如提供公开素材下载的网站)外,绝大部分API需要对用户进行鉴权后,再决定是否允许用户调用该服务。鉴权简而言之就是验证用户是否有权访问资源、能访问哪些资源,其通常分成两个环节:先身份验证,后权限控制,两者不可分割。但是,不少API接口由于存在开发、配置缺陷等问题,导致鉴权机制失效。常见的鉴权失效有:用户身份鉴权失效、对象级别的鉴权失效和功能级别的鉴权失效。用户身份鉴权失效通常指用户无需认证令牌,或通过一定方式可以绕过认证环节,使得非法用户入侵后台系统,进而可能导致存储在该系统内的个人信息泄漏。对象级别的鉴权失效即为水平越权,指的是用户只需更改API路径(End Point)即可实现对请求中的对象ID所属的敏感数据进行未授权访问的情况,例如,通过修改薪资系统API接口参数中的员工号,即可了解其他员工的薪资待遇水平。功能级别的鉴权失效即为垂直越权,指的是通过更改API接口中关于层级、群组或角色的参数,即可实现对不同层级、群组或角色可访问的敏感信息的未授权访问,例如,恶意人员可将普通用户名篡改为管理员用户名,即可访问所有原本仅系统管理员才能查看的敏感信息。
风险二:敏感信息展示不当
敏感信息脱敏展示机制通常用于保护用户敏感信息不被其他未授权人员访问,以避免用户权益受损。敏感信息脱敏展示机制失效通常有三种情况:未脱敏、伪脱敏、脱敏策略不一致。未脱敏指的是敏感信息没有经过脱敏展示即通过API接口从前端界面进行展示,例如直接在客户端应用的界面展示个人姓名、手机号码和身份证等信息。伪脱敏指的是敏感信息仅在前端展示界面脱敏,未在服务器后端进行脱敏,一旦流量被截获,则可能造成敏感信息泄漏。脱敏策略不一致指的是对同一类敏感信息,未采取一致的脱敏策略,导致将同一条信息不同的未脱敏部分进行组合后仍可得到未脱敏的数据,例如A界面展示王五的手机号为123***789,而B界面展示王五的手机号为123456***,则进行组合后可以得到王五的完整手机号123456789。
风险三:过量数据暴露风险
该风险指的是API接口在接收到参数请求时,后台服务器未做筛选,便将大量数据返回至前端,仅依赖客户端对数据数量及类型进行选择性展示,但此时数据,尤其是敏感数据,可能已经全部在前端界面进行缓存,访问者查看前端即可获取大量数据。例如,王五在前端界面提交了访问A部门所有员工电话号码的请求,但是后端服务器却除了返回了A部门所有员工的电话号码,还返回了身份证号码、家庭住址等个人敏感信息,造成个人信息的过度收集和敏感信息的暴露。同理,在通过数据接口间接收集个人信息时,如果配置不当,将可能导致大量无关个人信息被过度收集。
风险四:第三方通过API违规留存数据
当下社会分工逐渐细化,企业开放很多不同的API接口给第三方合作伙伴已成常态,从而支持数据处理、资源共享等操作。但是,若双方未约定,或第三方未按照约定,则可能存在第三方通过频繁访问合作接口,私自过量缓存、获取数据资源的行为,当留存的数据资源达到一定程度,则效果上等同于“拖库”。前段时间曝光的某征信企业非法倒卖个人信息案件中,其便是利用上游企业接口非法缓存公民个人信息,累计缓存公民姓名、身份证号码和身份证照片一亿多条,供下游企业牟利,造成严重公民个人信息泄漏。
思考与建议
如上述风险分析过程可见,对于用户的个人信息保护,API安全极其关键,App运营者应当引起高度重视。一旦在API安全问题上采取措施不力,造成大量个人信息泄露,可能涉嫌违反《网络安全法》第四十二条“网络运营者应当采取技术措施和其他必要措施,确保其收集的个人信息安全,防止信息泄露、毁损、丢失。”App运营者不仅应关注API安全,还需梳理API接口清单、API接口设计脆弱性,加强API全生命周期(上线、变更和下线)管理,监测API使用过程的数据安全风险,真正付诸于实际行动,让个人信息“采之以理、用之以道、存之以安”。具体有以下建议供参考:
一是加强API技术安全防护能力
虽然API存在安全风险,若采取恰当的技术防护手段,则可以有效的把风险控制在可接受范围内。组织应将API安全纳入安全防护体系中,在应用系统各个环节与其他技术手段协同以达到加强API安全的目标。以加强API鉴权机制为例,在身份验证环节,组织应排查无需认证的API清单,定位弱密码API,加强密码强度并强制定期更换密码,或建立多因素认证,可设立黑名单机制,将多次访问失败的IP纳入黑名单,拒绝其访问,有效减少非法访问风险;在授权管理环节,组织可使用采用RBAC(角色授权)、ABAC(属性授权)等多种不同细粒度权限管理结合资源访问时环境因子(如UA头、refer、token)认证等技术减少未授权访问关键数据资源,同时配置资源访问流量控制,访问次数限制和日志监测分析技术等防护手段,进一步强化安全屏障。
二是建立API安全长效风险管控机制
只要API一直在启用,即使合法用户或第三方仍可能存在滥用自身权限,频繁访问、修改、下载、留存敏感数据的风险,因此,组织应建立API安全长效管理机制,该机制不仅应具备长期监测、发现和预警来自组织内部和外部的非授权、滥用API安全风险的能力,更应该具备在发生数据安全泄漏事件时快速定位泄漏源头,有效控制数据泄露负面影响的能力。只有建立了长效风险管控机制,才能真正保障组织业务稳定运营和公民个人信息安全。
结语
必须明确的是,API安全是App安全不可缺少的一部分,没有足够安全的数据接口,再完善的“隐私政策”,再充分的用户权利保障,都将因为数据的泄露让所有努力付之东流。API为每一位用户、App运营者搭建着无数座供数据快速通行的“无形桥梁”,如何切实保障这些桥梁足够安全、足够可靠,是当下持续深入开展治理、精准施策的“痛点”,也是组织切实提升个人信息安全能力水平的“刚需”。