API技术广泛使用的同时,带来的安全问题也愈加突出,从不断出现的与API安全相关的安全事件中,来探讨一下API安全的现状。
从API的发展过程可以了解到,API安全问题一直伴随着API技术的发展在不断变化。可以用一句话来概括API安全的定义:API安全是从安全的角度关注API领域的安全问题和这些问题的解决方案,从技术和管理两个层面提高API自身和API周边生态的安全性。
本书谈论的API实际是以现代API为主,其关注的安全领域与传统的Web安全比较接近,但又不同于Web安全,属于IT领域中技术细分的交叉地带。传统Web安全更多的是关注Web应用程序的安全性,以服务器端应用程序安全为主,其漏洞表现形式主要为SQL注入、XSS、CSRF等。而API安全是在API技术被广泛使用后,攻击面不断扩大的情况下带来的安全管理问题和安全技术问题,它面临的外部环境比传统的Web安全更为复杂,通常内部包含API服务及其运行环境(与传统Web安全相似),外部包含API客户端应用程序、IoT设备、监管政策以及第三方合作厂商运作支持等,是API经济背景下各个方面安全能力的总集。API安全包含的内容如图2-1所示。
图23-1 从网络安全、Web应用安全、安全开发、监管合规43个主要方面重点描述了API安全关注的核心内容 。在网络层面,API安全主要 关注客户端应用程序与API服务器端之间的通信安全 ;在Web应用层面,重点 关注API客户端应用与API服务器端之间的协议规范 、常见的 API漏洞 类型以及如何通过 API安全设计 规避这些安全问题;在安全开发层面,从 API生命周期 的角度,结合SDL或DevSecOps模型来综合管理API开发过程的安全性;在监管合规层面,需要结合法律法规和行业监管要求,考虑 API数据隐私保护和合规性设计 。
●图2-1 API安全在多个安全细分领域的交叉内容
既然API安全问题由来已久,那么API安全的真实情况到底如何?不妨先来看一看2020年初的几起数据泄露事件。
2020年33月底,多家网络媒体爆料,某社交平台数据疑似大规模泄露,涉及53亿多用户,随后社交平台的安全专员回复是在23018年底,有黑客通过手机通讯录接口,伪造本地通讯录来获得手机号与平台用户的关联,从而“薅走了一些数据”。针对此次API安全问题,平台已及时加强了安全策略,并在不断强化。除了某社交平台之外,很多社交App都有通过通讯录匹配好友的功能。2019年11月,Twitter就出现过利用通讯录匹配功能获得百万推特用户账号和手机号的数据泄露事件,随后Facebook关闭了这一功能。而到了2020年4月初,视频会议服务厂商Zoom又被爆出发现多项安全漏洞,其中包含Facebook Graph API滥用导致隐私数据泄露问题。
除了这些安全事件外,近期的境外媒体报道的API安全事件还有如下几件。
4月2日,GitLab API问题导致私有项目的名称空间泄露。
4月93日,WordPress插件Rank Math爆出严重的API安全漏洞,借此漏洞可以直接修改users表信息。
4月16日,网媒报道findadoctor.com网站因API安全问题,导致美国140万名医生信息泄露。
从如此密集的安全事件都与API相关,大致可以判断出API安全问题普遍存在,甚至还比较严重。那么,到底导致API安全问题发生的原因有哪些呢?
1.企业API安全意识不足
从攻击视角来看,当越来越多的企业使用API对外部开放其业务能力,意图共建生态时,这种新型的攻击面是充满诱惑和不可舍弃的蛋糕。面对众多开放的API,恶意攻击者往往通过并不复杂的恶意行为,即可给企业造成重大的危害。发生过安全事件的企业因为造成损失会增加对API的重视度,但未遭受影响的企业,仍缺乏对API的关注。在API测试环节,很多团队要么不知道API漏洞,要么直接忽略了API安全测试;而在API服务发布后,API提供者、API赞助商以及第三方API使用厂商也在此领域缺少精力投入。这些情况导致API生态中各相关利益方(如API提供者、API赞助商、第三方API使用厂商等)责任不清、监督失效,API安全处于无人管理的状态。
2.技术革新导致API安全风险增加
由于云计算的快速发展,越来越多的企业将应用和数据迁移至云端,并暴露核心业务能力和流程相关的API为外部合作伙伴提供服务。脱离了传统的内网或网络区域划分,云上应用的开发和集成、云端管理API,被潜在的商业合作伙伴及攻击者使用,无形中使得API安全风险增大。而大多数企业,没有人能完全掌握系统全部API,开发人员往往也只是熟悉自己开发的相关模块,且很多技术开发人员认为采纳新的、酷的技术更重要,在技术路线上选择新的特性,忽视API是否被攻击。在这种缺少API安全性管理平台又未建立全面系统的API安全管理体系的情况下,API安全风险更不可控。
3.API自身安全机制不足
企业将数据和能力通过API对外开放获取商机和便利的同时,也为攻击者攻击提供了通道。为了达到目的,攻击者通过多种手段渗透API,比如流量型的DDoS攻击、CC攻击;绕过身份鉴别或授权,非法获取数据;逆向破解API客户端应用后,非法调用API服务。而因API服务提供方、API开发团队、第三方合作伙伴等多方面原因,API自身的安全机制存在缺陷,比如缺少身份鉴别或授权访问控制、缺少对敏感数据的加密保护或异常检测手段、缺少对API资产的生命周期管理,导致很多低版本的影子API。在这些情况下,攻防对抗中API自身安全能力不足将成为短板,无法应对攻击者发起的恶意行为,反而易成为突破口。
API安全事件频发,其外因是存在恶意攻击行为。而作为使用API的企业,在API生态中把API当成基础设施的一部分,却缺少清晰的API保护方针和策略,无法提供高质量的API安全服务能力,也是导致API安全事件的原因。了解了这些原因,若想彻底解决API安全问题,仍需要面临多方面的挑战。
1.API广泛使用带来攻击面扩大的挑战
API技术的产生是为了解决不同组件或模块之间的标准化通信交互问题,随着互联网上业务种类的不断增加,出现了以API为中心的API经济生态。在这个生态系统内,API能力提供者作为平台能力支撑方和运营者,通过API的形式对外开放业务能力,吸引第三方厂商或合作伙伴加入此生态系统。开放的业务能力越多,API暴露的攻击面就越大;参与生态构建的第三方厂商越大,API使用范围越广泛,API暴露的攻击面也就越大。从企业运营者的角度来说,是期望更多的第三方厂商加入生态构建,从风险暴露的角度来说,越收敛则攻击面越小。在这种业务期望快速发展,安全诉求越来越高的背景下,想解决API安全问题,必须综合管理和技术手段,从网络治理、服务治理、API治理、IT治理等角度去寻找业务发展和安全保障的最佳平衡点,尤其是对平台型企业来说,如果内部IT治理水平较低,将面临巨大的挑战。
2.API安全实践经验缺失的挑战
对于使用API技术的企业来说,使用某项技术是为了解决某些问题,以期望得到更高效的业务能力,但因技术人员对使用某项技术带来安全风险往往理解不够深刻。尤其是在当前互联网业务竞争十分激烈,版本更新迭代非常频繁的情况下,应付API功能的开发已经很疲惫,加上团队内部或企业内部缺少安全经验丰富的人员来对研发过程进行监督或指导,导致开发出来的API存在安全缺陷。而企业缺少API开发过程中的相关工具、平台以及保障机制,更无法从组织层面指导API安全实践的开展。
3.外部环境变化带来的合规性挑战
近几年,随着国家层面网络空间治理的不断深入,满足合规性要求成为每一个企业正常业务开展的必要条件。在我国,国家标准和行业标准层面,对API使用提出了多方面的安全要求。比如在关于个人信息安全的国家推荐性标准GB/T 35273-2020《信息安全技术 个人信息安全规范》中,对于使用API收集个人敏感信息且未单独向个人信息主体征得收集、使用个人信息的授权同意时有如下要求。
当个人信息控制者与第三方为共同个人信息控制者时(例如,服务平台与平台上的签约商家),个人信息控制者应通过合同等形式与第三方共同确定应满足的个人信息安全要求,以及在个人信息安全方面自身和第三方应分别承担的责任和义务,并向个人信息主体明确告知。
在规范中,要求API服务提供者在涉及个人信息收集时,需要征得用户同意并明确确认授权的情况下才可以进行信息采集。而作为被第三方集成的API服务提供方,如果涉及个人信息收集时,需要双方约定分别承担的责任和义务,并明确告知用户。除了此规范外,金融行业标准JR/T 0185-2020《商业银行应用程序接口安全管理规范》中,更是从API类型与安全设计、开发、部署、集成、运维等生命周期角度,对API的管理提出多方面的合规性要求。
这些标准或规范为企业的API安全实践提供方向性指引,同时也为API的合规提供可落地标准。企业完成了此类合规的挑战,才能更好地开展业务。