Google ha lanzado la versión 104 de su navegador web Chrome. Al mismo tiempo, está disponible la versión estable del proyecto de código abierto Chromium, que sirve de base para Chrome. El navegador Chrome se diferencia de Chromium por el uso de los logotipos de Google, la existencia de un sistema de notificación en caso de fallo, módulos para la reproducción de contenido de video protegido contra copia (DRM), un sistema de actualización automática, la inclusión constante de aislamiento Sandbox, el suministro de claves para la API de Google y la transmisión de parámetros RLZ durante la búsqueda. Para aquellos que necesitan más tiempo para actualizar, se mantiene una rama Extended Stable, que se acompaña durante 8 semanas. La próxima versión de Chrome 105 está programada para el 30 de agosto.
Principales cambios en Chrome 104:
- Se ha introducido un tiempo de vida máximo para las cookies: todas las nuevas o actualizadas serán eliminadas automáticamente después de 400 días de existencia, incluso si el tiempo de caducidad establecido a través de los atributos Expires y Max-Age supera los 400 días (para tales cookies, la vida útil se reducirá a 400 días). Las cookies creadas antes de la introducción de esta restricción mantendrán su tiempo de vida, incluso si supera los 400 días, pero estarán limitadas en caso de actualización. Este cambio refleja los nuevos requisitos establecidos en el borrador de la nueva especificación.
- Se ha habilitado el bloqueo de solicitudes desde iframes a URLs que hacen referencia al sistema de archivos local («filesystem://»).
- Para acelerar la carga de la página, se ha añadido una nueva optimización que establece la conexión con el host destino en el momento de hacer clic en el enlace, sin esperar a soltar el botón o levantar el dedo de la pantalla táctil.
- Se han añadido configuraciones para gestionar la API «Topics & Interest Group», promovida en el marco de la iniciativa Privacy Sandbox y que permite definir categorías de interés del usuario y utilizarlas en lugar de las cookies de seguimiento para identificar grupos de usuarios con intereses similares sin identificar a usuarios individuales. Además, se han añadido diálogos informativos que se muestran una vez, explicando al usuario la esencia de la tecnología y ofreciendo activar su soporte en la configuración.
- Se han incrementado los valores umbral para limitar las llamadas anidadas de los temporizadores setTimeout y setInterval que se inician con un intervalo de menos de 4 ms («setTimeout(…, <4ms)»). El límite total para tales llamadas se ha aumentado de 5 a 100, lo que permite no restringir agresivamente las llamadas individuales, pero al mismo tiempo evita abusos que pueden afectar el rendimiento del navegador.
- Se ha habilitado el envío al servidor del sitio principal de una solicitud de confirmación de permisos CORS (Cross-Origin Resource Sharing) con el encabezado «Access-Control-Request-Private-Network: true» en caso de que una página acceda a un sub-recurso en una red interna (192.168.x.x, 10.x.x.x, 172.16-31.x.x) o a localhost (127.x.x.x). Al confirmar la operación en respuesta a esta solicitud, el servidor debe devolver el encabezado «Access-Control-Allow-Private-Network: true». En la versión 104 de Chrome, el resultado de la confirmación aún no afecta el manejo de la solicitud: si no hay confirmación, se muestra una advertencia en la consola web, pero la solicitud del sub-recurso no se bloquea. Se espera que la inclusión del bloqueo en caso de ausencia de confirmación no llegue antes de la versión 107 de Chrome. Para habilitar el bloqueo en versiones anteriores, se puede activar la configuración «chrome://flags/#private-network-access-respect-preflight-results». servidores La inclusión del bloqueo no se espera antes de la versión 107 de Chrome. Para habilitar el bloqueo en versiones anteriores, se puede activar la configuración «chrome://flags/#private-network-access-respect-preflight-results».
Confirmación de derechos el servidor se ha introducido para mejorar la protección contra ataques relacionados con el acceso a recursos en la red local o en el ordenador del usuario (localhost) desde scripts cargados al abrir el sitio web. Tales solicitudes son utilizadas por los atacantes para llevar a cabo ataques CSRF en enrutadores, puntos de acceso, impresoras, interfaces web corporativas y otros dispositivos y servicios que aceptan solicitudes solo desde la red local. Para protegerse contra tales ataques, en caso de que se acceda a cualquier sub-recurso en la red interna, el navegador enviará una solicitud explícita de autorización para cargar esos sub-recursos.
- Se ha añadido el mecanismo Region Capture, que permite recortar contenido innecesario de los vídeos generados a partir de la captura de pantalla. Por ejemplo, utilizando la API getDisplayMedia, una aplicación web puede organizar la transmisión de vídeo con el contenido de la pestaña, y Region Capture permite eliminar una parte del contenido que incluye elementos de control de videoconferencia.
- Se ha añadido soporte para una nueva sintaxis de consultas de medios definida en la especificación Media Queries Level 4, que determina el tamaño mínimo y máximo del área visible (viewport). La nueva sintaxis permite utilizar operadores matemáticos de comparación y operadores lógicos como «not», «or» y «and». Por ejemplo, en lugar de «@media (min-width: 400px) { … }», ahora se puede especificar «@media (width >= 400px) { … }».
- En el modo Origin Trials (funcionalidades experimentales que requieren activación por separado) se han añadido varias API nuevas. El Origin Trial implica la posibilidad de trabajar con la API especificada desde aplicaciones cargadas desde localhost o 127.0.0.1, o tras registrarse y obtener un token especial que tiene una duración limitada para un sitio específico.
- Se ha añadido la propiedad CSS «focusgroup» para mejorar la navegación a través de los elementos utilizando las teclas de flecha del teclado.
- En la API de Confirmación de Pago Seguro se proporciona la posibilidad de que el usuario desactive el almacenamiento de parámetros de tarjetas de crédito. Para mostrar el diálogo que permite rechazar el almacenamiento de parámetros de tarjetas de crédito, en el constructor PaymentRequest() se ha previsto el flag «showOptOut: true».
- Se ha añadido la API de Transiciones de Elementos Compartidos, que permite organizar una transición suave entre diferentes vistas de contenido en aplicaciones web de una sola página.
- Se ha estabilizado el soporte para las reglas especulativas (Speculation rules), que permiten a los autores de sitios transmitir al navegador información sobre las páginas más probables a las que el usuario puede navegar. El navegador utiliza esta información para la precarga y renderización anticipada del contenido de las páginas.
- Se ha estabilizado el mecanismo de empaquetado de subrecursos en paquetes en formato Web Bundle, que permite aumentar la eficiencia de carga de un gran número de archivos relacionados (CSS, JavaScript, imágenes, iframe). A diferencia de los paquetes en formato Webpack, el formato Web Bundle tiene las siguientes ventajas: en la caché HTTP no se almacena el paquete en sí, sino sus componentes; la compilación y ejecución de JavaScript comienza sin esperar la carga completa del paquete; se permite la inclusión de recursos adicionales, como CSS e imágenes, que en webpack debían estar codificados como cadenas de JavaScript.
- Se ha añadido la propiedad CSS object-view-box, que permite definir la parte de la imagen que se mostrará en el área en lugar del elemento designado, lo que se puede usar, por ejemplo, para agregar un marco o sombra.
- Se ha añadido la API de Delegación de Capacidad de Pantalla Completa, que permite que un objeto Window otorgue a otro objeto Window el derecho de invocar requestFullscreen().
- Se ha añadido la API de Ventana Complementaria de Pantalla Completa, que permite colocar contenido de pantalla completa y ventanas emergentes en otra pantalla tras recibir la confirmación del usuario.
- Se ha agregado un atributo visual-box a la propiedad CSS overflow-clip-margin, que define desde qué punto debe comenzar el recorte del contenido que ha salido del área (puede tomar los valores content-box, padding-box y border-box).
- En la API de Portapapeles Asíncrono se ha añadido la posibilidad de definir formatos especializados para los datos transferidos a través del portapapeles, diferentes de texto, imágenes y texto con marcado.
- En WebGL, se ha añadido soporte para especificar el espacio de color para el búfer de representación y la conversión al importar desde texturas.
- Se ha eliminado el soporte para las plataformas OS X 10.11 y macOS 10.12.
- Se ha retirado el soporte para la API U2F (Cryptotoken), que anteriormente se había declarado obsoleta y estaba desactivada por defecto. La API de U2F ha sido reemplazada por la API de Web Authentication.
- Se han realizado mejoras en las herramientas para desarrolladores web. En el depurador, se ha añadido la capacidad de reiniciar el código desde el inicio de la función después de que se active un punto de interrupción en el cuerpo de la misma. Se ha añadido soporte para el desarrollo de complementos para el panel Recorder. En el panel de análisis de rendimiento, se ha añadido soporte para visualizar las etiquetas establecidas en la aplicación web a través de la llamada al método performance.measure(). Se han mejorado las recomendaciones para la autocompleción de propiedades de objetos de JavaScript. Para la autocompleción de variables CSS, se ha proporcionado una vista previa de los valores no relacionados con colores.

Además de las novedades y correcciones de errores, la nueva versión ha solucionado 27 vulnerabilidades. Muchas de estas vulnerabilidades fueron identificadas mediante pruebas automatizadas con herramientas como AddressSanitizer, MemorySanitizer, Control Flow Integrity, LibFuzzer y AFL. No se han detectado problemas críticos que permitan eludir todos los niveles de seguridad del navegador y ejecutar código en el sistema fuera del entorno de sandbox. En el marco del programa de recompensas por la detección de vulnerabilidades, Google ha otorgado 22 recompensas por un total de 84 mil dólares (una recompensa de $15,000, una de $10,000, una de $8,000, una de $7,000, cuatro de $5,000, una de $4,000, tres de $3,000, cuatro de $2,000 y tres de $1,000). El monto de una de las recompensas aún no ha sido determinado.
Fuente: opennet.ru

