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

Vulnerabilidad en Argo CD (CVE-2024-22424)

Gravedad CVSS v3.1:
ALTA
Tipo:
CWE-352 Falsificación de petición en sitios cruzados (Cross-Site Request Forgery)
Fecha de publicación:
19/01/2024
Última modificación:
07/08/2024

Descripción

Argo CD es una herramienta declarativa de entrega continua de GitOps para Kubernetes. La API de Argo CD anterior a las versiones 2.10-rc2, 2.9.4, 2.8.8 y 2.7.15 es vulnerable a un ataque de cross-server request forgery (CSRF) cuando el atacante tiene la capacidad de escribir HTML en una página del mismo dominio principal que Argo CD. Un ataque CSRF funciona engañando a un usuario autenticado de Argo CD para que cargue una página web que contiene código para llamar a los endpoints de la API de Argo CD en nombre de la víctima. Por ejemplo, un atacante podría enviar a un usuario de Argo CD un enlace a una página que parece inofensiva pero que en segundo plano llama a un endpoint de la API de Argo CD para crear una aplicación que ejecute código malicioso. Argo CD utiliza la política de cookies "Lax" de SameSite para evitar ataques CSRF en los que el atacante controla un dominio externo. El sitio web externo malicioso puede intentar llamar a la API de Argo CD, pero el navegador web se negará a enviar el token de autenticación de Argo CD con la solicitud. Muchas empresas alojan Argo CD en un subdominio interno. Si un atacante puede colocar código malicioso, por ejemplo, en https://test.internal.example.com/, aún puede realizar un ataque CSRF. En este caso, la cookie SameSite "Lax" no impide que el navegador envíe la cookie de autenticación, porque el destino es un dominio principal de la API de Argo CD. Los navegadores generalmente bloquean este tipo de ataques aplicando políticas CORS a solicitudes confidenciales con tipos de contenido confidenciales. Específicamente, los navegadores enviarán una "solicitud de verificación previa" para POST con tipo de contenido "application/json" preguntando a la API de destino "¿puede aceptar solicitudes de mi dominio?" Si la API de destino no responde "sí", el navegador bloqueará la solicitud. Antes de las versiones parcheadas, Argo CD no validaba que las solicitudes incluyeran el encabezado del tipo de contenido correcto. Por lo tanto, un atacante podría eludir la verificación CORS del navegador configurando el tipo de contenido en algo que se considere "no sensible", como "texto/plano". El navegador no enviaría la solicitud de verificación previa y Argo CD aceptaría felizmente el contenido (que en realidad sigue siendo JSON) y realizaría la acción solicitada (como ejecutar código malicioso). Se lanzó un parche para esta vulnerabilidad en las siguientes versiones de Argo CD: 2.10-rc2, 2.9.4, 2.8.8 y 2.7.15. El parche contiene un cambio importante en la API. La API de Argo CD ya no aceptará solicitudes que no sean GET y que no especifiquen application/json como tipo de contenido. La lista de tipos de contenido aceptados es configurable y es posible (pero desaconsejado) desactivar completamente la verificación del tipo de contenido. Se recomienda a los usuarios que actualicen. No se conocen workarounds para esta vulnerabilidad.

Productos y versiones vulnerables

CPE Desde Hasta
cpe:2.3:a:argoproj:argo_cd:*:*:*:*:*:*:*:* 2.8.0 (incluyendo) 2.8.8 (excluyendo)
cpe:2.3:a:argoproj:argo_cd:*:*:*:*:*:*:*:* 2.9.0 (incluyendo) 2.9.4 (excluyendo)
cpe:2.3:a:argoproj:argo_cd:2.10.0:rc1:*:*:*:*:*:*
cpe:2.3:a:linuxfoundation:argo-cd:*:*:*:*:*:*:*:* 0.1.0 (incluyendo) 2.7.16 (excluyendo)