Metalama permite la ejecución local de código mediante la colocación de DLLs en directorios temporales compartidos
Resumen
Metalama cargaba y ejecutaba ensamblados en tiempo de compilación, herramientas ejecutables auxiliares y ensamblados asistentes integrados desde directorios temporales predecibles. En Linux y macOS, la ubicación predeterminada de la caché era el directorio temporal del sistema con permisos de escritura universal (Path.GetTempPath(), es decir, /tmp), y los artefactos generados previamente se consideraban confiables únicamente por la presencia de un archivo centinela o marcador .completed, sin verificación de integridad alguna.
Un usuario local sin privilegios en una máquina compartida o agente de CI/compilación puede crear de forma previa la estructura determinista de directorios de caché y colocar una DLL maliciosa junto con el archivo centinela correspondiente. Cuando un usuario con más privilegios (o una cuenta de compilación/servicio) ejecuta posteriormente una compilación, Metalama detecta el centinela, omite la regeneración y carga y ejecuta el ensamblado proporcionado por el atacante dentro del proceso del compilador, IDE o MSBuild.
Rutas de carga y ejecución afectadas:
- la caché de ensamblados en tiempo de compilación que Metalama genera a partir de sus aspectos;
- herramientas ejecutables auxiliares que Metalama extrae a un directorio local y luego inicia;
- ensamblados asistentes .NET integrados que Metalama extrae a un directorio local y carga en el proceso de compilación o IDE.
Impacto
Ejecución arbitraria de código en el contexto de seguridad del usuario que compila; es decir, una escalada local de privilegios entre cuentas de usuario en sistemas POSIX compartidos (máquinas de desarrollo multiusuario, agentes de CI/compilación). El atacante consigue la ejecución de código como la víctima sin disponer de sus privilegios, pudiendo leer código fuente o secretos, alterar el resultado de la compilación (inyección en la cadena de suministro) o interrumpir las compilaciones.
Configuraciones afectadas
- Linux y macOS, configuración predeterminada — afectadas. El valor predeterminado distribuido utiliza el directorio temporal del sistema con permisos de escritura universal.
- Windows, configuración predeterminada — no afectada. El directorio temporal predeterminado por usuario está protegido por las ACL del sistema operativo, por lo que no es posible la colocación de archivos entre usuarios.
- La variable de entorno
METALAMA_TEMPes un ajuste controlado por quien realiza el despliegue y está fuera de alcance: apuntarla a una ubicación insegura (por ejemplo, con permisos de escritura universal o controlada por un atacante) es un error de configuración del despliegue y no un defecto del producto.
Gravedad
CVSS v3.1: AV:L/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:H = 8.2 (High) para la configuración predeterminada de POSIX afectada (Scope:Changed refleja la escalada de privilegios entre usuarios).
Verificación cruzada de CVSS v4.0: CVSS:4.0/AV:L/AC:L/AT:P/PR:L/UI:P/VC:L/VI:H/VA:L/SC:L/SI:H/SA:H = 6.0 (Medium), que desglosa de manera más granular un impacto bajo sobre la propia caché y un impacto alto sobre el proceso de compilación posterior. El rango real se sitúa, por tanto, entre Medium y High en función del modelo de puntuación y la plataforma.
Debilidades
- CWE-377: Insecure Temporary File
- CWE-427: Uncontrolled Search Path Element
Paquetes afectados
- Metalama.Framework < 2026.1.19,
- Metalama.Tool < 2026.1.19
Seguimiento interno: metalama/Metalama#1650.
Qué hacer
Las cachés y los directorios de extracción se reubicaron del directorio temporal global del sistema a ubicaciones de datos de aplicación por usuario ($XDG_CACHE_HOME / ~/.cache/Metalama en POSIX), dependiendo de la propiedad por usuario garantizada por el SO como límite de confianza. Corregido en 2026.1.19.
Software afectado
Haz clic en una tecnología para ver todas sus vulnerabilidades.
| Plataforma | Paquete | Versiones vulnerables | Corregida en |
|---|---|---|---|
| .NET (NuGet) | Metalama.Framework | >= 2026.1.0-preview, < 2026.1.19, < 2025.1.18, >= 2026.0.0-preview, < 2026.0.25 | 2026.1.19, 2025.1.18, 2026.0.25 |
| .NET (NuGet) | Metalama.Tool | >= 2026.1.0-preview, < 2026.1.19, < 2025.1.18, >= 2026.0.0-preview, < 2026.0.25 | 2026.1.19, 2025.1.18, 2026.0.25 |
Referencias
- https://github.com/metalama/Metalama/security/advisories/GHSA-m6wq-39m7-9xpp
- https://github.com/metalama/Metalama/pull/1719
- https://github.com/metalama/Metalama/commit/09911349a916e82194b1cfaa6d0a38acad928fc9
- https://github.com/metalama/Metalama/commit/92c4feecfce86d18fcb007ab6d3a1b4383326a2e
- https://github.com/metalama/Metalama/commit/ab9407263203c66d7c5680a34c28dba31f9951c9
- https://github.com/metalama/Metalama
- Vector CVSS
CVSS:3.1/AV:L/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:H- Debilidad (CWE)
CWE-377, CWE-427- Plataforma
- .NET (NuGet)
- Paquete
Metalama.Framework, Metalama.Tool- Publicada
- 14.10.2026
- Actualizado
- 19.10.2026 08:00
Fuentes y licencias · Editado o traducido por DockRay; se mantienen los derechos y las licencias de las fuentes.
OSV / GitHub Advisory Database - GHSA-m6wq-39m7-9xpp - CC BY 4.0
Historial de vulnerabilidades: Metalama.Framework
Todas las vulnerabilidades publicadas de este paquete (.NET (NuGet)), de la más reciente a la más antigua. Muestra si es un fallo aislado o un paquete que hay que vigilar.
Esta es la única vulnerabilidad conocida de este paquete.
Identifica las vulnerabilidades de tu aplicación
Con la integración de DockRay y el inventario de software activado, DockRay compara las versiones notificadas de los componentes con las vulnerabilidades conocidas y avisa de las coincidencias confirmadas. La cobertura depende de la tecnología compatible y de los avisos disponibles.