MagnoSec
Pantalla con código Java y alertas de seguridad representando la vulnerabilidad zero-day RCE en Fastjson para servidores Java

MagnoSec Blog

Zero-Day Crítico en Fastjson Permite RCE en Servidores Java: Sin Parche Disponible para Versiones Antiguas

Por Equipo MagnoSec6 min de lectura

Fastjson 1.x bajo ataque: RCE sin parche disponible, millones de servidores Java expuestos

La librería Java más ubicua que nunca has oído nombrar tiene un zero-day crítico y no hay parche disponible. Fastjson, la biblioteca de parsing JSON desarrollada por Alibaba y utilizada por millones de aplicaciones Java en todo el mundo —desde APIs REST empresariales hasta microservicios cloud y sistemas legacy de banca y administración pública—, tiene una vulnerabilidad de ejecución remota de código (RCE) que está siendo explotada activamente. El fallo afecta a todas las versiones de Fastjson 1.x, que dejaron de recibir soporte oficial pero siguen desplegadas en incontables aplicaciones en producción. La naturaleza del fallo —deserialización insegura— permite a un atacante enviar un objeto JSON malicioso que, cuando es procesado por Fastjson, ejecuta código arbitrario en el servidor Java sin necesidad de autenticación previa. La librería parsea el JSON malicioso, instancia clases Java no previstas por el desarrollador, y ejecuta comandos del sistema operativo con los privilegios de la aplicación Java. Es un ataque que convierte el formato de intercambio de datos más inofensivo —JSON— en un vector de compromiso total del servidor. Y para las versiones afectadas, no existe y no va a existir un parche. La única solución es migrar.

Qué es Fastjson y por qué está en prácticamente todas las aplicaciones Java empresariales

Fastjson es el parser JSON por defecto en innumerables proyectos Java, especialmente en el ecosistema empresarial chino (Alibaba, Ant Group, bancos, administración pública) pero también en aplicaciones occidentales que heredaron dependencias de proyectos que usaban Fastjson. Su popularidad se debe a su velocidad —es significativamente más rápido que Jackson o Gson para ciertos casos de uso— y a su integración con el ecosistema de frameworks Java empresariales. El problema es que muchas aplicaciones incluyen Fastjson 1.x como dependencia transitiva —una librería que usa otra librería que usa tu aplicación— sin que los desarrolladores sean conscientes de ello. Maven o Gradle descargan Fastjson automáticamente porque alguna dependencia del proyecto lo requiere, y nadie revisa si esa dependencia tiene vulnerabilidades conocidas. Millones de aplicaciones Java tienen Fastjson en su classpath sin que sus desarrolladores lo sepan. La combinación de ubicuidad, invisibilidad y falta de parche hace de esta vulnerabilidad uno de los riesgos más graves para el ecosistema Java en 2026.

Así funciona el exploit: deserialización insegura que convierte un JSON malicioso en ejecución de código

La explotación es técnicamente directa: el atacante envía una solicitud HTTP a un endpoint que acepta JSON —típicamente una API REST— con un payload que incluye una clave especial (@type en Fastjson) que le dice al parser qué clase Java debe instanciar para deserializar el objeto. El problema es que Fastjson 1.x permite especificar clases arbitrarias a través de esta clave, sin una lista blanca que restrinja qué clases pueden ser instanciadas. El atacante puede especificar una clase que, durante su construcción o inicialización, ejecute comandos del sistema. Por ejemplo, puede instanciar una clase que abra una shell reversa hacia su servidor de comando y control, que descargue y ejecute malware, o que simplemente ejecute un comando del sistema para crear un nuevo usuario administrador. El ataque no requiere interacción del usuario, no requiere credenciales —asumiendo que el endpoint de la API es público—, y no deja rastros obvios en los logs de la aplicación porque la solicitud parece una petición JSON normal y corriente. Solo un análisis profundo del payload revelaría la intención maliciosa, y la mayoría de las aplicaciones no registran los cuerpos completos de las solicitudes entrantes. Es un ataque sigiloso, automatizable y devastador.

El impacto: aplicaciones web, APIs, microservicios y sistemas legacy Java en riesgo sin posibilidad de parche

