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

Vulnerabilidad en Apollo Router Core (CVE-2024-43783)

Gravedad CVSS v3.1:
ALTA
Tipo:
No Disponible / Otro tipo
Fecha de publicación:
27/08/2024
Última modificación:
12/09/2024

Descripción

Apollo Router Core es un enrutador de gráficos configurable y de alto rendimiento escrito en Rust para ejecutar un supergrafo federado que utiliza Apollo Federation 2. Las instancias del enrutador Apollo que ejecutan versiones >=1.21.0 y <1.52.1 se ven afectadas por una denegación de vulnerabilidad del servicio si _todo_ lo siguiente es verdadero: 1. El enrutador Apollo se ha configurado para admitir [coprocesamiento externo] (https://www.apollographql.com/docs/router/customizations/coprocessor). 2. El enrutador Apollo se ha configurado para enviar cuerpos de solicitud a los coprocesadores. Esta es una configuración no predeterminada y los administradores deben configurarla intencionalmente. Las instancias del enrutador Apollo que ejecutan las versiones >=1.7.0 y <1.52.1 se ven afectadas por una vulnerabilidad de denegación de servicio si se cumple todo lo siguiente: 1. El enrutador se ha configurado para utilizar un complemento Native Rust desarrollado a medida. 2. El complemento accede a Request.router_request en la capa RouterService. 3. Estás acumulando el cuerpo de Request.router_request en la memoria. Si utiliza una configuración afectada, el enrutador cargará cuerpos completos de solicitudes HTTP en la memoria sin respetar otras configuraciones que limitan el tamaño de las solicitudes HTTP, como limites.http_max_request_bytes. Esto puede provocar que el enrutador finalice por falta de memoria (OOM) si se envía una solicitud suficientemente grande al enrutador. De forma predeterminada, el enrutador establece límites.http_max_request_bytes en 2 MB. Si tiene una configuración afectada como se define anteriormente, actualice al menos a Apollo Router 1.52.1. Si no puede actualizar, puede mitigar la oportunidad de denegación de servicio que afecta a los coprocesadores externos configurando la opción de configuración coprocessor.router.request.body en falso. Tenga en cuenta que cambiar esta opción de configuración cambiará la información enviada a cualquier coprocesador que haya configurado y puede afectar la funcionalidad implementada por esos coprocesadores. Si ha desarrollado un complemento Native Rust y no puede actualizarlo, puede actualizar su complemento para no acumular el cuerpo de la solicitud o imponer un límite máximo de tamaño del cuerpo. También puede mitigar este problema limitando los tamaños de carga útil del cuerpo HTTP antes del enrutador (por ejemplo, en un proxy o dispositivo de firewall de aplicaciones web).

Productos y versiones vulnerables

CPE Desde Hasta
cpe:2.3:a:apollographql:apollo-router:*:*:*:*:*:rust:*:* 1.7.0 (incluyendo) 1.52.1 (excluyendo)
cpe:2.3:a:apollographql:apollo_helms-charts_router:*:*:*:*:*:*:*:* 1.7.0 (incluyendo) 1.52.1 (excluyendo)
cpe:2.3:a:apollographql:apollo_router:*:*:*:*:*:*:*:* 1.7.0 (incluyendo) 1.52.1 (excluyendo)