Seguridad · 2 de noviembre de 2026
También publicado en English, 한국어, Indonesia, Русский, العربية, עברית, हिन्दी, Français, Italiano, Svenska, Norsk, Polski
Errores en el motor de expresiones regulares de Ruby causan vulnerabilidades críticas en GitLab
El equipo de Ruby ha lanzado las versiones 4.0.9, 3.4.12 y 3.3.13 para corregir tres errores en el motor de expresiones regulares Onigmo. Estas fallas podrían permitir la ejecución de código malicioso en los servidores afectados.
El caso más destacado de estas vulnerabilidades se ha manifestado en GitLab, un servicio basado en Ruby. El problema afecta a cualquier aplicación de Ruby que genere expresiones regulares a partir de entradas externas. Según el equipo de Ruby, los usuarios que utilicen patrones escritos por ellos mismos no están en riesgo, ya que los errores ocurren durante la compilación del patrón en un programa interno, antes de que se aplique el cotejo al texto.
En el caso de GitLab, el servicio compila expresiones regulares provenientes de entradas de usuario, como las configuraciones de CI/CD. El investigador de seguridad Johan Carlsson reportó cuatro vulnerabilidades a través de un programa de recompensas por errores. Estas incluyen las CVE-2026-89078 y CVE-2026-93577, con un valor CVSS de 9,9, así como las CVE-2026-97229 y CVE-2026-110264, que alcanzan la puntuación máxima de 10,0 y pueden explotarse sin autenticación. GitLab solucionó estos fallos entre el 23 de septiembre y el 21 de octubre mediante parches aplicados al Ruby incluido, afectando a todas las versiones de GitLab desde la 7.0 del año 2014.
El equipo de Ruby vincula estas cuatro CVE a tres errores específicos. La CVE-2026-89078 se debe a una liberación doble de memoria al leer un patrón. Las CVE-2026-93577 y CVE-2026-97229 resultan de un desbordamiento de enteros al calcular el tamaño del programa compilado. Finalmente, la CVE-2026-110264 es causada por un desbordamiento de contadores internos en patrones con demasiadas repeticiones.
Ninguna de las tres correcciones es nueva. La liberación doble de memoria fue corregida en la rama de desarrollo en mayo de 2025 y llegó a una versión final en Ruby 4.0.0. La corrección para los contadores de la CVE-2026-110264 se realizó en abril de 2026, y la del tamaño del programa en septiembre de 2026. Estas últimas llegaron a las versiones finales recientemente: Ruby 4.0.8 incluyó la corrección del tamaño el 22 de octubre como parte de una actualización rutinaria, mientras que la versión 4.0.9 apareció un día después con la última corrección. Las ramas estables 3.4 y 3.3 recibieron las tres correcciones simultáneamente. Ruby 3.3 recibió esta actualización como una excepción debido a las CVE asignadas por GitLab, mientras que las versiones 3.2 y anteriores ya no cuentan con soporte.
En el peor escenario, un atacante podría ejecutar código con los permisos del proceso de Ruby, accediendo a bases de datos, secretos del entorno y al sistema de archivos. No obstante, es más probable que un intento individual provoque la caída del proceso, resultando en un ataque de denegación de servicio sin necesidad de autenticación. Ni GitLab ni Ruby han reportado ataques activos hasta el momento.