El impacto es masivo por tres razones. Primero, el volumen: millones de aplicaciones Java usan Fastjson, y una fracción significativa de ellas expone endpoints JSON a internet —APIs REST, webhooks, integraciones B2B—. Segundo, la falta de parche: para Fastjson 1.x, no hay actualización de seguridad disponible y el proyecto ha declarado oficialmente que no se publicarán más parches para la rama 1.x. La única solución es migrar a Fastjson 2.x, que no es compatible hacia atrás en todos los casos —requiere cambios de código, pruebas de regresión y despliegues coordinados—. Tercero, la dificultad de detección: como dependencia transitiva, Fastjson puede estar presente en aplicaciones sin que los equipos de desarrollo lo sepan. No aparece en el inventario de software. No se monitoriza su versión. No se aplican parches porque nadie sabe que está ahí. Es la tormenta perfecta para una vulnerabilidad: ubicua, invisible y sin solución sencilla. Los atacantes lo saben y están explotando activamente esta ventana de oportunidad. Cada día que una aplicación con Fastjson 1.x sigue expuesta a internet es un día en el que puede ser comprometida.

Cómo MagnoSec audita aplicaciones Java y detecta dependencias vulnerables en el pipeline de desarrollo

En MagnoSec, el análisis de dependencias y la detección de componentes vulnerables es una parte fundamental de nuestras auditorías de código fuente y pentesting de aplicaciones. Utilizamos herramientas de Software Composition Analysis (SCA) para generar un inventario completo de las dependencias de la aplicación, incluyendo las transitivas, y verificar si hay vulnerabilidades conocidas sin parchear. Fastjson 1.x es uno de los hallazgos más frecuentes en aplicaciones Java empresariales, y nuestra recomendación es siempre la misma: migrar a Fastjson 2.x, que tiene un mecanismo de auto-type checking que previene este tipo de ataques de deserialización. Durante la auditoría, también verificamos si la aplicación tiene habilitado el filtro de tipos (autoTypeFilter) como mitigación temporal mientras se completa la migración, aunque advertimos que estas mitigaciones son parches, no soluciones —un filtro mal configurado puede ser evadido por un atacante sofisticado—. Y evaluamos si la aplicación realmente necesita Fastjson: en muchos casos, Jackson o Gson ofrecen la misma funcionalidad sin el historial de vulnerabilidades de deserialización de Fastjson. La mejor dependencia vulnerable es la que no está en tu classpath.

Mitigación sin parche: migrar a Fastjson 2.x, aplicar filtros de serialización y desplegar WAF

La mitigación de esta vulnerabilidad requiere un enfoque por capas. Capa 1 —inmediata—: identificar todas las aplicaciones que utilizan Fastjson 1.x, ya sea como dependencia directa o transitiva. Herramientas como OWASP Dependency-Check, Snyk, Trivy o GitHub Dependabot pueden automatizar esta detección. Capa 2 —migración—: actualizar a Fastjson 2.x, que soluciona el problema de deserialización insegura mediante un mecanismo de allow-list de tipos. La migración requiere verificar la compatibilidad porque Fastjson 2.x no es 100% compatible con 1.x en todos los casos. Capa 3 —mitigación mientras se migra—: si no es posible migrar inmediatamente, configurar el filtro autoType de Fastjson para rechazar todas las clases excepto las estrictamente necesarias (modo deny-all con allow-list explícita). Esto reduce la superficie de ataque pero no la elimina —un filtro mal configurado o incompleto sigue siendo explotable—. Capa 4 —defensa en profundidad—: desplegar un WAF (Web Application Firewall) delante de las aplicaciones Java que inspeccione los cuerpos de las solicitudes JSON en busca de payloads de deserialización maliciosa. Un WAF correctamente configurado puede bloquear los intentos de explotación aunque la aplicación subyacente sea vulnerable. Capa 5 —monitorización—: implementar alertas para detectar la inclusión de dependencias con vulnerabilidades conocidas en el pipeline CI/CD. La seguridad de dependencias no es un evento puntual: es un proceso continuo. Cada nueva build debe verificar que no introduce dependencias vulnerables. La deuda técnica en dependencias se acumula con intereses compuestos: cada día que una dependencia vulnerable permanece sin parchear, el interés se paga en riesgo de compromiso.

Temas tratados

Fastjson · zero-day · RCE · Java · deserialización · vulnerabilidad · sin parche · dependencias

¿Quieres saber si tu empresa tiene estas vulnerabilidades?

Auditamos la seguridad de empresas de toda España con alcance cerrado por escrito, informe técnico y ejecutivo, y retest de las correcciones. Presupuesto en 24 horas y primera consultoría sin coste. Si no sabes por dónde empezar, haz el test de seguridad de 15 preguntas.

¿Quieres más información?