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

Vulnerabilidad en Nix (CVE-2024-47174)

Gravedad CVSS v3.1:
MEDIA
Tipo:
CWE-287 Autenticación incorrecta
Fecha de publicación:
26/09/2024
Última modificación:
30/09/2024

Descripción

Nix es un administrador de paquetes para Linux y otros sistemas Unix. A partir de la versión 1.11 y antes de las versiones 2.18.8 y 2.24.8, `` no verificaba los certificados TLS en las conexiones HTTPS. Esto podría provocar que se filtraran detalles de la conexión, como URL completas o credenciales, en caso de un ataque de intermediario (MITM). `` también se conoce como el generador de derivaciones integrado `builtin:fetchurl`. No debe confundirse con la función de tiempo de evaluación `builtins.fetchurl`, que no se vio afectada por este problema. Un usuario puede verse afectado por el riesgo de filtrar credenciales si tiene un archivo `netrc` para la autenticación o confía en derivaciones con `impureEnvVars` configuradas para usar credenciales del entorno. Además, la técnica común de confianza en el primer uso (TOFU) de actualizar dependencias especificando un hash no válido y obteniéndolo de un almacén remoto también era vulnerable a un MITM que inyectara objetos de almacén arbitrarios. Esto también se aplicaba a la característica experimental de derivaciones impuras. Tenga en cuenta que esto también puede suceder cuando se utilizan los recuperadores de Nixpkgs para obtener nuevos hashes cuando no se utiliza el método de hash falso, aunque ese mecanismo no está implementado en Nix en sí, sino en Nixpkgs que utiliza una derivación de salida fija. El comportamiento se introdujo en la versión 1.11 para que fuera coherente con el `pkgs.fetchurl` de Nixpkgs y para que `` funcionara en el entorno limitado del generador de derivaciones, que en ese entonces no tenía acceso a los paquetes de CA de forma predeterminada. Hoy en día, los paquetes de CA se montan mediante enlaces en Linux. Este problema se ha solucionado en Nix 2.18.8 y 2.24.8. Como workaround, implemente la obtención (autenticada) con `pkgs.fetchurl` desde Nixpkgs, usando `impureEnvVars` y `curlOpts` según sea necesario.