From c3d9d46fd4e8e79c11749b26dd70899ae190025d Mon Sep 17 00:00:00 2001 From: zhuxiujuan28 <562873187@qq.com> Date: Wed, 2 Apr 2025 17:47:17 +0800 Subject: [PATCH] add Vulnerability Advisory Signed-off-by: zhuxiujuan28 <562873187@qq.com> --- .../v4.1/21-security/01-security-policy.adoc | 2 +- .../02-vulnerability-advisory.adoc | 338 ++++++++++++++++++ 2 files changed, 339 insertions(+), 1 deletion(-) create mode 100644 content/zh/docs/v4.1/21-security/02-vulnerability-advisory.adoc diff --git a/content/zh/docs/v4.1/21-security/01-security-policy.adoc b/content/zh/docs/v4.1/21-security/01-security-policy.adoc index 68310e1f8..7e87d8597 100644 --- a/content/zh/docs/v4.1/21-security/01-security-policy.adoc +++ b/content/zh/docs/v4.1/21-security/01-security-policy.adoc @@ -2,7 +2,7 @@ title: "安全策略" keywords: "Kubernetes, KubeSphere, 安全策略" description: "介绍 KubeSphere 安全策略。" -weight: 05 +weight: 01 --- == 支持的版本 diff --git a/content/zh/docs/v4.1/21-security/02-vulnerability-advisory.adoc b/content/zh/docs/v4.1/21-security/02-vulnerability-advisory.adoc new file mode 100644 index 000000000..0c8361117 --- /dev/null +++ b/content/zh/docs/v4.1/21-security/02-vulnerability-advisory.adoc @@ -0,0 +1,338 @@ +--- +title: "KubeSphere 网关组件(ingress-nginx)安全漏洞公告" +linkTitle: "KubeSphere 网关组件安全漏洞公告" +keywords: "Kubernetes, KubeSphere, 安全漏洞, 公告" +description: "介绍 KubeSphere 安全漏洞公告。" +weight: 02 +--- + +== 漏洞概述 + +**影响版本** + +- KubeSphere & KubeSphere 企业版 v3.x 所有版本 +- KubeSphere & KubeSphere 企业版 v4.1.x 所有版本 + +**漏洞等级**:严重 + +**漏洞类型**:权限提升、信息泄露、安全绕过、目录遍历 + +**漏洞一览表:** + +[%header,cols="1a,1a,1a,3a,1a"] +|=== +|漏洞编号 |类型 |CVSS 评分 |简述 |详细信息 + +|CVE-2025-1097 |配置注入 |8.8(高危) |通过 `auth-tls-match-cn` 注解注入恶意配置,可导致任意代码执行和信息泄露 |link:https://github.com/kubernetes/kubernetes/issues/131007[官方链接] + +|CVE-2025-24514 |配置注入 |8.8(高危) |通过 `auth-url` 注解注入恶意配置,可导致任意代码执行和信息泄露 |link:https://github.com/kubernetes/kubernetes/issues/131006[官方链接] + +|CVE-2025-24513 |目录遍历 |4.8(中危)|Admission Controller 中的文件路径遍历,可能导致拒绝服务和信息泄露 |link:https://github.com/kubernetes/kubernetes/issues/131005[官方链接] + +|CVE-2025-1974 |远程代码执行 |9.8(严重) |Pod 网络可达的未授权远程代码执行漏洞,可导致完全控制集群 |link:https://github.com/kubernetes/kubernetes/issues/131009[官方链接] + +|CVE-2025-1098 |配置注入 |8.8(高危) |通过 `mirror-target` 和 `mirror-host` 注解注入恶意配置,可导致任意代码执行和信息泄露 |link:https://github.com/kubernetes/kubernetes/issues/131008[官方链接] +|=== + +== 漏洞影响分析 + +这些漏洞主要通过以下方式影响系统: + +. **代码执行风险**:CVE-2025-1097、CVE-2025-24514、CVE-2025-1098 和 CVE-2025-1974 都可能导致在 ingress-nginx 控制器上下文中执行任意代码。 + +. **信息泄露**:由于默认情况下,ingress-nginx 控制器可访问集群内所有命名空间中的 Secrets,这可能导致敏感凭证泄露。 + +. **未授权访问**:特别是 CVE-2025-1974,任何能够访问 Pod 网络的攻击者无需认证即可获取集群控制权,CVSS 评分高达 9.8(严重)。 + +. **缓解条件**:对于 CVE-2025-24514,如果已启用 `enable-annotation-validation` 参数(v1.12.0 起默认启用),则不受该漏洞影响。 + +== 验证是否受影响 + +请执行以下步骤检查您的系统是否受影响。 + +. 确认是否使用 ingress-nginx 组件。 ++ +-- +[source,bash] +---- +kubectl get pods --all-namespaces --selector app.kubernetes.io/name=ingress-nginx +---- + +如果命令返回结果,表明您正在使用 ingress-nginx。 +-- + +. 检查已安装的 ingress-nginx 版本。 ++ +-- +[source,bash] +---- +kubectl exec -it -n ingress-nginx deploy/ingress-nginx-controller -- /nginx-ingress-controller --version +---- + +**受影响版本:** + +- < v1.11.0 +- v1.11.0 - v1.11.4 +- v1.12.0 + +[.admon.attention,cols="a"] +|=== +|注意 + +|如果您使用的是受影响版本,请立即采取本文档中的解决方案或缓解措施。 +|=== +-- + +== 解决方案 + +=== 1. 升级(nginx 社区推荐方案) + +升级至以下安全版本之一: + +- v1.11.5 +- v1.12.1 +- 或更高版本 + +=== 2. 升级修复(KubeSphere 产品中的网关) + +对于 KubeSphere 和 KubeSphere 企业版 v4.1.3,将 Kubesphere 网关升级到 v1.0.4 版本(Ingress-Nginx controller 版本 v1.12.1)。 + +对于 v4.1.3 之前的 KubeSphere 和 KubeSphere 企业版,请先升级至 v4.1.3。 + +// Gateway 扩展组件升级方法可参考:https://cwiki.yunify.com/pages/viewpage.action?pageId=224896073 + +=== 3. 临时缓解措施 + +如无法立即升级,可执行以下临时缓解措施。 + +==== CVE-2025-1097 缓解措施 + +检查并移除所有 Ingress 中的 `auth-tls-match-cn` 注解。 + +. 检查注解。 ++ +[source,bash] +---- +kubectl get ingress -A -o custom-columns='NAMESPACE:.metadata.namespace,NAME:.metadata.name,AUTH_TLS_MATCH_CN:.metadata.annotations.nginx\.ingress\.kubernetes\.io/auth-tls-match-cn' +---- + +. 移除注解。 ++ +[source,bash] +---- +kubectl annotate ingress -n nginx.ingress.kubernetes.io/auth-tls-match-cn- +---- + +==== CVE-2025-24514 缓解措施 + +- 检查并移除所有 Ingress 中的 `auth-url` 注解。 ++ +-- +. 检查注解。 ++ +[source,bash] +---- +kubectl get ingress -A -o custom-columns='NAMESPACE:.metadata.namespace,NAME:.metadata.name,AUTH_URL:.metadata.annotations.nginx\.ingress\.kubernetes\.io/auth-url' +---- + +. 移除注解。 ++ +[source,bash] +---- +kubectl annotate ingress -n nginx.ingress.kubernetes.io/auth-url- +---- +-- + +- 或启用 `enable-annotation-validation` 参数(此参数从 v1.12.0 起默认启用,但低版本需手动配置)。 ++ +-- +. 检查是否启用了注解验证功能。 ++ +[source,bash] +---- +kubectl get deployment -n ingress-nginx ingress-nginx-controller -o yaml | grep enable-annotation-validation +---- + +. 如未启用,编辑 deployment 添加参数 `--enable-annotation-validation=true`,保存后 ingress-nginx-controller 会自动重启。 ++ +[source,bash] +---- +kubectl edit deployment -n ingress-nginx ingress-nginx-controller +---- +-- + +==== CVE-2025-24513 和 CVE-2025-1974 缓解措施 + +KubeSphere 网关默认不开启 Admission Controller,通过以下方法检查您的网关是否开启了 Admission Controller。 + +. 检查所有网关的 release。 ++ +[source,bash] +---- +helm list -n A | grep kubesphere-router +---- + +. 查看所有 release 是否开启了 Admission Controller。 ++ +-- +[source,bash] +---- +helm get values [RELEASE_NAME] -n [RELEASE_NAMESPACE] +---- +若 `controller.admissionWebhooks.enabled` 为 true,请立即联系 KubeSphere 安全团队为您解决。 +-- + +. 如果您自行安装了 ingress-nginx,且 `controller.admissionWebhooks.enabled` 为 true,可使用以下方法检查和禁用 Admission Controller。 ++ +==== +[.admon.attention,cols="a"] +|=== +|注意 + +| +这仅作为临时缓解措施,如果已升级到安全版本 v1.11.5 或 v1.12.1,则无需禁用 Admission Controller。 +|=== + +* 若使用 Helm 安装了 ingress-nginx,您需要重新安装,设置 Helm 参数,禁用 admission webhook: ++ +[source,bash] +---- +helm upgrade [RELEASE_NAME] ingress-nginx/ingress-nginx \ + --set controller.admissionWebhooks.enabled=false \ + -n ingress-nginx +---- + +* 若手动安装了 ingress-nginx: ++ +-- +* 方法 1:删除 `ValidatingWebhookConfiguration`。 ++ +[source,bash] +---- +kubectl delete validatingwebhookconfigurations ingress-nginx-admission +---- + +* 方法 2:编辑 Deployment 或 DaemonSet,在 `spec.containers.args` 部分,删除 `--validating-webhook` 相关行。 ++ +[source,bash] +---- +kubectl edit deployment -n ingress-nginx ingress-nginx-controller +---- ++ +[source,yaml] +---- + - --validating-webhook=:8443 + - --validating-webhook-certificate=/usr/local/certificates/cert + - --validating-webhook-key=/usr/local/certificates/key +---- +-- + +[.admon.warning,cols="a"] +|=== +|重要提示 + +| +升级到安全版本(v1.11.5、v1.12.1 或更高版本)是解决所有漏洞的完整修复方案。禁用 Admission Controller 仅是在无法立即升级时的临时措施。升级后应保持 Admission Controller 启用,以确保正常功能。 +|=== +==== + +==== CVE-2025-1098 缓解措施 + +检查并移除所有 Ingress 中的 `mirror-target` 和 `mirror-host` 注解。 + +. 检查注解。 ++ +[source,bash] +---- +kubectl get ingress -A -o custom-columns='NAMESPACE:.metadata.namespace,NAME:.metadata.name,MIRROR_TARGET:.metadata.annotations.nginx\.ingress\.kubernetes\.io/mirror-target,MIRROR_HOST:.metadata.annotations.nginx\.ingress\.kubernetes\.io/mirror-host' +---- + +. 移除注解。 ++ +[source,bash] +---- +kubectl annotate ingress -n nginx.ingress.kubernetes.io/mirror-target- +kubectl annotate ingress -n nginx.ingress.kubernetes.io/mirror-host- +---- + +== 检测方法 + +使用以下命令检查可能被利用的配置或可疑活动: + +. 检查可能被用于攻击的 `auth-tls-match-cn` 注解(CVE-2025-1097)。 ++ +-- +[source,bash] +---- +kubectl get ingress -A -o custom-columns='NAMESPACE:.metadata.namespace,NAME:.metadata.name,AUTH_TLS_MATCH_CN:.metadata.annotations.nginx\.ingress\.kubernetes\.io/auth-tls-match-cn' +---- + +检查返回结果中是否有可疑内容,特别注意包含特殊字符如 `#`、`}}`、换行符等的注解值。 +-- + +. 检查可能被用于攻击的 `auth-url` 注解(CVE-2025-24514)。 ++ +-- +[source,bash] +---- +kubectl get ingress -A -o custom-columns='NAMESPACE:.metadata.namespace,NAME:.metadata.name,AUTH_URL:.metadata.annotations.nginx\.ingress\.kubernetes\.io/auth-url' +---- + +检查返回结果中是否有可疑内容,特别注意包含 `#`、`;` 或换行符的 URL。 +-- + +. 检查 Admission Controller 是否开启,这与 CVE-2025-24513 和 CVE-2025-1974 相关。 ++ +-- +[source,bash] +---- +kubectl get validatingwebhookconfigurations -l app.kubernetes.io/name=ingress-nginx +---- + +如果返回结果,表示 Admission Controller 已开启,可能存在被攻击的风险。 +-- + +. 检查可能被用于攻击的 `mirror-target` 或 `mirror-host` 注解(CVE-2025-1098)。 ++ +-- +[source,bash] +---- +kubectl get ingress -A -o custom-columns='NAMESPACE:.metadata.namespace,NAME:.metadata.name,MIRROR_TARGET:.metadata.annotations.nginx\.ingress\.kubernetes\.io/mirror-target,MIRROR_HOST:.metadata.annotations.nginx\.ingress\.kubernetes\.io/mirror-host' +---- + +检查返回结果中是否有可疑内容。 +-- + +. 检查 Pod 日志中是否有可疑活动。 ++ +[source,bash] +---- +kubectl logs -n ingress-nginx -l app.kubernetes.io/name=ingress-nginx --tail=1000 | grep -E "error|warn|critical|suspicious|unauthorized" +---- + +如果发现可疑配置或活动,请立即隔离受影响的资源并联系 KubeSphere 安全团队进行进一步分析。 + +## 安全最佳实践 + +- 实施严格的网关访问控制 +- 配置网关路由隔离策略 +- 启用 TLS +- 限制 Ingress 资源访问权限 +- 启用审计日志监控 +- 实施 RBAC 最小权限原则 +- 定期检查和升级 ingress-nginx 控制器 +- 确保 Admission Controller 不对外暴露 +- 实施网络策略限制 Pod 网络通信 + +## 技术支持 + +如发现漏洞利用证据或需要技术支持,请联系: + +- KubeSphere 安全团队:security@kubesphere.io +- GitHub Issues:link:https://github.com/kubesphere/kubesphere/issues[] + +## 参考信息 + +- link:https://kubernetes.github.io/ingress-nginx/deploy/upgrade/[ingress-nginx 升级文档] +- link:https://www.wiz.io/blog/ingress-nginx-kubernetes-vulnerabilities[Wiz Research: IngressNightmare 漏洞分析] +- link:https://kubernetes.io/blog/2025/03/24/ingress-nginx-cve-2025-1974/[Kubernetes 官方博客: CVE-2025-1974 简介] \ No newline at end of file