Unas palabras sobre ImageTragick (CVE-2016-3714)
Esta mañana temprano se supo de un bug crítico en ImageMagick, que rápidamente fue apodado ImageTragick. Transloadit es patrocinador y usuario desde hace mucho tiempo de ImageMagick, así que no sorprende que la gente tema que Transloadit pueda verse afectado por este bug. Francamente, nosotros también estábamos preocupados.
Hasta ahora no hemos podido explotar nuestro servicio con este bug, aunque el código del exploit todavía no se ha publicado. La investigación sigue en curso, pero podemos afirmar con cierto grado de certeza que no deberíamos vernos afectados. Incluso antes de que este bug de ImageMagick saliera a la luz, ya teníamos un sistema para verificar si un archivo que se presenta como imagen es, de hecho, realmente una imagen. Usamos un software llamado ExifTool para este propósito y debería ofrecer protección suficiente frente a cualquier exploit que use este bug.
Desde entonces lo hemos verificado con su autor, Phil Harvey, quien nos aseguró que
ExifTool analiza el inicio del archivo para determinar el tipo de archivo. Para la mayoría de los tipos esto es solo una comprobación de número mágico, como mencionaste, pero para algunos tipos sin número mágico se requiere cierto procesamiento. Exiftool usa la extensión únicamente como pista sobre la variedad concreta de archivo cuando hay múltiples tipos de archivo con el mismo formato (p. ej., ASF/WMV/WMA/DIVX o DOC/PPT/XLA).
Si el archivo no se reconoce, no se devuelve ningún MIMEType y ExifTool da un error «Unknown file type».
Así que, por ahora, además de las soluciones alternativas anunciadas, esta herramienta protegerá adecuadamente a Transloadit y podrás seguir usando nuestro servicio con seguridad.
Pero ¿y si dentro de uno o dos meses se descubren vulnerabilidades más graves en ImageMagick? O en ExifTool, para el caso.
Sin duda es motivo de preocupación. Cualquier herramienta tendrá, por supuesto, su buena cantidad de bugs y muchos bugs pueden ser explotados. Por lo general, estos bugs se corrigen rápidamente y se espera que los usuarios actualicen lo antes posible. Pero, de nuevo… Transloadit no siempre puede actualizar de inmediato, ya que necesitamos mantener la compatibilidad con versiones anteriores para nuestros usuarios. Lo ideal es mantener todo el software al día, mientras descontinuamos de forma progresiva las versiones antiguas y las seguimos soportando durante más tiempo, para que los clientes tengan la oportunidad de verificar y adaptarse a las nuevas versiones, en lugar de hacer actualizaciones repentinas de un día para otro.
Está claro que necesitamos limitar lo que nuestras herramientas pueden hacer (mal), para ganar tiempo en caso de que la próxima vulnerabilidad nos golpee con más fuerza.
Desde el inicio, hemos ejecutado nuestras herramientas con un usuario del sistema sin privilegios, que no tiene acceso a las claves secretas. Sin embargo, los atacantes seguirían estando en el sistema anfitrión. Esto significa que, si apareciera un exploit de root de día cero, estaríamos en problemas. Así que, si pudiéramos añadir más capas de seguridad, sería aún mejor.
Por eso, en paralelo a la evaluación de esta vulnerabilidad y al intento de desarrollar un exploit, distintos miembros del equipo han comenzado a trabajar en contenerizar nuestras herramientas de encoding. De esta forma, nuestras herramientas no tienen acceso a nada del sistema anfitrión, salvo a los archivos multimedia con los que necesitan trabajar. Esto incluso nos permitiría ejecutar herramientas vulnerables en producción sin dar a los atacantes la oportunidad de espiar a otros ni de causar daños graves de otras maneras.
Esto, por supuesto, llevará algo de tiempo y iremos desplegando el soporte de forma gradual.
Lamentablemente, la seguridad del 100 % es un mito, pero esperamos que te tranquilice saber que mantenemos Transloadit tan seguro como podemos. Si tienes más preguntas o inquietudes sobre este asunto, escríbenos sin dudarlo.
Actualización 2016-07-01: Hemos comprobado que, para ejecutar nuestras herramientas de encoding en contenedores de forma segura, queremos esperar hasta que podamos ejecutar Jobs puntuales sin requerir privilegios de sudo. Esto está en desarrollo. Mientras tanto, hemos finalizado y desplegado una gran actualización para que nuestras máquinas de encoding (que serían las más susceptibles a este tipo de ataques) ahora funcionen sin ningún secreto. Pueden tomar Jobs de una cola mediante acceso de solo lectura y exportarlos mediante acceso de solo anexado. Se han eliminado todos los demás secretos y privilegios.
Actualización 2016-08-02: Hemos estado trabajando con el investigador de seguridad Florian Courtial para añadir un filtrado adicional de imágenes SVG dañinas a las que todavía éramos susceptibles en algunos casos (aunque, dado que las máquinas de encoding ya se habían simplificado, no se podría haber causado ningún daño real).
