El equipo de Ruby on Rails ha emitido una alerta de seguridad sobre una vulnerabilidad crítica que afecta a Active Storage, el componente que gestiona las cargas de archivos. Un atacante no autenticado podría escribir archivos arbitrarios en el servidor si la aplicación procesa las subidas con ImageMagick. La falla ha sido corregida en las versiones 8.1.4.1 y 8.0.5.2, según el aviso oficial.
El problema reside en cómo Active Storage invoca a ImageMagick. Al adjuntar un archivo, el analizador de ImageMagick se ejecuta automáticamente, sin necesidad de crear variantes ni vistas previas. ImageMagick selecciona un 'coder' (manejador de formato) basado en el contenido del archivo, y algunos coders actúan sobre otros archivos referenciados dentro de la imagen. Active Storage no restringe los coders que puede utilizar una carga, por lo que la política de seguridad de ImageMagick del servidor era el único límite. Según el commit que corrigió el fallo, un archivo SVG malicioso llegó al coder MSL, un intérprete de scripts que lee y escribe archivos nombrados en el script. Esto permitió la escritura arbitraria de archivos.
La vulnerabilidad, identificada como GHSA-f3w6-w445-fwh9 y aún sin CVE asignado, tiene una puntuación CVSS de 9.8 sobre 10. Las aplicaciones que almacenan archivos con el servicio Disk de Active Storage también podrían permitir a un atacante leer cualquier archivo accesible por la aplicación, incluida la clave secret_key_base y credenciales para otros sistemas, lo que a su vez podría facilitar la ejecución remota de código o el movimiento lateral. Rails indicó que se ha reportado una cadena de ataque, pero no asume que sea la única. La falla fue reportada a través de HackerOne por RyotaK, investigador de GMO Flatt Security.
Aplicaciones afectadas
Una aplicación es vulnerable solo si cumple tres condiciones simultáneas: utiliza ImageMagick para el procesamiento de imágenes de Active Storage (config.active_storage.variant_processor = :mini_magick, valor predeterminado para aplicaciones con load_defaults 6.1 o anterior); su política de seguridad de ImageMagick no bloquea los coders implicados (Rails afirma que las políticas de Debian y Ubuntu no lo hacen); y acepta cargas de archivos de usuarios no confiables. Para verificar la primera condición, revise config.active_storage.variant_processor. Si no está establecida, el valor predeterminado depende de load_defaults: :mini_magick antes de 7.0, y :vips a partir de 7.0. Esta misma configuración decide qué biblioteca analiza las cargas, no solo cuál crea las variantes.
Todas las versiones de Active Storage anteriores a 8.0.5.2 están afectadas, al igual que las versiones 8.1 anteriores a 8.1.4.1. Las series de versiones anteriores a la 8.0 ya no tienen soporte y Rails no publicará versiones corregidas para ellas. En julio, Rails corrigió otra vulnerabilidad crítica en Active Storage, CVE-2026-66066, que afectaba a aplicaciones que utilizan libvips en lugar de ImageMagick. Las aplicaciones que usan ImageMagick no estaban expuestas a la ruta de ataque de esa vulnerabilidad, pero sí pueden estarlo a esta.
Las mismas versiones corrigen una segunda vulnerabilidad en Active Storage, GHSA-v924-7rp8-4mxh, calificada como alta con CVSS 8.8. Active Storage pasaba las cargas a ImageMagick y FFmpeg con nombres de archivo temporales que conservaban la extensión del archivo subido. Esas herramientas pueden seleccionar un decodificador a partir de la extensión cuando el contenido del archivo no revela su formato. Por lo tanto, un atacante que eligiera el nombre de archivo de una carga y declarara su tipo de contenido podría escoger el decodificador que lo procesa.
Recomendaciones
Rails recomienda encarecidamente actualizar lo antes posible. Las dos versiones corrigen un total de 21 problemas de seguridad. Las versiones corregidas incluyen una política de seguridad de ImageMagick. MiniMagick es la gema de Ruby que Active Storage utiliza para llamar a ImageMagick. En su configuración predeterminada, todos los comandos de ImageMagick que ejecuta aplican la política, no solo los comandos de Active Storage. La política bloquea el coder MSL; los coders que leen o eliminan archivos distintos de la imagen; los coders que obtienen referencias remotas o locales o las muestran en pantalla; todos los coders respaldados por Ghostscript, junto con el delegado gs; y la indirección @filename.
- Actualice a Rails 8.1.4.1 o 8.0.5.2. Las aplicaciones con :mini_magick también necesitan mini_magick 5.1 o posterior, o de lo contrario generarán un error al arrancar. Rails 8.0 solo recibe correcciones de seguridad hasta el 7 de noviembre de 2026, según su política de mantenimiento.
- Confirme que la aplicación carga la nueva política, como se describe en la guía de Active Storage, ejecutando bin/rails runner 'puts MiniMagick.identify { |i| i.list "policy" }'.
- Compruebe si la política incluida llega realmente a la aplicación. No llega a una aplicación que reemplaza MiniMagick.cli_env después del arranque, borra el entorno con MiniMagick.cli_prefix o instala su propio MiniMagick::Shell. Dicha aplicación debe incluir las reglas en la política del sistema de ImageMagick.
- Las aplicaciones que utilizan GraphicsMagick no obtienen protección de la política incluida, porque GraphicsMagick no lee las políticas de ImageMagick.
- Revise la política de ImageMagick del propio servidor. La política incluida se suma a ella en lugar de reemplazarla. Una regla que permita un coder, incluida una comodín como pattern="*", anula el bloqueo de la política incluida sobre ese coder.
- Si la aplicación renderiza archivos PDF o PostScript a través de ImageMagick, vuelva a permitir el delegado gs y los coders que utiliza en el policy.xml del servidor.
- Si aún no puede actualizar, copie las reglas de la política incluida, activestorage/lib/active_storage/image_magick/policy.xml, en la política del sistema de ImageMagick, como /etc/ImageMagick-7/policy.xml. Como mínimo, bloquee el coder MSL, los coders de Ghostscript y el delegado gs. Rails también publicó la corrección como parches para 8.1 y 8.0.
- Las aplicaciones en series de versiones anteriores a la 8.0 pueden utilizar ese workaround o actualizar a 8.0 o posterior.
- Los workarounds de Rails para la segunda vulnerabilidad solo cambian cómo se utiliza FFmpeg. Ninguno de ellos cubre ImageMagick.
- Si la aplicación almacena archivos adjuntos con el servicio Disk, cambie secret_key_base y todos los demás secretos que el proceso de la aplicación pueda leer. Eso incluye la clave maestra, todo lo que contiene config/credentials.yml.enc, las credenciales de almacenamiento y base de datos, y los tokens de terceros. No mantenga un secreto expuesto como respaldo.
El aviso no explica cómo comprobar si una aplicación ya ha sido atacada.



















Deja una respuesta