MinIO服务器端要求伪造缝隙(CVE-2021-21287)

颁布功夫 2021-02-03

0x00 缝隙概述

CVE  ID

CVE-2021-21287

时   间

2021-02-03

类   型

SSRF

等   级

高危

远程利用

是

影响领域


 

0x01 缝隙详情

image.png

 

简述

MinIO是一个基于Apache License v2.0开源和谈的对象存储服务 。它兼容亚马逊S3云存储服务接口 ,合用于存储大容量非结构化的数据(如图片、视频、日志文件、备份数据和容器/虚构机镜像等) ,作为一款支持部署在私有云的开源对象存储系统 ,MinIO在全球被宽泛使用 。

2021年02月03日 ,phith0n公开披露了MinIO中的一个服务器端要求伪造缝隙(CVE-2021-21287) ,其CVSS评分7.7 。由于MinIO组件中LoginSTS接口设计不当 ,导致存在服务器端要求伪造缝隙 。攻击者能够通过机关URL来提议服务器端要求伪造攻击 ,成功利用此缝隙的攻击者可能通过利用服务器上的职能来读取、更新内部资源或执行肆意号令 。该缝隙无需用户验证即可远程利用 ,目前已被建复 。

 

缝隙细节

MinIO组件中LoginSTS接口其实是AWS STS登录接口的一个代理 ,用于将发送到JsonRPC的要求转造成STS的方式转发给本地的9000端口 。

// LoginSTS - STS user login handler.

func (web *webAPIHandlers) LoginSTS(r *http.Request, args *LoginSTSArgs, reply *LoginRep) error {

 ctx := newWebContext(r, args, "WebLoginSTS")

 

 v := url.Values{}

 v.Set("Action", webIdentity)

 v.Set("WebIdentityToken", args.Token)

 v.Set("Version", stsAPIVersion)

 

 scheme := "http"

    // ...

 

 u := &url.URL{

  Scheme: scheme,

  Host:   r.Host,

 }

 

 u.RawQuery = v.Encode()

 req, err := http.NewRequest(http.MethodPost, u.String(), nil)

 // ...

}

由于逻辑设计不当 ,MinIO会将用户发送的HTTP头Host中获取到地址作为URL的Host来机关新的URL 。但由于要求头是用户可控的 ,所以能够机关肆意的Host ,最终导致存在SSRF缝隙 。

 

影响领域

MinIO < RELEASE.2021-01-30T00-20-58Z

 

 

0x02 措置建议

目前该缝隙已被建复 ,建议升级至RELEASE.2021-01-30T00-20-58Z 。

下载链接:

https://github.com/minio/minio/releases/tag/RELEASE.2021-01-30T00-20-58Z

 

解决步骤

配置环境变量“ MINIO_BROWSER = off” 。

 

0x03 参考链接

https://mp.weixin.qq.com/s/X04IhY9Oau-kDOVbok8wEw

https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-21287

https://nvd.nist.gov/vuln/detail/CVE-2021-21287

 

0x04 功夫线

2021-02-02  phith0n披露缝隙

2021-02-03  VSRC颁布安全公告

 

0x05 附录

 

CVSS评分尺度官网:http://www.first.org/cvss/

image.png