Vulnerabilidad en Apollo Router (CVE-2024-32971)
Gravedad CVSS v3.1:
CRÍTICA
Tipo:
No Disponible / Otro tipo
Fecha de publicación:
02/05/2024
Última modificación:
02/05/2024
Descripción
Apollo Router es un router de gráficos configurable escrito en Rust para ejecutar un supergrafo federado que utiliza Apollo Federation 2. Las versiones afectadas de Apollo Router contienen un error que, en circunstancias limitadas, podría provocar la ejecución de operaciones inesperadas que pueden generar datos no deseados o efectos. Esto solo afecta a las instancias del router configuradas para utilizar el almacenamiento en caché del plan de consultas distribuidas. La causa principal de este defecto es un error en la lógica de recuperación de caché del router Apollo: cuando este defecto está presente y el almacenamiento en caché de planificación de consultas distribuidas está habilitado, se solicita al router que ejecute una operación (ya sea una consulta, una mutación o una suscripción). puede resultar en una variación inesperada de esa operación que se ejecuta o en la generación de errores inesperados. El problema surge de la ejecución inadvertida de una versión modificada de una operación ejecutada previamente, cuyo plan de consulta se almacena en la memoria caché subyacente (específicamente, Redis). Dependiendo del tipo de operación, el resultado puede variar. Para una consulta, es posible que se obtengan resultados que no coincidan con lo solicitado (por ejemplo, en lugar de ejecutar `fetchUsers(type: ENTERPRISE)`, el router puede ejecutar `fetchUsers(type: TRIAL)`. Para una mutación, esto puede resultar en mutaciones incorrectas que se envían a servidores de subgrafos subyacentes (por ejemplo, en lugar de enviar `deleteUser(id: 10)` a un subgrafo, el router puede ejecutar `deleteUser(id: 12)`. Se recomienda a los usuarios que utilicen el almacenamiento en caché de planes de consulta distribuidos que actualicen a la versión 1.45.1 o superior, o bien que reduzcan a la versión 1.43.2 del router Apollo. No se recomienda el uso de las versiones 1.44.0 o 1.45.0 del router Apollo y se han retirado. Los usuarios que no puedan actualizar pueden desactivar el almacenamiento en caché del plan de consultas distribuidas para mitigar este problema.
Impacto
Puntuación base 3.x
9.00
Gravedad 3.x
CRÍTICA
Referencias a soluciones, herramientas e información
- https://github.com/apollographql/router/commit/ff9f666598cd17661880fe7fc6e9c9611316e529
- https://github.com/apollographql/router/releases/tag/v1.45.1
- https://github.com/apollographql/router/security/advisories/GHSA-q9p4-hw9m-fj2v
- https://www.apollographql.com/docs/router/configuration/distributed-caching/#distributed-query-plan-caching