Instituto Nacional de ciberseguridad. Sección Incibe
Instituto Nacional de Ciberseguridad. Sección INCIBE-CERT

Vulnerabilidad en Go (CVE-2018-16873)

Gravedad CVSS v3.1:
ALTA
Tipo:
CWE-20 Validación incorrecta de entrada
Fecha de publicación:
14/12/2018
Última modificación:
07/11/2023

Descripción

En Go en versiones anteriores a la 1.10.6 y versiones 1.11.x anteriores a la 1.11.3, el comando "go get" es vulnerable a la ejecución remota de código cuando se ejecuta con la marca -u y la ruta de importación de un paquete Go malicioso, o un paquete que lo importa directa o indirectamente. Específicamente, solo es vulnerable en modo GOPATH, pero no en modo módulo (la diferencia está documentada en https://golang.org/cmd/go/#hdr-Module_aware_go_get). Mediante el uso de dominios personalizados, es posible organizar todo para que un repositorio de Git se clone a una carpeta llamada ".git" mediante una ruta de importación vanity que termina en "/.git". Si el root del repositorio Git contiene un archivo "HEAD", un archivo "config", un directorio "objects" y un directorio "refs", con algo de trabajo para asegurar el orden correcto de las operaciones, se puede engañar a "go get -u" para que considere que el directorio padre es un root del repositorio y ejecute comandos Git en él. Eso empleará el archivo "config" en el root del repositorio Git original, y si ese archivo de configuración contiene comandos maliciosos, se ejecutarán en el sistema con "go get -u".

Productos y versiones vulnerables

CPE Desde Hasta
cpe:2.3:a:golang:go:*:*:*:*:*:*:*:* 1.10.6 (excluyendo)
cpe:2.3:a:golang:go:*:*:*:*:*:*:*:* 1.11.0 (incluyendo) 1.11.3 (excluyendo)
cpe:2.3:a:opensuse:backports_sle:15.0:-:*:*:*:*:*:*
cpe:2.3:o:opensuse:leap:15.0:*:*:*:*:*:*:*
cpe:2.3:o:opensuse:leap:15.1:*:*:*:*:*:*:*
cpe:2.3:o:opensuse:leap:42.3:*:*:*:*:*:*:*
cpe:2.3:o:suse:linux_enterprise_server:12:-:*:*:*:*:*:*
cpe:2.3:o:debian:debian_linux:9.0:*:*:*:*:*:*:*