Descripción
Elo es un lenguaje de expresiones puramente funcional para herramientas no-code. En versiones anteriores a la 1.0.1, el backend Ruby en src/compilers/ruby.ts incrusta texto controlado por el atacante en cadenas Ruby entre comillas dobles sin escapar #, por lo que las formas de interpolación de Ruby en el emisor de literales de cadena o en la rama de restricciones de subtipo etiquetadas se convierten en código Ruby ejecutable. Los puntos de entrada afectados incluyen el playground /try con el destino Ruby, bin/eloc -t ruby -x, y defaultFormats.elo.parse() seguido de la emisión en Ruby. Una restricción de subtipo etiquetada que falla evalúa su mensaje, mientras que un literal de cadena ordinario se evalúa cuando se ejecuta el código Ruby compilado, lo que permite la ejecución de código Ruby y de comandos de shell mediante comillas invertidas. La emisión en JavaScript, Python y SQL no se ve afectada por esta ruta específica de Ruby. Este problema está corregido en la versión 1.0.1.
Qué hacer
Revisa si usas el producto afectado y en qué versión, y aplica la actualización o la mitigación que indique el aviso del fabricante. CISA no ha confirmado que se esté explotando; si eso cambia, esta ficha pasa a «explotada» y te avisamos en el boletín.
Versiones afectadas
- elo Afectadas: < 1.0.1
Según el registro de la vulnerabilidad en CVE.org, tal como lo publicó el fabricante. Confirma tu versión exacta en el aviso del fabricante.
Referencias
- Referencia en github.comgithub.com/enspirit/elo/security/advisories/GHSA-7w38-ggh5-v542
- Referencia en github.comgithub.com/enspirit/elo/commit/51b869963fbe445c18328714a7ccfbd76b21ba…
- Referencia en github.comgithub.com/enspirit/elo/commit/d2a89a8db76a244eb740687524a7e8529b7554…
Ver el texto original en inglés (CVE.org)
Elo: Remote Code Execution in Elo Ruby backend via unescaped `#{...}` interpolation in emitted string literals and subtype-constraint labels
Elo is a purely functional expression language for no-code tools. Prior to 1.0.1, the Ruby backend in src/compilers/ruby.ts embeds attacker-controlled text in Ruby double-quoted strings without escaping #, so Ruby interpolation forms in the string-literal emitter or the labelled subtype-constraint branch become executable Ruby. The affected entry points include the /try playground with the Ruby target, bin/eloc -t ruby -x, and defaultFormats.elo.parse() followed by Ruby emission. A failing labelled subtype constraint evaluates its message, while an ordinary string literal is evaluated when the compiled Ruby runs, allowing Ruby code and shell command execution through backticks. JavaScript, Python, and SQL emission are not affected by this Ruby-specific path. This issue is fixed in version 1.0.1.