首页 文章 精选 留言 我的

精选列表

搜索[安全漏洞],共3708篇文章
优秀的个人博客,低调大师

开源软件Xen曝出安全漏洞:多家云计算服务暂停

近日,开源软件Xen发出高危漏洞警告,称由于Xen存在部分漏洞,建议所有相关的服务器进行重启来修复这些漏洞。在云计算行业为人熟知,由剑桥大学开发。使用者包括亚马逊EC2、阿里云ECS、IBM SoftLayer、Linode及Rackspace Cloud等主流厂商。目前来看,多数云计算厂商采用了服务器重启的解决方式,但这样将中断云计算服务,使得客户业务无法开展。 据了解,早先亚马逊公告通知客户,表示有大约10%的服务器受影响需要重启,随后该公司技术团队找到热升级的方式,但仍有0.1%的服务器需要重启。考虑到亚马逊云计算规模,这一漏洞显然影响面颇大。 而Linode则干脆采用了重启大法,同时表示这是因为漏洞高危,“在重启期间一般来说2小时的停机是正常的,但通常实际关机时间会更少。” 另一家云计算厂商Rackspace也为服务器集群安排了重启时间表。 刚刚进入美国的阿里云则于3月9日发布公告,表示已经找到了避免服务器重启的热升级方案,理论上不再需要重启服务器,不会影响到客户在阿里云上服务的正常开展。文章转载自 开源中国社区 [http://www.oschina.net]

优秀的个人博客,低调大师

如何缩小安全漏洞爆炸半径,实现服务间零信任安全?

作者:王夕宁, 奇方 近日国内外多家安全机构监测到 Apache Log4j 存在任意代码执行漏洞(漏洞编号:CVE-2021-44228),未取得身份认证的用户,可以从远程发送数据请求输入数据日志,轻松触发漏洞,最终在目标上执行任意代码。 众所周知,Log4j 在多个微服务应用框架中被广泛使用,这些分布众多的微服务也会增加安全的挑战,每个微服务都是一个被攻击的目标。Kubernetes 为托管和编排用户的微服务提供了一个出色的平台。但是,默认情况下,微服务之间的所有交互都不安全。它们通过纯文本 HTTP 进行通信,但这不足以满足安全要求。只依赖网络边界来保证安全是不够的,因为一旦内部的某个服务被攻陷,边界安全手段就如马奇诺防线,攻击者能够以该机器为跳板来攻击内网。所以,内部的调用也必须安全,这就是零信任的用武之地。 零信任是 Forrester 分析师 John Kindervag 提出的, 是指无论在网络边界内部还是外部,都没有任何隐含的信任可言。换句话说,任何地方都需要显式认证, 并使用最小权限原则来限制对资源的访问。 服务网格技术的一个重要的价值主张就是它如何有效地保护应用的生产环境,同时又不降低开发人员的生产力。通过服务网格技术,为微服务架构采用零信任网络安全方法提供必要的基础,以此实现所有访问都经过强身份验证、基于上下文授权、记录监控等安全目标。使用这些网格功能,您可以为属于网格的所有应用程序提供安全控制能力,例如所有流量都已加密、到应用程序的所有流量都通过策略执行点(PEP)的验证等。 由美国国家安全局(NSA)于 2021 年 8 月发布的《Kubernetes Hardening Guidance》(具体请见文末相关链接 1)也提到了管理员应该考虑使用服务网格来加强 Kubernetes 集群的安全性。 阿里云服务网格 ASM(具体请见文末相关链接 2)成为重要的云原生零信任体系落地载体之一,将身份验证和授权从应用程序代码卸载到服务网格,开箱即用、动态可配、更新策略更加容易且立即生效。在使用 Kubernetes Network Policy 实现三层网络安全控制之上,服务网格 ASM 提供了包括对等身份和请求身份认证能力、Istio 授权策略以及更为精细化管理的基于 OPA(Open Policy Agent) 的策略控制能力。阿里云服务网格 ASM 提供的这些零信任安全能力, 帮助用户实现上述这些安全目标。 构建基于服务网格的零信任安全能力体系包括了以下几个方面: 零信任的基础 - 工作负载身份;如何为云原生工作负载提供统一的身份;ASM 产品为服务网格下的每一个工作负载提供了简单易用的身份定义,并根据特定场景提供定制机制用于扩展身份构建体系, 同时兼容社区 SPIFFE 标准; 零信任的载体 - 安全证书,ASM 产品提供了如何签发证书以及管理证书的生命周期、轮转等机制,通过 X509 TLS 证书建立身份,每个代理都使用该证书。并提供证书和私钥轮换; 零信任的引擎 - 策略执行,基于策略的信任引擎是构建零信任的关键核心,ASM 产品除了支持 Istio RBAC 授权策略之外,还提供了基于 OPA 提供更加细粒度的授权策略; 零信任的洞察 - 可视化与分析,ASM 产品提供了可观测机制用于监视策略执行的日志和指标,来判断每一个策略的执行情况等; 为什么要使用服务网格实现零信任? 与直接在应用程序代码中构建这些安全机制的传统方法相比,服务网格体系结构具有以下多种安全性好处: Sidecar 代理的生命周期与应用程序保持独立,因此可以更轻松地管理这些 Sidecar 代理。 允许动态配置,更新策略变得更加容易,更新立即生效,而无需重新部署应用程序。 服务网格的集中控制架构使企业的安全团队可以构建、管理和部署适用于整个企业的安全策略,从而默认情况下就能确保应用开发人员构建的业务应用的安全。他们无需额外的工作即可立即使用这些安全策略。 服务网格提供了对附加到请求的终端用户凭据进行身份验证的能力如 JWT。 此外, 使用服务网格体系结构,可以将身份验证和授权系统作为服务部署在网格中。这样一来,如同网格中的其他服务一样,这些安全系统从网格中本身也可以得到安全保证,包括传输中的加密、身份识别、策略执行点、终端用户凭据的身份验证和授权等。 借助阿里云服务网格 ASM,可以使用单个控制平面来实施强大的身份和访问管理,透明的 TLS 和加密,身份验证和授权以及审核日志记录。阿里云服务网格 ASM 开箱即用地提供了这些功能,并且安装和管理它的简单性使开发人员,系统管理员和安全团队可以适当地保护其微服务应用程序。 阿里云服务网格 ASM中的零信任体系 服务网格能够减小云原生环境中的被攻击面积,并提供零信任应用网络所需的基础框架。通过 ASM 管理服务到服务的安全性,可以确保服务网格的端到端加密、服务级别身份认证和细粒度授权策略。 在服务网格体系下, 可以支持: 在服务之间实施双向 TLS 认证或者面向 server 侧的 TLS 认证,支持证书的自动轮转等生命周期管理。网格内的通信都经过身份验证和加密处理。 启用基于身份的细粒度授权,以及基于其他维度参数的授权。基于角色访问控制 (RBAC) 的基础,支持 “最低权限” 的立场,也就是只有经过授权的服务才能根据 ALLOW/DENY 规则相互通信。 当前, 阿里云服务网格 ASM 提供了如下的零信任安全基本能力: 工作负载身份 当应用程序在服务网格环境中运行时,服务网格会为每个服务提供一个唯一标识。连接到服务网格中运行的其他微服务时,将会使用该标识。服务标识可用于服务的双向验证,以此进行验证是否允许服务间的访问,同时该服务标识也可用于授权策略中。 当使用服务网格 ASM 管理运行在 Kubernetes 上的工作负载或者基于 WorkloadEntry 定义虚拟机工作负载时,ASM 会为每个工作负载提供服务身份;该身份基于工作负载的服务帐户令牌实现。 ASM 中的服务身份符合 SPIFFE 标准,并具有以下格式:spiffe://<trust-domain>/ns/<namespace>/sa/<service-account> 在服务网格 ASM 控制台上,打开对应的 ASM 实例,在左侧导航栏中可以看到如下零信任安全下的工作负载身份。 数据面中的 Kubernetes 集群下的工作负载及其身份定义: 基于 WorkloadEntry 定义虚拟机工作负载及其身份定义: 对等身份认证 认证指的是身份:这个服务是谁?这个最终用户是谁?我可以相信他们就是他们所说的那样吗? ASM产品提供了两种身份验证: 对等身份验证 - 当两个微服务相互交互时,启用还是禁用双向TLS进行对等身份验证。 请求身份验证 - 允许最终用户和系统使用请求身份认证与微服务进行交互。通常使用JSON Web令牌(JWT)执行该操作 按照入门指引(具体请见文末相关链接 3)安装部署 bookinfo 示例。 首先,当尝试从同一命名空间(例如本示例中为 default)中的 productpage pod 使用纯 HTTP 访问 details 服务时,默认情况下请求应该以 status 200 成功返回。这是因为在默认情况下,TLS 和纯文本流量都可以被接受。 kubectl exec $(kubectl get pod -l app=productpage -o jsonpath={.items..metadata.name}) -c istio-proxy -- curl http://details:9080/details/1 -o /dev/null -s -w '%{http_code}\n' 接着,在命名空间 default 下定义对等身份认证。 在服务网格 ASM 控制台上,打开对应的 ASM 实例,在左侧导航栏中可以看到如下零信任安全下的对等身份认证。在右侧页面中,点击 “新建双向 mTLS 模式” 按钮,为工作负载 details 定义 mTLS 模式为 STRICT。 再次,使用 productpage pod 使用纯 HTTP 访问 details 服务时: kubectl exec $(kubectl get pod -l app=productpage -o jsonpath={.items..metadata.name}) -c istio-proxy -- curl http://details:9080/details/1 -o /dev/null -s -w '%{http_code}\n' 000 command terminated with exit code 56 退出码 56 表示接收网络数据失败。这是符合预期的,工作负载 details 定义了 mTLS 模式为 STRICT,这样在每个请求中都需要 TLS 证书认证。 为了允许正常访问,可以通过上述定义的对等身份认证从 STRICT 修改为 PERMISSIVE。对应的 YAML 定义如下: apiVersion: security.istio.io/v1beta1 kind: PeerAuthentication metadata: name: details-strict namespace: default spec: mtls: mode: PERMISSIVE selector: matchLabels: app: details 请求身份验证 首先,我们将创建一个请求身份认证策略来对 details 服务的入站请求强制执行 JWT 身份验证。在服务网格 ASM 控制台上,打开对应的 ASM 实例,在左侧导航栏中可以看到如下零信任安全下的请求身份认证。在右侧页面中,点击 “新建” 按钮,为工作负载 details 定义 jwt 规则。 其中,issuer 值设置为"testing@secure.istio.io",jwks 的值取自 Istio 安装文件中的 security/tools/jwt/samples/jwks.json,对应如下 { "keys":[ {"e":"AQAB","kid":"DHFbpoIUqrY8t2zpA2qXfCmr5VO5ZEr4RzHU_-envvQ","kty":"RSA","n":"xAE7eB6qugXyCAG3yhh7pkDkT65pHymX-P7KfIupjf59vsdo91bSP9C8H07pSAGQO1MV_xFj9VswgsCg4R6otmg5PV2He95lZdHtOcU5DXIg_pbhLdKXbi66GlVeK6ABZOUW3WYtnNHD-91gVuoeJT_DwtGGcp4ignkgXfkiEm4sw-4sfb4qdt5oLbyVpmW6x9cfa7vs2WTfURiCrBoUqgBo_-4WTiULmmHSGZHOjzwa8WtrtOQGsAFjIbno85jp6MnGGGZPYZbDAa_b3y5u-YpW7ypZrvD8BgtKVjgtQgZhLAGezMt0ua3DRrWnKqTZ0BJ_EyxOGuHJrLsn00fnMQ"}]} 接着, 尝试使用 productpage pod 使用纯 HTTP 访问 details 服务时,可以看到返回结果为 200。 其中设置变量 TOKEN 值为: export TOKEN=eyJhbGciOiJSUzI1NiIsImtpZCI6IkRIRmJwb0lVcXJZOHQyenBBMnFYZkNtcjVWTzVaRXI0UnpIVV8tZW52dlEiLCJ0eXAiOiJKV1QifQ.eyJleHAiOjQ2ODU5ODk3MDAsImZvbyI6ImJhciIsImlhdCI6MTUzMjM4OTcwMCwiaXNzIjoidGVzdGluZ0BzZWN1cmUuaXN0aW8uaW8iLCJzdWIiOiJ0ZXN0aW5nQHNlY3VyZS5pc3Rpby5pbyJ9.CfNnxWP2tcnR9q0vxyxweaF3ovQYHYZl82hAUsn21bwQd9zP7c-LS9qd_vpdLG4Tn1A15NxfCjp5f7QNBUo-KC9PJqYpgGbaXhaGx7bEdFWjcwv3nZzvc7M__ZpaCERdwU7igUmJqYGBYQ51vr2njU9ZimyKkfDe3axcyiBZde7G6dabliUosJvvKOPcKIWPccCgefSj_GNfwIip3-SsFdlR7BtbVUcqR-yv-XOxJ3Uc1MI0tz3uMiiZcyPV7sNCU4KRnemRIMHVOfuvHsU60_GhGbiSFzgPTAa9WTltbnarTbxudb_YEOx12JiwYToeX0DCPb43W1tzIBxgm8NxUg kubectl exec $(kubectl get pod -l app=productpage -o jsonpath={.items..metadata.name}) -c istio-proxy -- curl http://details:9080/details/1 -o /dev/null --header "Authorization: Bearer $TOKEN" -s -w '%{http_code}\n' 200 如果传递的是无效令牌,我们应该看到 “401: Unauthorized” 响应: kubectl exec $(kubectl get pod -l app=productpage -o jsonpath={.items..metadata.name}) -c istio-proxy -- curl http://details:9080/details/1 -o /dev/null --header "Authorization: Bearer badtoken" -s -w '%{http_code}\n' 401 但是,如果我们根本不传递令牌,RequestAuthentication 则不会调用该策略。不使用 JWT Token 的请求, 同样也返回了 200。 kubectl exec $(kubectl get pod -l app=productpage -o jsonpath={.items..metadata.name}) -c istio-proxy -- curl http://details:9080/details/1 -o /dev/null -s -w '%{http_code}\n' 200 因此,除了此身份验证策略之外,我们还需要一个授权策略,该策略要求对所有请求进行 JWT。下一部分会讲述如何在 ASM 产品中定义授权策略。 授权策略 ASM 产品提供了授权策略,可以使用授权策略 AuthorizationPolicy 资源来激活微服务之间的授权机制,并使用以下内容建立适当的流量授权策略机制: 工作负载标签选择 selector 字段指定策略目标; action 字段指定是 ALLOW 还是 DENY 请求。如果您未指定操作,则操作默认设置为 ALLOW。为清晰起见,我们建议您始终指定操作。(授权政策还支持 AUDIT 和 CUSTOM 操作); rules 指定何时触发操作: rules 中的 from 字段指定请求的来源; rules 中的 to 字段指定请求的操作; when 字段指定为了应用规则所需满足的其他条件; 对应的 YAML 定义如下: apiVersion: security.istio.io/v1beta1 kind: AuthorizationPolicy metadata: name: require-jwt namespace: default spec: action: ALLOW rules: - from: - source: requestPrincipals: - testing@secure.istio.io/testing@secure.istio.io selector: matchLabels: app: details 再次不使用 JWT Token 发送请求,您现在应该看到 403 - Forbidden。这就是 AuthorizationPolicy 生效了,所有前端请求都必须有一个 JWT Token。 kubectl exec $(kubectl get pod -l app=productpage -o jsonpath={.items..metadata.name}) -c istio-proxy -- curl http://details:9080/details/1 -o /dev/null -s -w '%{http_code}\n' 403 OPA 策略 作为由CNCF(具体请见文末相关链接 4)托管的一个孵化项目,开放策略代理(OPA)(具体请见文末相关链接 5)是一个策略引擎,可用于为您的应用程序实现细粒度的访问控制。OPA 作为通用策略引擎,可以与微服务一起部署为独立服务。为了保护应用程序,必须先授权对微服务的每个请求,然后才能对其进行处理。为了检查授权,微服务对 OPA 进行 API 调用,以确定请求是否被授权。 服务网格 ASM 集成了开放策略代理(OPA)插件,通过 OPA 定义访问控制策略,可以使您的应用实现细粒度的访问控制,并支持动态更新 OPA 策略。 具体可以参考《在ASM中实现动态更新OPA策略》(具体请见文末相关链接 6) 零信任性能提升 英特尔® 在全新的第三代英特尔®至强® 可扩展处理器(ICELAKE)中引入众多我们称为 Crypto Acceleration 加解密加速技术和架构创新,大大提升了一些关键加解密算法的性能。第三代英特尔至强处理器和 Multi-Buffer 技术所使用的 AVX512 指令集,在阿里云第七代 ECS 服务器中提供了若干不同的实例类型。基于这些指令集, 加上融合了 MultiBuffer 技术的 Envoy 上游社区能力,阿里云服务网格 ASM 产品提供了基于 MB 技术的 TLS 加解密性能优化能力。 结合英特尔的开源软件库,例如 IPP 加密库、IPsec 多缓冲区加密库 (intel-ipsec-mb)、英特尔® QuickAssist 技术(英特尔® QAT)和 OpenSSL 引擎。这些解决方案显着改善了加密操作,例如 TLS 连接握手性能。这些新组件可以并行处理多个 TLS 私钥操作。借助 OpenSSL 和 BoringSSL 中都可用的异步私钥处理机制,应用程序软件可以提交握手私钥请求,而无需等待一个请求返回,然后才能提交另一个。反过来,一旦准备好,就会为每个请求调用一个回调。在下面,多缓冲区加密处理可以将 8 个这样异步提交的私钥操作,并使用 AVX512 SIMD(单指令多数据)指令并行处理,大大提高了整体应用性能。 在阿里云 ASM 控制台中一键可以启用性能优化开关,当前这个功能已经在产品最新版本中对外开放。 在 KubeCon 2021 大会上阿里云服务网格 ASM 负责人王夕宁和英特尔软件和先进技术部云计算团队的胡伟将会给大家带来一次专题的技术分享,届时我们将会介绍更多的技术细节和实践的情况。(技术分享链接见文末 7) 总结及参考案例 综上所示,服务网格 ASM 提供了以下用于增强安全性的组件: 提供具有完整证书生命周期管理的托管证书基础设施,解决了证书颁发和 CA 轮换的复杂性; 托管的控制面 API,用于向 Envoy 代理分发身份验证策略,授权策略和安全命名信息; Sidecar 代理通过提供策略执行点 PEP 来帮助确保网格的安全; Envoy 代理扩展允许遥测数据收集和审计; 每一个工作负载通过 X509 TLS 证书建立身份,每个 Sidecar 代理都使用该证书。服务网格 ASM 提供并定期轮换证书和私钥。如果某个特定的私钥被盗用,服务网格很快就会用新的私钥替换它,从而大大减少了攻击面。 参考案例 使用授权策略在入口网关上实施基于 IP 的访问控制(具体请见文末相关链接 8)、或者基于自定义外部授权的访问控制等,如下图所示云产品云原生应用交付平台 ADP(具体请见文末相关链接 9)基于阿里云服务网格ASM的网关授权策略实现。 某互联金融客户在解决跨集群多语言应用的访问权限控制方面,使用阿里云服务网格 ASM 提供的授权策略隔离外联区域和应用区域。同时可以结合出口网关来审计出网格的流量,配合上授权策略,还可以控制应用对第三方服务的访问权限。 相关链接 1)《Kubernetes Hardening Guidance》: ​​https://media.defense.gov/2021/Aug/03/2002820425/-1/-1/1/CTR_KUBERNETES%20HARDENING%20GUIDANCE.PDF​​ 2)阿里云服务网格ASM: ​​https://www.aliyun.com/product/servicemesh​​ 3)入门指引: ​​https://help.aliyun.com/document_detail/149552.html​​ 4)CNCF: ​​https://www.cncf.io/ ​​ 5)开放策略代理(OPA): ​​https://www.openpolicyagent.org/ ​​ 6)《在ASM中实现动态更新OPA策略》:​​​​ ​​https://help.aliyun.com/document_detail/277428.html​​ 7)KubeCon 技术分享: ​​https://kccncosschn21.sched.com/event/rxVz/leng-ssxian-zhi-qiang-tang-jie-asmreintel-multi-bufferjiong-zha-zhi-hui-sponsored-session-using-alibaba-cloud-service-mesh-asm-and-intel-multi-buffer-technology-to-achieve-faster-encrypted-communication-between-application-services​​ 8)使用授权策略实现访问控制 ​​https://help.aliyun.com/document_detail/214764.html?spm=a2c4g.11186623.6.613.6b213918q0rlZV#title-f15-wyq-fxg​​ 9)云原生应用交付平台 ADP: ​​https://adp.console.aliyun.com/ ​​

优秀的个人博客,低调大师

PwnedPiper安全漏洞影响了北美80%大医院的气动管道系统

物联网安全公司Armis今天公布了被称为PwnedPiper的9个漏洞详细信息,这些漏洞影响到北美大约80%医院所安装的一种常见医疗设备-TransLogic气动管道系统。来自Swisslog Healthcare公司的TransLogic气动管道系统(PTS)是一个复杂系统,使用压缩空气来移动医疗用品(实验室样品、药品、血液制品等),这些管道连接着大型医院的不同部门。 TransLogic系统安装在3000多家医院当中,有效地发挥了作用,因为它们允许敏感医疗材料的移动,同时让护士自由地提供病人护理。 物联网安全公司Armis在今天发表的研究报告中表示,它在PTS 控制软件 - Nexus控制面板中发现了9个漏洞,该软件让医生和护士控制医疗材料在医院各科之间的移动。这些漏洞可以使未经认证的攻击者接管TransLogic气动管道系统,并从本质上完全控制目标医院PTS网络。 这种类型的控制可以实现复杂和令人担忧的勒索软件攻击,并允许攻击者泄露敏感的医院信息。虽然只有当攻击者能够连接医院的内部网络或在医院的内部网络中占有一席之地时,才能利用这些漏洞,但由于TransLogic设备在北美的普遍性,这些设备很容易被用来影响医院提供医疗服务的能力,PwndPiper问题被认为是非常严重的。 PwndPiper问题在5月份发现并报告给Swisslog Healthcare。Swisslog Healthcare的一位发言人在一封电子邮件中表示,除了一个漏洞之外,所有的软件更新都已经开发完成,剩下的漏洞相关具体缓解策略也可以提供给客户。 该公司今天发布了7.2.5.7版本的Nexus控制面板软件,同时还发布了一篇博文,为客户提供更多信息。它还说,这个问题主要限于北美的医院,这些系统大多安装在北美地区,预计今年晚些时候会有第九个问题的补丁。 Armis团队列出了九个PwndPiper漏洞,Armis团队还计划在本周三的黑帽安全会议上介绍其发现。 九个PwndPiper漏洞包括: CVE-2021-37163 - 两个通过Telnet服务器访问的硬编码密码; CVE-2021-37167 – root用户运行的脚本可用于PE; CVE-2021-37161 - udpRXThread的下溢; CVE-2021-37162 - sccProcessMsg的溢出; CVE-2021-37165 - hmiProcessMsg的溢出; CVE-2021-37164 - tcpTxThread的三层堆栈溢出; CVE-2021-37166 - GUI套接字拒绝服务; CVE-2021-37160 - 未认证,未加密和未签名的固件升级,这是其中最严重的漏洞,因为它允许攻击者通过启动固件更新过程获得未经验证的远程代码执行,同时在设备上保持持久性。这个漏洞目前还没有被修复。

优秀的个人博客,低调大师

攻击者可以利用安全漏洞对Kubernetes集群进行攻击

Kubernetes所使用的其中一个Go代码库中存在漏洞,该漏洞可能会导致CRI-O和Podman容器引擎的拒绝服务攻击。 该漏洞(CVE-2021-20291)会影响一个名为 "containers/storage "的Go语言代码库。据发现该漏洞的Unit 42团队的安全研究员Aviv Sasson介绍,该漏洞可以通过在注册表内放置一个恶意镜像来触发;当该镜像被恶意攻击者从注册表中调出时,就可以进行DoS攻击。 Sasson在周三的一篇文章中说:"通过这个漏洞,恶意攻击者可能会攻击包括Kubernetes和OpenShift在内的任何一个依赖有漏洞的容器引擎的基础设施" CRI-O和Podman都是容器引擎,类似于Docker,主要用于在云端执行操作和管理容器。CRI-O和Podman使用”containers/storage”来处理容器镜像的存储和下载。 研究人员称,当该漏洞被触发时,CRI-O就无法拉取新的镜像、启动任何新的容器(即使它们已经被拉取到本地)、检索本地镜像列表或停止容器运行。 同样,Podman也将无法拉取新的镜像,检索正在运行的pods,启动新的容器(即使它们已经被拉取到本地),检索现有的镜像或终止所有的容器。 这个漏洞影响可能非常广泛。Sasson解释说:"从Kubernetes v1.20开始,Docker就已经被废弃使用,现在唯一支持的容器引擎是CRI-O和 Containerd,这就导致了很多集群使用CRI-O。在实际的攻击场景中,攻击者可能会将一个恶意镜像拉到多个不同的节点上,使所有节点崩溃,破坏集群。而除了重新启动节点外,目前没有任何解决问题的方法。" 容器武器化 当容器引擎从注册表中提取一个镜像时,它首先会下载清单,其中会含有关于如何构建映像的说明。其中一部分是组成容器文件系统的层列表,容器引擎会读取该列表,然后下载并解压每个层。 Sasson解释说:"攻击者可以向注册表中上传一个可以利用该漏洞的恶意层,然后上传一个使用众多层的镜像,包括恶意层,并借此创建一个新的恶意镜像。然后,当受害者从注册表中提取镜像时,它将会在该过程中下载恶意层,从而完成该漏洞的利用。" 一旦容器引擎开始下载恶意层,最终的结果就是发生死锁。 Sasson解释说:"在这种情况下,进程会获取到锁,并且这个锁永远都不会被释放,这将导致DoS发生,因为此时其他线程和进程都会停止执行并永远等待锁被释放。" 他列出了该漏洞被触发时发生的步骤。 例程1--从注册表下载恶意层。 例程1 - 从注册表中下载恶意层.进程1 获取锁。 例程2 - 使用xz二进制解压下载的层,并将输出写入到stdout。 例程3 - 等待xz退出并读取stdout中的所有数据。当条件满足时,它会关闭一个名为chdone的通道。 例程1 - 使用 xz 的输出作为输入,并尝试解压缩数据。由于文件不是 tar 存档文件,untar 会出现"invalid tar header "报错,并且不会从 xz 的标准输出中读取其余数据。由于数据永远不会被读取,例程3现在是死锁,也就永远不会关闭chdone。 例程1 - 等待例程3关闭chdone,也是死锁。 一旦例程1被死锁,容器引擎就无法执行任何新的请求,因为如果要执行新的请求,它需要获取步骤2的锁,而这个锁永远都不会被释放。 containers/storage的1.28.1版本、CRI-O的v1.20.2版本和Podman的3.1.0版本都发布了该bug的补丁。管理员应尽快更新。 容器安全成为了焦点 云容器仍然是网络攻击者的攻击的重点。例如,4月早些时候就发现了一个有组织的、进行广泛攻击的密码窃取活动,其攻击目标是配置错误的开放的Docker Daemon API端口。每天都可以观察到数千次与该活动相关的攻击。 研究人员表示,同样是在4月份,在微软的云容器技术Azure Functions中发现存在一个漏洞,该漏洞允许攻击者直接写入文件。这是一个权限升级漏洞,最终可能让攻击者实现容器逃逸。 而在最近的一次实验室测试中,一个简单的Docker容器蜜罐在24小时内发生了四次不同的网络攻击,这是一个很直接的例子,可以说明为什么云基础设施需要强大的安全性。 本文翻译自:https://threatpost.com/security-bug-brick-kubernetes-clusters/165413/ 【责任编辑:赵宁宁 TEL:(010)68476606】

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册