Hace poco recibí una alerta del departamento de seguridad sobre una vulnerabilidad de MinIO

A primera vista, esta vulnerabilidad parece gravísima; ¡hay que corregirla cuanto antes!
Así pues, me puse manos a la obra con la actualización.
Primero, comprobamos que la versión de MinIO que usamos es 2021-03-26T00:00:41Z
Elegimos esta versión porque utiliza Apache License 2.0 , y es la última versión de MinIO que permite el uso comercial gratuito sin necesidad de publicar el código fuente.
A partir de esta versión, MinIO cambió su licencia a AGPL V3.
Según el informe, esta vulnerabilidad
Versiones afectadas confirmadas:RELEASE.2019-12-17T23-16-33Z <= MinIO < RELEASE.2023-03-20T20-16-18Z
Versión corregida:RELEASE.2023-03-20T20-16-18Z
La versión que utilizamos actualmente se encuentra entre las versiones afectadas.
Como la versión que utilizamos es demasiado antigua, no nos atrevemos a actualizar a una versión principal más reciente.
Así que pensé en descargar el código fuente y aplicar yo mismo un parche basándome en los fragmentos de código revelados en el informe.
// minio/cmd/bootstrap-peer-server.go
func (b *bootstrapRESTServer) VerifyHandler(w http.ResponseWriter, r *http.Request) { ctx := newContext(r, w, "VerifyHandler") cfg := getServerSystemCfg() logger.LogIf(ctx, json.NewEncoder(w).Encode(&cfg)) }
// minio/cmd/bootstrap-peer-server.go
func getServerSystemCfg() ServerSystemConfig { envs := env.List("MINIO_") envValues := make(map[string]string, len(envs)) for _, envK := range envs { // omitir determinadas variables de entorno como parte // de la lista de permitidos y podría configurarse // de forma diferente en cada nodo, actualizar skipEnvs() // mapear si existen esos valores de entorno if _, ok := skipEnvs[envK]; ok { continue } envValues[envK] = env.Get(envK, "") } return ServerSystemConfig{ MinioEndpoints: globalEndpoints, MinioEnv: envValues, } }
Pero cuando descargué el código fuente y cambié a la rama de la versión que utilizábamos, descubrí que esa versión no contenía el código que aparecía en el informe
func (b *bootstrapRESTServer) VerifyHandler(w http.ResponseWriter, r *http.Request) {
ctx := newContext(r, w, "VerifyHandler")
cfg := getServerSystemCfg()
logger.LogIf(ctx, json.NewEncoder(w).Encode(&cfg))
w.(http.Flusher).Flush()
}func getServerSystemCfg() ServerSystemConfig {
return ServerSystemConfig{
MinioPlatform: fmt.Sprintf("OS: %s | Arch: %s", runtime.GOOS, runtime.GOARCH),
MinioEndpoints: globalEndpoints,
}
}¡Ay, qué pasa? ¿Qué pasa?¿Qué está pasando?
Según el informe, existe una herramienta de comprobación que permite verificar esta vulnerabilidad.https://github.com/MzzdToT/CVE-2023-28432
Descargamos el código de comprobación de la vulnerabilidad y, tras ejecutarlo, los resultados mostraron que la versión que utilizamos no está afectada.

En ese momento empecé a sospechar que el intervalo de versiones indicado en el informe era incorrecto, así que comparé el código fuente de MinIO

Tras comparar el código, se descubrió que las versiones que realmente incorporan este defecto comienzan en RELEASE.2021-08-31T05-46-54Z
Todavía no puedo confirmar si mi suposición es correcta, así que empiezo a buscar el aviso sobre esta vulnerabilidad en los canales oficiales de MinIO
https://github.com/minio/minio/security/advisories/GHSA-6xvq-wj2x-3h3q

La verdad ha salido a la luz: el equipo oficial de MinIO ha indicado correctamente las versiones afectadas
Versiones afectadas
RELEASE.2021-08-31T05-46-54Z
Versiones corregidas
RELEASE.2023-03-20T20-16-18Z
La versión que utilizamos no está dentro del intervalo de versiones afectadas.
A raíz de este incidente, busqué muchísimos artículos.
Ay, entre los proveedores de seguridad de China también pasa lo mismo: tú me plagias y yo te plagio.
Este artículo
https://cloud.tencent.com/developer/article/2315008
Plagio
https://www.h3c.com/cn/d_202304/1830808_30003_0.htm
Este artículo
https://www.h3c.com/cn/d_202304/1830808_30003_0.htm
Otro plagio
https://github.com/minio/minio/security/advisories/GHSA-6xvq-wj2x-3h3q
¡Y resulta que encima copió la versión equivocada, menuda faena!
A continuación voy a publicar los enlaces de los artículos que encontré: son todos una panda de inútiles y voy a ponerlos a caldo, aunque el asunto ya esté enterrado
https://stack.chaitin.com/techblog/detail/62
https://mp.weixin.qq.com/s/JgskenAZ6Cpecoe2k2AEjQ
https://blog.nsfocus.net/miniocve-2023-28432/
https://www.freebuf.com/vuls/363647.html
https://cloud.tencent.com/developer/article/2315008
https://www.h3c.com/cn/d_202304/1830808_30003_0.htm
https://zone.huoxian.cn/d/2708-cve-2023-28432-minio/17
https://www.cve.org/CVERecord?id=CVE-2023-28432