MinIO服务器端要求伪造缝隙(CVE-2021-21287)
颁布功夫 2021-02-030x00 缝隙概述
CVE ID | CVE-2021-21287 | 时 间 | 2021-02-03 |
类 型 | SSRF | 等 级 | 高危 |
远程利用 | 是 | 影响领域 |
0x01 缝隙详情

简述
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/



京公网安备11010802024551号