阅读: 8
一、概述
微服务架构中,API网关充当着非常重要的一环,它不仅要负责外部所有的流量接入,同时还要在网关入口处根据不同类型请求提供流量控制、日志收集、性能分析、速率限制、熔断、重试等细粒度的控制行为。API网关一方面将外部访问与微服务进行了隔离,保障了后台微服务的安全,另一方面也节省了后端服务的开发成本,有益于进行应用层面的扩展。与此同时,API网关也具备解决外界访问带来的安全问题,如TLS加密、数据丢失、跨域访问、认证授权、访问控制等。因而笔者认为云原生API网关暴露的风险值得我们去进一步探索。
本篇为云原生测绘系列的第三篇,笔者从测绘角度分析了目前主流的云原生API网关代表Kong和Apache APISIX存在的风险,内容包括资产发现、资产漏洞、资产脆弱性发现三个维度,最后还提供了一些安全建议供各位读者参考。
注:文中统计的测绘数据为近一个月的国内数据,相关技术仅供研究交流,请勿应用于未授权的渗透测试。
二、Kong资产风险测绘分析
Kong是一个云原生,快速可扩展的分布式微服务抽象层(通常被称作API网关,API中间件),Kong于2015年被Mashape公司开源,其在Github上拥有31.6K的Star以及4.2K的Fork数量。Kong的核心价值主要体现在高性能和可扩展性上。扩展性上,Kong主要在Nginx的反向代理基础上,通过Lua实现了脚本化的扩展,同时所有管理功能都可通过RESTful API来实现。性能层面上,由于Kong内部使用了大量的缓存机制,从而很大程度上避免了阻塞式操作,使用性能上被广泛开发人员认可。
2.1 Kong资产暴露情况分析
借助测绘数据,我们可以了解到国内Kong资产地区和版本的分布情况,笔者也以这两个维度为各位读者进行介绍。
2.1.1 Kong资产地区分布
笔者从测绘数据中得到Kong相关资产共5860条数据,地区分布如图1所示(资产数较少的由于篇幅原因不在图中显示):
以上Kong资产暴露的端口情况笔者进行了统计,如图2所示:
由图1,图2我们可以得出如下信息:
- 国内暴露的Kong资产信息中有约85%的数据来源于北京市、广东省、浙江省、上海市、香港特别行政区、江苏省、台湾省、宁夏回族自治区,其中北京市暴露1630条数据位居第一
- 国内暴露的Kong资产使用的端口主要分布在443、80、8000、8443端口,其中443端口数量2131个位居第一、80端口数量2017个位居第二
2.1.2 Kong资产版本分布
借助测绘数据,笔者对国内暴露的Kong资产版本进行了分析,其分布情况如图3所示(资产版本数较少的由于篇幅原因不在图中显示):
上图可以看出在统计的Kong资产中,37%的资产未获取到具体版本信息,剩余约63%资产中,绝大多数资产暴露版本分布在1.4.3、2.4.1、2.1.4、0.14.1、0.11.0、2.2.0、1.5.1、2.5.0、1.3.0、2.0.1之中,值得注意的是,0.14.1版本为2018年8月发布的版本,为相对早期的版本,但在公网上暴露的资产数量确不少。
2.2 Kong漏洞介绍
Kong于2015年开源至今,已有约7年时间,在此期间一共曝出三个漏洞[1][2]][3],可以说漏洞数量相对还是比较少的,从CVE编号信息我们可以看出漏洞披露时间主要集中在2020-2021年,根据CVSS 2.0标准,其中含高危漏洞2个,中危漏洞1个。漏洞类型主要为未授权访问及权限提升,其中CVE-2021-27306漏洞在市面上曝光度较大,笔者也针对这些漏洞进行了信息汇总,其中包括公开暴露的PoC及ExP信息,如图4所示:
2.3 Kong资产脆弱暴露情况分析
借助测绘数据,笔者从Kong漏洞维度,统计了现有暴露资产的漏洞分布情况,如图5所示:
可以看出,在国内互联网暴露的Kong资产中,有3028个资产被曝出含有CVE-2021-27306漏洞(未授权访问),2171个资产被曝出含有CVE-2020-11710漏洞(未授权访问), 814个资产被曝出含有CVE-2020-35189漏洞(枚举),其中每个资产可能命中多条CVE。
通过上图我们也可以看出命中CVE-2021-27306漏洞的资产数约占总资产数的52%,命中CVE-2020-11710漏洞的资产数约占总资产数的37%,可见这两个CVE漏洞影响面较大,通过前面的Kong漏洞介绍,我们可以进一步了解这三个漏洞,篇幅原因此处不再赘述。
此外,笔者还统计了Kong漏洞在现有已知版本资产中(数量3707)的影响面,具体见如下表格:
CVE ID | 影响资产数 | 影响面 |
CVE-2021-27306 | 3028 | 82% |
CVE-2020-11710 | 2171 | 37% |
CVE-2020-35189 | 814 | 22% |
2.4 安全建议
- 根据官方补丁版本及时对Kong进行更新
- 根据官方提供的缓解措施进行临时缓解
三、Apache APISIX资产风险测绘分析
Apache APISIX是一个云原生、高性能、可扩展的云原生API网关,基于OpenResty(Nginx+Lua)和Etcd来实现,对比传统的API网关,具有动态路由和热插件加载的特点。系统本身自带前端,可以手动配置路由、负载均衡、限速限流、身份验证等插件,操作方便。Apache APISIX于2019年6月6日开源,同年10月17日进入Apache孵化器,正式成为 Apache项目,历时孵化9个月后,毕业成为Apache顶级项目。
3.1 Apache APISIX资产暴露情况分析
借助测绘数据,我们可以了解到国内APISIX资产地区和版本的分布情况,笔者也以这两个维度为各位读者进行介绍。
3.1.1 Apache APISIX资产地区分布
笔者从测绘数据中得到APISIX相关资产共1126条数据,地区分布如图6所示(资产数较少的由于篇幅原因不在图中显示):
以上APISIX资产暴露的端口情况笔者进行了统计,如图7所示:
由图6,图7我们可以得出如下信息:
- 国内暴露的APISIX资产信息中有约75%的数据来源于北京市、广东省、浙江省、上海市,其中北京市暴露316条数据位居第一
- 国内暴露的APISIX资产使用的端口主要分布在9000、443、80端口,其中9000端口数量471个位居第一、443端口数量446个位居第二
3.1.2 Apache APISIX资产版本分布
借助测绘数据,笔者对国内暴露的APISIX资产版本进行了分析,其分布情况如图8所示:
上图可以看出在统计的APISIX资产中,84%的资产未获取到具体版本信息,剩余约16%资产中,绝大多数资产暴露版本分布在2.0、2.9、2.1之中。
3.2 Apache APISIX脆弱性及漏洞介绍
3.2.1 Apache APISIX脆弱性配置分析
笔者将APISIX的脆弱性配置进行了汇总,主要包含以下三处:
Admin API 的 X-API-KEY 默认配置
Admin API 的 X-API-KEY 指 config.yaml⽂件(APISIX的配置文件,其中包含Etcd、Plugins、Admin API Key等配置)中的Admin API Key项,它是Admin API的访问token,其默认值为edd1c9f034335f136f87ad84b625c8f1 ,配置信息如下所示:
apisix:
# ... ...
admin_key
-
name: "admin"
key: edd1c9f034335f136f87ad84b625c8f1
role: admin
为保护Admin API,用