Entradas Mensuales

Síguenos en:

Canal Oficial Telegram de elhacker.NET Grupo Facebook elhacker.NET Twitter elhacker.NET Canal Youtube elhacker.NET Comunidad Steam: Grupo elhacker.NET Mastodon

Entradas populares

PostHeaderIcon Nueva vulnerabilidad de deserialización en trabajadores Ruby podría permitir el compromiso total del sistema


Se ha identificado una vulnerabilidad crítica de Ejecución Remota de Código (RCE) en un sistema de procesamiento de trabajos en segundo plano de Ruby. La falla proviene de una deserialización insegura de JSON, que permite que datos no confiables se transformen en objetos ejecutables. Este problema resalta los peligros ocultos de la deserialización en entornos Ruby, donde una sola línea de código puede llevar a un compromiso






Se ha identificado una vulnerabilidad crítica de Ejecución Remota de Código (RCE) en un sistema de procesamiento de trabajos en segundo plano de Ruby. El fallo proviene de la deserialización insegura de JSON, que permite convertir entradas no confiables en objetos ejecutables.

Este problema resalta los peligros ocultos de la deserialización en entornos Ruby, donde una sola línea de código puede llevar a una ejecución de comandos determinista dentro del contexto de un trabajador en segundo plano.

 

La vulnerabilidad tiene su origen en supuestos de confianza a nivel de diseño, en lugar de depender de cadenas de gadgets oscuras o corrupción de memoria. El problema surge cuando la aplicación confía en la gema Oj para el procesamiento de JSON.



 

Cuando una entrada no confiable se deserializa usando Oj.load, reconstruye objetos Ruby completamente funcionales, con métodos y acceso al sistema. Esto elimina la barrera entre datos y código, allanando el camino para un compromiso total del sistema.

Sistema de procesamiento de trabajos en segundo plano de Ruby (fuente: NullSecurityX)
Sistema de procesamiento de trabajos en segundo plano de Ruby (fuente: NullSecurityX)

Mecánica de la vulnerabilidad y explotación

El núcleo del problema reside en el patrón de trabajos en segundo plano de la aplicación, donde la entrada controlada por el usuario se almacena como carga útil JSON y luego se deserializa mediante un trabajador en segundo plano.

La línea crítica de código, data = Oj.load(job.payload), realiza deserialización de objetos en lugar de un simple análisis de JSON.

Según investigadores de NullSecurityX, Oj.load puede reconstruir objetos usando directivas JSON especiales, como {"^o": "ClassName"}.

Esto permite a un atacante asignar una instancia de clase, inyectar variables y devolver un objeto funcional.

Tipo de vulnerabilidadNivel de riesgoVector de ataque
Ejecución Remota de Código (RCE)CríticoDeserialización insegura de JSON
Inyección de objetosAltoDespacho dinámico basado en capacidades
Inyección de comandosCríticoCarga útil maliciosa en trabajos en segundo plano

Una vez que el objeto es reconstruido, la aplicación utiliza despacho dinámico basado en capacidades para evaluarlo. Si el objeto expone un método específico, como run_find, se autoriza su ejecución.

Este fallo de diseño se vuelve peligroso cuando una clase de utilidad, como Node, contiene un método inseguro que invoca Open3.capture3.

Un atacante puede crear una carga útil JSON que instruya a Oj.load a deserializar un objeto Node con argumentos maliciosos, como comandos de shell disfrazados de argumentos para el comando find.

La cadena de explotación es totalmente determinista y no requiere trucos de inyección. La carga útil se almacena, reconstruye y luego ejecuta, permitiendo que se ejecuten comandos de shell arbitrarios.

Esto permite a atacantes no autenticados tomar el control de los trabajadores en segundo plano, lo que a menudo resulta en un compromiso total del sistema.

ÁreaEstado / IndicadorDetalle claveMitigación / Nota
Ruby Oj (modo objeto)VulnerableDeserialización insegura con Oj.loadUsa Oj.safe_load o aplica análisis estricto
Cola de trabajos en segundo planoVulnerableAbuso de despacho dinámico con respond_to?Reemplaza con manejo explícito y codificado de trabajos
Patrón JSON maliciosoIOCInstanciación de objeto {"^o":"Node"}Indica intento de explotación
Ejecución sospechosa de procesosIOCfind / -maxdepth 0 -exec sh -cEjecución inesperada de shell desde el trabajador

Para mitigar esta vulnerabilidad, debes tratar la entrada serializada como hostil por defecto. NullSecurityX recomienda usar Oj.safe_load o modos de análisis estrictos para garantizar que los datos se manejen de forma segura.

Además, el despacho dinámico debe reemplazarse por un manejo explícito de trabajos, y debes evitar por completo la ejecución de comandos del sistema con argumentos controlados por el usuario.


Fuentes:
https://cybersecuritynews.com/deserialization-vulnerability-in-ruby/

0 comentarios :

Publicar un comentario

Los comentarios pueden ser revisados en cualquier momento por los moderadores.

Serán publicados aquellos que cumplan las siguientes condiciones:
- Comentario acorde al contenido del post.
- Prohibido mensajes de tipo SPAM.
- Evite incluir links innecesarios en su comentario.
- Contenidos ofensivos, amenazas e insultos no serán permitidos.

Debe saber que los comentarios de los lectores no reflejan necesariamente la opinión del STAFF.