一个危险的Kubernetes bug:绕过身份验证,实施DoS

发表于:2019-10-23 09:23

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:佚名    来源:K8S技术社区

#
Bug
#
bug
分享:
  研究人员称,在某些Kubernetes配置下,Kubernetes开源云容器软件中的一对bug可能是“高度危险的”。
  漏洞CVE-2019-16276和CVE-2019-11253已在Kubernetes 1.14.8、1.15.5和1.16.2版本中打好补丁。
  Palo Alto Networks的Ariel Zelivansky和Aviv Sasson称,利用第一个漏洞CVE-2019-16276“非常简单”,攻击者可以绕过身份验证控制来访问容器。
  根据bug报告,严重性很高的漏洞是Go语言的标准HTTP库(称为net/http)中的HTTP协议冲突——该库用于分析HTTP请求。
  出现此问题是因为在HTTP规范中,请求头中不允许有空格。Palo Alto的研究人员在一篇文章中指出,“HTTP请求由一个字段名组成,后跟一个冒号,然后是它的值……在头的字段名和冒号之间不允许有空格……net/http库按照解释有效头的方式解释带有空格的头,这违反了HTTP RFC。”
  当你考虑到Kubernetes API服务器可以用于身份验证和访问控制时,这个bug的实际效果就变得很明显了——正如Palo Alto Networks研究人员指出的那样,它可以“配置为使用身份验证代理并通过请求头标识用户”。
  
  由于这个bug,代理可以忽略无效的头并将其转发到Go服务器,而Go服务器会将这些头解释为有效的。因此,攻击者可以利用该漏洞,通过手工创建一个将传递到服务器的无效头来为任何用户进行身份验证。
  Palo Alto Networks提供了一个示例:“攻击者可能会向代理发送以下请求:‘X-Remote-User:admin’。如果代理被设计为筛选X-Remote-User头,但由于该头无效而无法识别,则会将其转发到Kubernetes API服务器,攻击者将使用“admin”用户的角色成功传递API请求。“
  研究人员建议,那些使用带有认证代理的Kubernetes用户应该尽快更新到Go 1.12.10,并升级其Kubernetes版本。
  根据bug报告,第二个漏洞CVE-2019-11253使Kubernetes API服务器易受DoS攻击。根据Zelivansky和Sasson的说法,这种攻击可以通过一个名为“YAML/JSON bombing”的方法针对YAML/JSON解析函数。他们认为这个bug很严重。
  YAML和JSON是数据序列化语言,通常用于配置文件和用于存储或传输数据的应用程序中。YAML/JSON bombing背后的想法是通过指数加载引用来使Kubernetes API服务器中的YAML解析器崩溃,而授权用户可以通过发送大量恶意YAML或JSON有效负载来实现这一点。
  研究人员解释说:“尽管它可能是根据重启策略和重启限制而启动的,但攻击者可能会滥用攻击并持续发送攻击。我们建议检查给用户、pod或匿名用户的每个角色,以确定是否需要,特别是如果允许使用YAML文件发送POST请求。”
  Zelivansky和Sasson注意到,这个特殊的bug实际上存在于YAML解析器库本身,这是合并到Kubernetes中的第三方代码。
  他们指出:“幸运的是,编写了另一个补丁来解决go-yaml库级别的这个问题,在其他依赖其代码的项目中防止了这种攻击。”
  受影响的用户应该升级以防止攻击,特别是考虑到云容器技术已经成为当今云基础设施中的必备,越来越受到网络犯罪分子的关注。例如,稍早些时候,“Graboid”蠕虫感染了2000多个不安全的Docker Engine(Community Edition)主机,希望挖掘Monero加密货币。
  这并不是在Kubernetes中发现的第一个漏洞——去年发现了一个严重的权限提升漏洞(CVE-2018-1002105),该漏洞允许攻击者不受限制地远程访问以窃取数据或破坏生产应用程序。
  StackRox的高级产品经理Connor Gilbert表示,发现更多的漏洞意味着需要特别注意保护这个威胁面。
  “当你运行容器时,你必须确保控制平面API surface的安全。”他说,“Docker、Kubernetes等工具非常强大,因此保护它们的API服务器是至关重要的。Kubernetes最近的漏洞突显了多层安全方法的重要性,包括身份验证、授权、网络防火墙和持续监控。”
  根据Lacework研究总监James Condon的说法,记住容器使传统安全系统很难窥视内部来扫描恶意活动也是明智的。
  “涉及到容器,传统的端点解决方案可能无法准备标记恶意文件和活动。”他说,“这可能是由于容器的独立文件系统,或者当代码功能被拆分到多个文件时,恶意文件可能看起来很干净。因此,重要的是扫描预部署的镜像,仅使用你信任的镜像,利用具有适当容器可见性的运行时解决方案,并实现网络安全监控。”

      本文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号