Ya salió la última actualización programada de Firefox, que lleva al popular navegador alternativo a la versión 101.0.
Esto sigue a un mes con curiosas actualizaciones de Firefox 100, con la llegada de Firefox 100.0, al igual que Chromium 100 un mes antes, sin ningún problema causado por el cambio de un número de versión de dos dígitos a uno de tres dígitos.
A principios de 2022, cuando Chromium y Firefox se acercaron casualmente a sus siglos casi al mismo tiempo, parecía que al menos algunos sitios web importantes estaban extrayendo números de versión de forma incorrecta en ambos productos.
Algunos sitios, al parecer, buscaban en las cadenas de texto del User-Agent de los navegadores patrones que estaban programados para extraer sólo dos dígitos de información de la versión.
Como te puedes imaginar, al doblar tres dígitos en dos se produce un error parecido al del error del milenio, en el que 100 se convierte en 10 o en 00, dependiendo del extremo que se corte.
Tanto el 0 como el 10 representan números de versión de un tiempo muy lejano, con lo que se marca incorrectamente un navegador completamente nuevo como algo imprudentemente anticuado, lo que algunos sitios se niegan a aceptar.
Sin duda, en parte debido a los esfuerzos de los codificadores de Chromium de Google y de Firefox de Mozilla (que se combinaron para identificar los sitios web de mal comportamiento, e incluso prepararon “mecanismos de escape” de emergencia por los que sus navegadores respetuosos seguirían llamándose 99.algo cuando visitaran servidores web mal programados), la versión 100.0 de ambos navegadores transcurrió finalmente sin incidentes, pero Firefox siguió a su lanzamiento regular 100.0 con un lanzamiento de emergencia 100.0.1, que activó una nueva característica de seguridad de Windows que no había sido incluida en 100.0.
Nos preguntamos por qué esta nueva función, que llevaba mucho tiempo gestándose y que no estaba diseñada para solucionar una vulnerabilidad de seguridad específica que se sabía que iba a ser explotada, no se había guardado y lanzado como una nueva función en la versión 101.0 programada.
Actualización fuera de banda de Firefox a 100.0.1 ¿justo a tiempo para Pwn2Own?
Pero el hecho de que fuera sólo un par de días antes de la famosa competición de hacking Pwn2Own, en la que los concursantes se presentan con ordenadores muy actualizados en los que probar sus ataques, nos hizo suponer (o al menos adivinar) que Mozilla pensó que valía la pena sacar una versión oficial con protección adicional contra el hacking, por si acaso.
Sin embargo, finalmente, Firefox fue hackeado, en un bien preparado ataque de doble explotación que tomó sólo siete segundos para entrar en el navegador y luego salir de su cáscara protectora para un escape completo del sandbox.
Mozilla publicó la versión 100.0.2 en menos de 48 horas, con correcciones para estos dos fallos recién descubiertos.
Menos drama esta vez
No dudamos, por tanto, que el lanzamiento algo menos dramático de la versión 101.0, sin agujeros de seguridad de día cero corregidos, y sin parches considerados críticos, habrá sido una especie de alivio para el equipo de Mozilla.
En caso de que te lo estés preguntando, este fue el segundo lanzamiento completo de Firefox en el mes de mayo de 2022, que es el equivalente de Mozilla a una luna azul. (La luna no se vuelve azul en realidad, es sólo el apodo que se utiliza cuando hay una segunda luna llena en un mes del calendario).
Esto se debe a que las actualizaciones de Firefox están programadas para cada cuarto martes, es decir, una vez cada 28 días, en lugar de para un martes específico de cada mes, que es una vez cada 30,5 días aproximadamente.
Aunque ninguno de los errores corregidos en esta versión es crítico, hay numerosas correcciones de categoría alta, además de un puñado de moderadas, entre ellas:
- CVE-2022-31737: Desbordamiento de búfer de almacenamiento dinámico en WebGL. Una página web maliciosa con gráficos con trampa podía provocar un desbordamiento del búfer, lo que normalmente conduce a un fallo, o quizás incluso a la ejecución remota de código.
- CVE-2022-31738: Suplantación de ventanas del navegador utilizando el modo de pantalla completa. Se supone que las páginas web no pueden mostrar contenido fuera de los confines de su propia área de visualización, dejando así al propio navegador el control total de importantes componentes de la interfaz de usuario, como la barra de direcciones y los botones de navegación. Una página web que pudiera engañar al navegador para que escribiera en la parte incorrecta de la pantalla podría saltarse esta protección.
- CVE-2022-31739: Recorrido de rutas influenciado por el atacante al guardar archivos descargados. Cuando se especifica un nombre de archivo en Windows, algunos caracteres no siempre se tratan literalmente. Por ejemplo, un nombre de archivo de %HOMEPATH% no necesariamente se guarda bajo ese nombre de archivo letra por letra. A menos que “escapes” esos signos de porcentaje para mostrar que se refieren literalmente, el marcador especial %HOMEPATH% se reescribe y se sustituye por el nombre real de su directorio personal. Del mismo modo, %WINDIR% denota dónde está instalado Windows, independientemente del directorio elegido en el momento de la instalación. Los programas que aceptan nombres de archivos de fuentes no confiables, por lo tanto, deben tener cuidado de “escapar” los signos de porcentaje para que signifiquen exactamente lo que dicen (un carácter %), en lugar de desencadenar sigilosamente una reescritura que podría desviar un archivo de un directorio a otro.
- CVE-2022-31743: El análisis de HTML terminaba incorrectamente los comentarios de HTML de forma prematura. Cualquier cosa entre una cadena de texto de apertura de <!– y una de cierre –> es tratada como un comentario HTML, y es omitida cuando el archivo es realmente utilizado. El reconocimiento erróneo del final de un comentario podría llevar a que una página de aspecto inocente incluyera contenido que no debía aparecer, o a que se ejecutara un elemento de script aunque se supusiera que debía ser ignorado.
- CVE-2022-1919: Corrupción de memoria al manipular imágenes webp. Este fallo era esencialmente lo contrario de un use-after-free, que es cuando un programa devuelve un bloque de memoria para que pueda ser utilizado en otra parte del programa, pero sigue escribiendo en él de todos modos. Este error es lo que podríamos llamar un free-without-use, en el que Firefox intenta “devolver” la memoria que no se le ha dado en primer lugar. Esto podía llevar a un fallo, o incluso a la ejecución remota de código.
Además de estos fallos específicos, Mozilla también ha anunciado CVE-2022-31747 y CVE-2022-31748, números de vulnerabilidad que designan una serie de fallos generales de gestión de la memoria encontrados por el equipo de Firefox y sus herramientas automatizadas de búsqueda de fallos.
Estos errores no fueron examinados en detalle para ver cuáles podían ser realmente explotados, pero se asumió que eran potencialmente explotables y se arreglaron de todos modos.
El primero de ellos, CVE-2022-31747, denota errores corregidos tanto en la versión 101.0 como en la versión de soporte extendido 91.10 (nótese que 91+10 = 101).
Esto implica que esos errores han estado en la base de código de Firefox desde la versión 91 o incluso antes, dado que ESR 91.10 consiste en el código de Firefox 91.0 con todas las correcciones de seguridad provisionales aplicadas, pero sin añadir nuevas características.
Esta última designación, CVE-2022-31748, indica los errores corregidos sólo en la versión 101.0, y es un buen recordatorio de que las nuevas características tienden a traer nuevos errores, y ayuda a explicar por qué Mozilla mantiene su rama de producto ESR.
La versión ESR de Firefox es muy popular entre los administradores de redes que están dispuestos a esperar a que aparezcan nuevas características, pero no a costa de ejecutar un software que está anticuado desde el punto de vista de la seguridad.
¿Qué hacer?
Como de costumbre, ve a Ayuda > Acerca de Firefox para comprobar si estás al día, y para forzar una actualización si resulta que no lo estás.
(Los usuarios de Linux/Unix pueden tener que consultar su distro para las actualizaciones si instalaron originalmente Firefox a través de un paquete gestionado por la distro en lugar de descargar el propio instalador de Mozilla).