(一) API防护缺失已成数据安全最大风险敞口
根据 Imvision 发布的《Enterprise API Security Survey》报告中,80%的企业通过外部 API提供数据访问,企业利用的 API多种 多样,其中内部 API 的使用最普遍,即组织的开发人员内部使用的 API(71%的公司采取这种方式)。其次,B2B的外部 API(组织为其 业务合作伙伴开放的私有 API)占 63%,B2C的外部 API(消费者通过 移动应用程序使用的私有 API)占 53%。一般来说,80%的组织允许合 作伙伴(B2B)或用户(B2C)通过外部 API访问其数据。
———数据来自 Imvision:《Enterprise API Security Survey》报告
在国内,随着 5G、云计算、物联网的快速发展,加速了 API在各 领域的应用,目前已经在物联网、微服务、云原生等场景都得到了非 常广阔的应用。随着 5G、物联网技术落地,人类正进入万物互联时代, 从 IaaS 到 PaaS、SaaS,从 PC到移动 APP、各种 IoT 设备,API将无 处不在。
根据 Akamai的一项统计,API请求已占所有应用请求的 83%,预计 2024 年 API 请求命中数将达到 42 万亿次,但 API 安全威胁却比 API 调用增长更迅猛。API 安全公司 Salt Security 发布的《State of API Security Report, Q3 2021》报告指出,针对应用程序编程 接口的攻击流量正在以普通 API流量的三倍速度增长。报告发现,安 全问题在 API项目关注的名单中名列前茅,很少有受访者认为他们有 信心识别和阻止 API攻击。
随着 API在各种应用场景的广泛,近两年来因 API安全问题导致 的数据泄漏事件频频发生。国外,2021 年 4 月,Facebook 平台上的 5 亿用户数据泄漏,涉及信息包括用户昵称、邮箱、电话、家庭住址 等信息,事后判定为某在线业务的 API遭到误用,导致数据泄漏;国 内,2021 年 6 月,著名社交平台 LinkedIn(领英),有超过 7 亿用 户数据在暗网被出售,涉及用户的全名、性别、邮件以及电话号码、 工作职业等相关个人信息。据悉,部分数据也是通过 API 泄漏获取。 层出不穷的数据泄漏事件也给数字化转型中的企业带来巨大风险和 巨额损失的可能性。据 IBM 《数据泄漏成本报告》统计,数据泄漏的 平均成本为 386 万美元;涉及超过 5000 万条消费者记录时,补救成 本可能高达 3.92 亿美元。
API承载了应用各组件间数据的流动,成为数据交互最重要的传 输方式之一,也因此成为攻击者窃取数据的重点攻击对象。与此同时, 由于 API防护的缺失,组织对外暴露了哪些 API、对谁开放、API通 信中携带了哪些敏感数据、对方如何使用这些数据等问题都未得到应 有的重视。攻击者可以通过后端业务系统漏洞、接口暴露、安全配置 缺陷等直接攻击 API进行数据窃取,还可以利用 API的参数组合及各 参数值类型相对固定进行注入类攻击或通过参数与用户身份进行关 联进行越权类攻击。面对 API 安全威胁不断复杂化、多样化的趋势, 政府与企业等的数字化系统正在面临来自多方面严峻的安全挑战。
(二) API安全面临的主要安全问题
- 缺乏可见性
- API资产不可见
对企业内外已上线的 API 未做好全面的资产统计工作,导致企业 对 API 进行安全测评时遗漏了部分资产或长期未对相关应用进行维 护。一旦某类 API框架型漏洞爆发或被黑客入侵时无法及时定位到相 关应用节点,将错过最佳的应急响应时间。
- API访问行为不可见
高频访问行为:API接口在设计之初未对 API接口访问频率做限 制,使部分用户在短时间内可以访问大量 API接口,造成 API接口访 问频率过高,容易引起 API接口不稳定等风险。此外,当访问 API接 口时,API 接口数据缓存在浏览器中,容易造成大量敏感数据泄漏。
大量数据下载行为:API 接口未对用户某个时段内的下载次数、 下载内容大小等做限制,导致用户可以通过多次下载达到获取大量数 据的目的,容易造成大量敏感数据泄漏、隐私数据被贩卖等危险。
网络爬虫行为:如果将 API接口开放到公网上,且未设置反爬虫 机制,则攻击者可以使用假 IP 或修改 User-Agent 请求头隐匿身份, 通过信息收集获取企业内部系统账号,利用网络爬虫爬取账号权限以 及开放在公网上所有的 API接口数据,导致大量数据泄漏。
- 攻击面增加
随着云计算技术的广泛应用,越来越多的 SaaS 被迁移上云,在 为更多的用户提供服务的同时,也将 API暴露到云上。相较于传统数 据中心的单点调用,东西向和南北向都可能成为 API的攻击面。
单体应用的场景下,入口点只有一个,所有的请求都会从这个入
口点进来,在这个入口点去建立一组访问控制或者安全防护点,就可 以控制所有的风险。而在微服务场景下,业务逻辑不是在一个单一的 进程里,而是分散在很多进程里。每一个进程都有自己的入口点,导 致需要防范的攻击面比原来大得多。
- 缺少身份认证引入的攻击面
某些 API 在设计之初由于未充分考虑用户群体或者具体的使用 场景而未进行身份认证。身份认证的缺失导致相关 API 可被任意访 问,若相关 API涉及敏感数据则会埋下严重的数据泄漏的隐患。
- 输入参数未校验引入的攻击面
API 的参数组合及各参数值类型相对固定,这些参数也决定着 API返回的数据。若 API未对参数值的类型进行校验则可能会被攻击 者利用来进行注入类攻击;若攻击者未将参数与用户身份进行关联则 可能会导致越权类攻击。
- 明文传输引入的攻击面
API未对传输数据进行加密设计而直接进行明文传输,攻击者可 通过网络嗅探等手段直接获取 API的交互格式以及数据,通过对获取 的数据进行分析,并进行下一步的攻击。
- 权限设计不合理引入的攻击面 水平越权,由于服务端在接收到客户端请求数据后进行操作时没
有判断数据的所属对象,致使用户 A可以访问到属于同一角色的用户 B的数据。
垂直越权,由于服务端没有设置权限控制或权限控制存在缺陷,
导致恶意用户只要猜测到管理页面的 URL地址或者某些用于标识用 户角色的参数信息等,就可以访问或控制其他角色拥有的数据,达到 权限提升的目的。
数据权限,某些 API在设计时为兼容多个功能会将过多的数据杂 糅到一起返回至前端,然后由前端去筛选相关的数据。这导致 API返 回过多的数据,攻击者可通过流量拦截等手段获取 API原始返回的数 据,从而存在数据泄漏的隐患。
- 安全配置缺陷引入的攻击面 安全配置缺陷是最常见的安全问题,这通常是由于不安全的默认
配置、不完整的临时配置、开源云存储等,例如,错误的 HTTP标头 配置以及包含敏感信息的详细错误信息等问题所造成的。
- 代码漏洞引入的攻击面 缺乏统一规范、开发维护不当导致的安全漏洞等脆弱性因素可能
为 API带来严重安全隐患。不法分子可通过安全漏洞、恶性 Bug 等因 素获取敏感信息、造成服务器失陷。
- 使用易受攻击和过时的组件引入的攻击面 开发过程中引入开源或第三方插件、加载库、模块、框架等,引
用的开源软件或模块存在安全问题时,势必会导致代码中的漏洞、恶 意代码、“后门”等安全隐患被引入至 API接口中。
- 多种攻击隐患
- 利用漏洞攻击 服务请求伪造:恶意攻击者可以利用该类型漏洞对服务所在内
网环境进行探测、攻击内网/外网中的其他应用以及读取服务器中的 敏感信息等。
注入:该类型漏洞通常可以分为 SQL注入、代码注入以及命令 注入等,这种类型的漏洞危害性极高,可能导致的后果包括但不限于 敏感信息泄漏、服务器沦陷,一旦被利用给企业带来的损失无可估量。
安全配置错误:配置错误可以发生在一个应用的任何层面,包括 平台、Web 服务器、数据库、容器等。比如应用报错信息未处理直接 返回给调用端导致敏感信息泄漏。
认证和授权失败:用户的身份验证、身份管理和会话管理失败, 会产生与身份验证相关的攻击,例如:使用弱或无效的凭据恢复和 忘记密码流程、使用纯文本、加密或弱散列密码、用户会话或身份 验证令牌在注销或一段时间不活动期间未正确失效。
失效的访问控制:访问控制执行策略失效,可以使用户在其预 期权限之外进行功能操作或数据访问。策略失效通常会导致未经授 权的信息泄漏、修改或破坏所有数据或执行超出用户限制的业务功 能。例如:特权提升、强制以未经身份验证的用户身份浏览经过身 份验证的页面或以标准用户身份浏览特权页面。
加密失效:可能导致用户凭证未加密传输或密文容易被破解,例 如传输层没有使用 TLS加密导致嗅探、中间人劫持攻击。
未授权漏洞:一般是由于认证机制存在漏洞导致身份认证过程 被绕过或将特权接口对外网开放以及默认开放的 API未及时关闭等, 例如: Kubernetes 的 8080 端口、Docker 的 2375 端口的未授权访问等。
- 其他攻击手段 缺省口令:业务系统上线时,使用了厂商的缺省口令,且将业
务系统对外暴露,导致攻击者使用缺省的口令,直接登录业务系统 进行任何操作。
弱口令:弱口令存在被暴力破解、撞库、社会工程学攻击等风 险。例如:在某些业务系统中,口令设置长度较低、复杂度不足(数 字、大小写字母、特殊字符等)即为弱口令,
可用性攻击:API 接口未对用户或者访问 IP 进行速率限制时, 攻击者可持续高频地使用多个虚假用户或者 IP 对 API 进行访问, 从而严重消耗服务器资源,导致其他正常用户无法访问相关接口。
- 敏感数据泄漏
敏感信息泄漏:在实现 API接口时,未对 API接口返回数据进 行前后端脱敏处理,且数据以明文形式传输,一旦攻击者能够成功 截获流量并成功破解其传输数据,即可获取大量敏感信息,对企业 造成巨大危害。
个人信息泄漏:若企业内部人员、用户等将姓名、手机号、身 份证号码等个人信息直接暴露在公网上,攻击者可能会收集这些敏 感信息,用来制造社工库,存在被钓鱼、勒索等威胁。
数据脱敏失效:API 接口仅采用前端数据脱敏策略,且未对数 据进行加密传输,极易被攻击者截获流量,造成数据泄漏。若前后 端脱敏策略不一致,攻击者可以通过拼接数据的方式来获取原始数据,导致脱敏失效。
参考资料信通院 应用程序接口-API数据安全研究报告-2020年