CVE-2021-34371
Acerca de
Neo4j hasta 3.4.18 (con el shell server habilitado) expone un servicio RMI que deserializa arbitrariamente objetos Java, por ejemplo, a través de setSessionVariable. Un atacante puede abusar de esto para la ejecución remota de código porque existen dependencias con cadenas de gadgets explotables.
Análisis del analista Rainforest
Neo4j con el shell server habilitado expone un servicio RMI que deserializa cualquier objeto Java que se le entregue, por ejemplo a través de setSessionVariable. Esa es la trampa clásica de deserialización insegura: como existen cadenas de gadgets explotables en las dependencias, un atacante que pueda alcanzar el puerto RMI envía una carga útil serializada manipulada y obtiene ejecución remota de código en el host de la base de datos. No autenticado, remoto, sin interacción: la deserialización es todo el exploit.
Los fallos de deserialización de Java son una clase de ataque madura y con buenas herramientas; existen cargas útiles de cadenas de gadgets listas para usar y se reutilizan, así que la weaponización es rápida una vez que se encuentra un listener alcanzable. La precondición crítica, y es real, es que el shell server tiene que estar habilitado y su puerto RMI accesible. Eso reduce considerablemente la exposición —muchos despliegues no lo ejecutan—, pero cualquier instancia que sí lo haga, con el puerto en una red accesible, es un objetivo directo de RCE para cualquiera que rastree servicios RMI expuestos.
Para nosotros, esto es una búsqueda de accesibilidad y configuración más que un barrido de versiones. Identificaríamos las instancias de Neo4j en 3.4.18 o inferior, y luego verificaríamos las dos cosas que realmente lo condicionan: ¿está habilitado el shell server y ese puerto RMI está expuesto más allá de localhost o un segmento confiable? Un listener expuesto es una emergencia; un shell server deshabilitado o un puerto protegido por firewall hace caer la misma versión muy abajo en la lista. Bloquear el puerto RMI es un parche virtual inmediato donde la actualización se retrasa.
Referencias
CVEs Relacionadas
Preguntas frecuentes
¿Qué es CVE-2021-34371?
Neo4j hasta 3.4.18 (con el shell server habilitado) expone un servicio RMI que deserializa arbitrariamente objetos Java, por ejemplo, a través de setSessionVariable. Un atacante puede abusar de esto para la ejecución remota de código porque existen dependencias con cadenas de gadgets explotables.
¿Qué tan grave es CVE-2021-34371?
CVE-2021-34371 tiene una puntuación base CVSS 3.1 de 9.8, calificada como critical. En el Rainforest Risk Index — que pondera la gravedad junto con lo fácil que es alcanzar la falla y la amplitud de su impacto — obtiene 99 sobre 100, en la banda crítico.
¿Cómo se explota CVE-2021-34371?
Según el vector CVSS (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H): vector de ataque Red, complejidad de ataque Baja, privilegios necesarios Ninguno, interacción del usuario Ninguna. Impacto en confidencialidad Alto, integridad Alto y disponibilidad Alto.
¿Qué productos afecta CVE-2021-34371?
Los avisos públicos listan como afectados: neo4j. Consulta las referencias de esta página para las versiones exactas que confirma cada proveedor.
¿Cómo se corrige CVE-2021-34371?
Aplica la corrección publicada por el proveedor — las referencias de esta página enlazan a los avisos y parches originales. Cuando no se pueda parchear de inmediato, reduce la exposición del componente afectado y vigila los intentos de explotación. Los clientes de Rainforest ven esta vulnerabilidad correlacionada con sus propios activos y priorizada por la exposición real, no solo por la puntuación.
Potencia tu estrategia de seguridad con Rainforest
Descubre vulnerabilidades a tiempo, prioriza amenazas críticas y protege lo que realmente importa. Rainforest simplifica tus operaciones de seguridad, ahorrando tiempo y reduciendo costos, para que te enfoques en lo que impulsa tu negocio.
