中危 github.com/argoproj/argo-cd 中的跨站点请求伪造 (CSRF) (CVE-2024-22424)

CVE编号

CVE-2024-22424

利用情况

暂无

补丁情况

官方补丁

披露时间

2024-01-19
漏洞描述
Argo CD是一个基于声明式的GitOps持续交付工具,用于Kubernetes。在2.10-rc2、2.9.4、2.8.8和2.7.15之前的Argo CD API存在跨服务器请求伪造(CSRF)攻击漏洞,在攻击者能够向与Argo CD同一父域的页面编写HTML时会受到影响。CSRF攻击通过诱使经过身份验证的Argo CD用户加载一个包含调用受害者帐户的Argo CD API端点代码的网页来进行。例如,攻击者可以向Argo CD用户发送一个看似无害的页面链接,但在后台调用Argo CD API端点来创建运行恶意代码的应用程序。Argo CD使用“宽松”SameSite Cookie策略来防止攻击者控制外部域的CSRF攻击。恶意外部网站可以尝试调用Argo CD API,但是Web浏览器会拒绝发送带有请求的Argo CD验证令牌。许多公司将Argo CD托管在内部子域中。如果攻击者能够在例如https://test.internal.example.com/上放置恶意代码,他们仍然可以执行CSRF攻击。在这种情况下,“宽松”SameSite Cookie无法防止浏览器发送身份验证Cookie,因为目标是Argo CD API的父域。通常,浏览器通过对具有敏感内容类型的敏感请求应用CORS策略来阻止此类攻击。特别是,浏览器将针对内容类型为“application/json”的POST请求发送“预检请求”,询问目标API“是否允许接受来自我的域的请求?”如果目标API没有回答“是”,浏览器将阻止该请求。在修补版本之前,Argo CD没有验证请求是否包含正确的内容类型头。因此,攻击者可以通过将内容类型设置为被认为是“不敏感”的内容,例如“text/plain”,绕过浏览器的CORS检查。浏览器不会发送预检请求,Argo CD将愉快地接受内容(实际上仍然是JSON)并执行所请求的操作(例如运行恶意代码)。此漏洞的修补程序已在以下Argo CD版本中发布:2.10-rc2、2.9.4、2.8.8和2.7.15。修补程序包含了破坏性的API更改。Argo CD API将不再接受未指定application/json作为其Content-Type的非GET请求。可接受的内容类型列表可以配置,并且可以(但不建议)完全禁用内容类型检查。建议用户升级。此漏洞没有已知的解决方法。
解决建议
建议您更新当前系统或软件至最新版,完成漏洞的修复。
受影响软件情况
# 类型 厂商 产品 版本 影响面
1
运行在以下环境
应用 linuxfoundation argo-cd * From
(including)
0.1.0
Up to
(excluding)
2.7.16
运行在以下环境
应用 linuxfoundation argo-cd * From
(including)
2.8.0
Up to
(excluding)
2.8.8
运行在以下环境
应用 linuxfoundation argo-cd * From
(including)
2.9.0
Up to
(excluding)
2.9.4
运行在以下环境
应用 linuxfoundation argo-cd 2.10.0 -
阿里云评分
6.1
  • 攻击路径
    远程
  • 攻击复杂度
    复杂
  • 权限要求
    普通权限
  • 影响范围
    全局影响
  • EXP成熟度
    未验证
  • 补丁情况
    官方补丁
  • 数据保密性
    无影响
  • 数据完整性
    无影响
  • 服务器危害
    无影响
  • 全网数量
    N/A
CWE-ID 漏洞类型
CWE-352 跨站请求伪造(CSRF)
阿里云安全产品覆盖情况