KubeEdge 发布云原生边缘计算威胁模型及安全防护技术白皮书
本文分享自华为云社区《KubeEdge发布云原生边缘计算威胁模型及安全防护技术白皮书》,作者: 云容器大未来。
KubeEdge 社区已完成了对 KubeEdge 项目的全面安全威胁模型分析。云原生边缘计算的安全性问题一直备受用户关注,但是目前业界缺乏关于云原生边缘计算的安全威胁模型分析,用户很难对其边缘系统进行有效的安全加固。针对以上现状,作为业界首个云原生边缘计算项目,我们将进行系统分析并发布安全威胁模型及分析报告,这对于用户或 vendors 有着重要的安全实践指导意义。本文将基于 KubeEdge 项目详细分析云原生边缘计算业务过程的威胁模型并给出对应的安全加固建议。
背景
随着越来越多的用户将 KubeEdge 项目用于生产环境中,KubeEdge 社区把安全问题放在优先地位。KubeEdge 社区十分关注项目的安全,并成立 Sig Security 安全团队:(https://github.com/kubeedge/community/tree/master/security-team),负责 KubeEdge 的系统安全设计,并快速响应和处理安全漏洞。为了对 KubeEdge 项目进行更加全面的安全评估,KubeEdge 社区联合 ADA LOGICS 公司、OSTIF 及云原生计算基金会(CNCF)对 KubeEdge 项目进行安全评估并输出安全评估报告,分析和总结 KubeEdge 项目的安全威胁模型及相关安全问题。感谢 ADA LOGICS 公司的专家 Adam Korczynski 和 David Korczynski 对 KubeEdge 项目专业、全面的评估,该评估对 KubeEdge 项目的安全防护有重要的指导意义。感谢 OSTIF 的 Amir Montazery 和 Derek Zimmer 以及 CNCF 基金会,他们对这次合作提供了很大帮助。对于安全报告中发现的安全问题,KubeEdge 社区已根据社区的漏洞处理策略第一时间修复,并发布 release 版本,版本号为 v1.11.1、v1.10.2 和 v1.9.4,漏洞公告已发布在:https://github.com/kubeedge/kubeedge/security/advisories。
本文将分析 KubeEdge 的威胁模型,并给出相应的安全防护方案。
目标人群
以下人群在使用 KubeEdge 过程中,了解本文分析的 KubeEdge 威胁风险和可能的缓解措施将对他们的工作发挥很大作用:
KubeEdge 的贡献者。 一个通用的威胁模型可能对开发 KubeEdge 的人很有用,他们可以从整体角度考虑并加固他们的系统。
部署 KubeEdge 的组织。 对于在集群中使用 KubeEdge 的组织来说,了解常见的攻击和可能的弱点是很有用的,这样他们就可以检查和评估自己的配置。
安全评估员,负责评估使用 KubeEdge 的 Kubernetes 集群(已有或新建的集群)的安全性。
开发人员需要了解 KubeEdge 的更新和攻击,以主动避免未来可能发生的安全风险。
KubeEdge 威胁模型分析
KubeEdge 安全审计报告中指出,KubeEdge 潜在的攻击者包括以下三部分:
外部攻击者,从系统外部发起攻击。
内部攻击者,包括系统内部操作人员不合规操作导致的安全问题。
供应链攻击者,破坏 KubeEdge 软件供应链组件的攻击者。
KubeEdge 社区运用 ASTRIDE Low Level 威胁建模方法并结合 KubeEdge 安全审计报告,对 KubeEdge 进行系统的安全分析,旨在帮助开发者或用户理解系统中潜在的安全威胁,明确风险并列举出目前 KubeEdge 社区已有的相应的消减机制和安全加固建议。
外部攻击分析
KubeEdge 数据流图如下:
如上述数据流图所示,当数据流穿越不同的信任级别(区域)时,就存在信任边界,已在图中用红框标出。下面将详细分析 KubeEdge 系统架构中的信任边界(引用自 KubeEdge 第三方安全报告)、社区已有的消减措施并给出安全加固建议:
Threat ID 1:云端 CloudCore 组件与 EdgeCore 组件之间的连接
描述
边缘 EdgeCore 发起到 CloudCore 组件的连接。该数据流中,较低信任级别组件 EdgeCore 向较高信任级别组件 CloudCore 发起访问。EdgeCore 在整个系统中有一个单独的权限级别,因此控制 EdgeCore 的攻击者不应该能够对其他边缘节点产生负面影响,例如通过攻击和操控 CloudCore 来攻击其他节点(该漏洞描述引用自安全评估报告)。
影响
攻击者恶意修改 CloudCore 与 EdgeCore 组件之间的请求和应答报文,导致通信过程存在仿冒和篡改的威胁风险。
消减措施
CloudCore 与 EdgeCore 之间的通信通过数字签名证书加密和服务端/客户端双向认证的方式保障信息交互的机密性和完整性,安全加密协议使用 TLS 1.2,使用安全加密算法为 TLSECDHEECDSAWITHAES128GCM_SHA256,且加密算法套件白名单中默认只支持该算法,防止客户端使用不在白名单中的不安全算法进行通信造成安全风险;
证书默认有效期为一年,过期后失效,防止证书被攻击者利用。用户基于 kubeedge 项目已有的证书轮转机制,可以实现证书过期自动更换,保障业务连续性。
安全加固建议:
Recommendation ID 1:使用安全长度的私钥加密,并加密保存私钥
Recommendation ID 2:使用可信来源的 CA 证书
Threat ID 2:边缘组件 ServiceBus 在本机范围内提供 HTTP 服务
描述
边缘组件 ServiceBus 监听本地 local host 端口并在本机范围内提供 HTTP 服务。该数据流中,较低信任级别的用户应用进程向较高信任级别组件 ServiceBus 发起访问。如果发起攻击,不应该使攻击者能够将影响范围扩大到云端控制面(该漏洞描述引用自安全评估报告)。
影响
ServiceBus 组件收到的数据往往是不受管理面控制的,攻击者能够对 ServiceBus 组件发起恶意报文攻击,导致通信过程存在仿冒和篡改的威胁风险。ServiceBus 组件异常仅影响单个边缘节点服务故障,不会导致整个 KubeEdge 系统崩溃。
消减措施
ServiceBus 组件仅监听本地 local host 端口,已限制服务范围,只允许本机进程访问,通过对本机用户访问权限的限制保障本组件安全;
服务端接收客户端连接时记录连接访问的日志,可作为审计日志,可以让管理员及时发现攻击的发生,并及时停止 ServiceBus 服务,阻止攻击继续进行;
ServiceBus 服务默认关闭,遵守默认安全的原则。在用户使用文档中已明确提示用户如果开启该服务,则存在上述风险。
安全加固建议
Recommendation ID 3:严格限制边缘节点的用户登录权限
Recommendation ID 4:严格限制应用部署的权限
Recommendation ID 5:严格校验应用镜像的合法性
Threat ID 3:边缘端 Device 通过 MQTT Broker 连接到 EdgeCore。
描述
边缘 device 设备通过 MQTT Broker(集成在 EventBus 组件中)连接到 EdgeCore。该数据流中,较低信任级别的用户 device 设备向较高信任级别组件 EdgeCore 发起访问(该漏洞描述引用自安全评估报告)。
影响
EdgeCore 组件收到的数据往往是不受管理面控制的,攻击者能够对 MQTT Broker 发起恶意报文攻击,存在仿冒和篡改的威胁风险。如果发起攻击导致 EventBus 组件异常,异常仅影响单个边缘节点服务故障,不会导致整个 KubeEdge 系统崩溃。
消减措施
MQTT Broker 仅监听在本机端口,已限制服务范围,只允许本机进程访问,通过对本机用户访问权限的限制保障本组件安全;同时,EventBus 组件可作为客户端,对接外置第三方 MQTT Broker,如果用户使用第三方 MQTT Broker,详细的消减措施请参考对应第三方 MQTT Broker 服务提供厂商的安全文档。
EventBus 仅对 MQTT Broker 中的特定 Topic 进行处理,用户无法通过该通道对 EdgeCore 任意访问。
安全加固建议
Recommendation ID 3:严格限制边缘节点的用户登录权限
Recommendation ID 4:严格限制应用部署的权限
Recommendation ID 5:严格校验应用镜像的合法性
Recommendation ID 6:严格限制边缘 Device 设备的接入
Threat ID 4:Edged 管理和监控 Pods 及其他 K8s 资源
描述
Edged 管理和监控 Pods 及其他 K8s 资源。该数据流中,较低信任级别的应用容器与较高信任级别组件 EdgeCore 之间进行数据交互。如果主动发起连接时,被恶意服务器攻击,不应该使攻击者能够将影响范围扩大到云端控制面(该漏洞描述引用自安全评估报告)。
影响
如果 Edged 访问的 CRI 插件被攻击者恶意伪造,则存在 CRI 插件仿冒和篡改的威胁风险,导致本地业务异常。
消减措施
Edged 与 CRI 插件通信时,只在本地访问受信任路径,由管理员控制访问路径,最小化 Unix domain sockets 文件描述符的权限,避免被仿冒者恶意替换。
安全加固建议
Recommendation ID 3:严格限制边缘节点的用户登录权限
Recommendation ID 7:严格审查边缘节点上 CRI 插件的配置
Threat ID 5:MetaServer 在边缘节点提供 HTTP 服务
描述
MetaServer 作为边缘“api-server”,对边缘插件提供 HTTP 服务。该数据流中,较低信任级别的用户应用插件向较高信任级别组件 MetaServer 发起访问(该漏洞描述引用自安全评估报告)。
影响
MetaServer 组件收到的数据往往是不受管理面控制的,攻击者能够对 MetaServer 组件发起恶意报文攻击,导致通信过程存在仿冒和篡改的威胁风险。MetaServer 组件异常仅影响单个边缘节点服务故障,不会导致整个 KubeEdge 系统崩溃。
消减措施
MetaServer 组件仅监听本地 local host 端口,已限制服务范围,只允许本机进程访问,通过对本机用户访问权限的限制保障本组件安全;
MetaServer 服务默认关闭,遵守默认安全的原则。在用户使用文档中已明确提示用户如果开启该服务,则存在上述风险。
安全加固建议
Recommendation ID 3:严格限制边缘节点的用户登录权限
Recommendation ID 4:严格限制应用部署的权限
Recommendation ID 5:严格校验应用镜像的合法性
内部攻击分析
对于内部管理员或操作人员,可能的风险主要包括管理员或操作人员错误操作将恶意软件部署至集群中、在高风险场景中执行高风险配置等。
消减措施
KubeEdge 用户手册中已提供各个组件的详细功能描述及配置使用指导文档,指导系统管理员或操作人员正确操作,减少人为误操作或误配置导致的安全风险。由于 KubeEdge 的持续迭代,该文档也将持续更新并完善。
安全加固建议
Recommendation ID 3:严格限制边缘节点的用户登录权限
Recommendation ID 4:严格限制应用部署的权限
Recommendation ID 8:严格划分系统中各个角色权限
Recommendation ID 9:及时跟进并更新 KubeEdge 版本
供应链攻击分析
攻击可能发生在典型软件供应链的每一个环节,而且在当今环境中,这些类型的攻击越来越公开,破坏性和代价高昂。攻击方向包括源代码完整性、构建完整性和构建产物的可用性。
消减措施
社区联合安全公司对 KubeEdge 软件供应链流程已进行 SLSA 等级评估,并引入 SLSA 软件供应链安全评估框架,包括对源代码、构建流程、依赖库等进行安全评估,防止针对软件供应链的攻击,从源头上保障软件供应链的安全。详细 SLSA 框架描述请参考 https://slsa.dev/spec/v0.1/#supply-chain-threats;
KubeEdge 仓库 CI/CD 流水线中已开启 dependence bot 第三方依赖库检查功能,及时发现第三方依赖库的安全漏洞并在 KubeEdge 版本中同步更新,降低被攻击的风险;
KubeEdge security team 已具备完整漏洞处理机制,包括漏洞发现、漏洞上报、漏洞分析处理、漏洞披露和发布整个流程,可以及时处理和修复安全漏洞。详细漏洞处理及披露策略请见 https://github.com/kubeedge/community/blob/master/security-team/SECURITY.md。
社区将根据 SLSA 软件供应链安全评估框架持续改进软件供应链安全。
安全加固建议
Recommendation ID 10:根据社区发布的校验文件严格校验二进制文件
Recommendation ID 11:在用户或 vendors 的软件供应链中引入 SLSA 软件供应链安全评估框架
安全加固建议列表
Recommendation ID 1 - 使用安全长度的私钥加密,并加密保存私钥
描述
建议用户生成至少为 2048 位私钥,且在本地加密存储私钥,存储私钥的文件设置最小化的访问权限,仅属主可读。
Recommendation ID 2 - 使用可信来源的 CA 证书
描述
从可信的 CA 获取数字证书,不使用自签名证书。
Recommendation ID 3 - 严格限制边缘节点的用户登录权限
严格限制边缘节点的本机权限,限制外部用户的用户登录权限,减少非必要的授权。
Recommendation ID 4 - 严格限制应用部署的权限
描述
严格限制边缘节点应用部署的权限,只有系统服务和管理员才能拥有部署特权容器的权限;
Recommendation ID 5 - 严格校验应用镜像的合法性
描述
在边缘节点部署应用时,严格校验应用镜像的合法性,防止部署恶意应用。
Recommendation ID 6 - 严格限制边缘 Device 设备的接入
描述
对于接入边缘节点的 Device 设备进行严格审核,避免非必要设备接入。
Recommendation ID 7 - 严格审查边缘节点上 CRI 插件的配置
描述
严格审查 CRI 插件的配置,使用 CRI 对应插件的官方推荐配置。
Recommendation ID 8 - 严格划分系统中各个角色权限
描述
严格划分系统中各个角色权限,通过 RBAC、OPA 等方式实现系统角色权限的细粒度控制。
Recommendation ID 9 - 及时跟进并更新 KubeEdge 版本
描述
社区发现漏洞后将在最近的 3 个 minor release 版本中合入解决,用户可以关注社区 security advisory 获取漏洞披露信息,并及时跟进并更新 KubeEdge 版本。
Recommendation ID 10 - 根据社区发布的校验文件严格校验二进制文件
描述
用户使用社区发布的二进制文件前,应该根据社区发布的校验文件(校验文件格式:checksum_组件二进制包名称.txt)严格校验二进制文件,防止二进制被仿冒和篡改。社区 release 软件包发布地址https://github.com/kubeedge/kubeedge/releases。
Recommendation ID 11 - 在用户或 vendors 的软件供应链中引入 SLSA 软件供应链安全评估框架
描述
用户或 vendors 在使用源代码构建过程中,应该参考 SLSA 软件供应链安全评估框架,对源代码、构建流程、依赖库等进行安全加固。
附录
相关链接
社区漏洞处理机制: https://github.com/kubeedge/kubeedge/security/policy
安全审计报告: https://github.com/kubeedge/community/tree/master/sig-security/sig-security-audit/KubeEdge-security-audit-2022.pdf
社区 security advisory 链接: https://github.com/kubeedge/kubeedge/security/advisories
KubeEdge 威胁模型及安全防护分析(本文档): https://github.com/kubeedge/community/tree/master/sig-security/sig-security-audit/KubeEdge-threat-model-and-security-protection-analysis.md
社区用户文档链接: https://kubeedge.io/en/docs
SLSA 软件供应链安全框架: https://slsa.dev/spec/v0.1/#supply-chain-threats
release 链接地址: https://github.com/kubeedge/kubeedge/releases
版权声明: 本文为 InfoQ 作者【华为云开发者联盟】的原创文章。
原文链接:【http://xie.infoq.cn/article/f96afd6e833fe54e8f0d5176a】。文章转载请联系作者。
评论