La compañía Google ha lanzado la versión 93 del 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 distingue por el uso de logotipos de Google, la existencia de un sistema de notificación en caso de fallos, módulos para la reproducción de contenido de video protegido (DRM), un sistema de actualizaciones automáticas y la entrega de parámetros RLZ al buscar. La próxima versión, Chrome 94, está programada para el 21 de septiembre (el desarrollo ha pasado a un ciclo de lanzamiento de 4 semanas).
Principales cambios en Chrome 93:
- Se ha modernizado el diseño del bloque de información de la página (page info), que ahora admite bloques anidados, y los menús desplegables con permisos han sido reemplazados por interruptores. En las listas, se asegura que la información más importante se muestre en primer lugar. Este cambio no está disponible para todos los usuarios; se puede activar mediante la configuración «chrome://flags/#page-info-version-2-desktop».

- Para un pequeño porcentaje de usuarios, como parte de un experimento, el indicador de conexión segura en la barra de direcciones ha sido reemplazado por un símbolo más neutral que no causa ambigüedad (el candado ha sido sustituido por el signo «V»). Para las conexiones establecidas sin cifrado, continúa mostrándose el indicador de «no seguro». Se menciona que la razón del cambio en el indicador es que muchos usuarios asocian el símbolo del candado con la confianza en el contenido del sitio más que como un signo de cifrado de conexión. Según una encuesta de Google, solo el 11% de los usuarios entienden el significado del icono de candado.

- En la lista de pestañas cerradas recientemente se ha mejorado la visualización del contenido de los grupos de pestañas cerrados (anteriormente, solo se mostraba el nombre del grupo sin detalles sobre el contenido) con la posibilidad de restaurar tanto todo el grupo como pestañas individuales de dicho grupo. Esta función no está activada para todos los usuarios, por lo que puede necesitarse un ajuste de la configuración «chrome://flags/#tab-restore-sub-menus» para habilitarla.

- Se han implementado nuevas configuraciones DefaultJavaScriptJitSetting, JavaScriptJitAllowedForSites y JavaScriptJitBlockedForSites para empresas, lo que permite gestionar el modo JIT-less, que desactiva la compilación JIT durante la ejecución de JavaScript (solo se utiliza el intérprete Ignition) y evita la asignación de memoria ejecutable durante la ejecución del código. Desactivar JIT puede ser útil para mejorar la seguridad al trabajar con aplicaciones web potencialmente peligrosas, aunque a costa de reducir el rendimiento de JavaScript en aproximadamente un 17%. Cabe destacar que Microsoft ha ido aún más allá e implementó en su navegador Edge un modo experimental llamado 'Super Duper Secure', que permite a los usuarios desactivar JIT y activar mecanismos de protección de hardware incompatibles con JIT como CET (Controlflow-Enforcement Technology), ACG (Arbitrary Code Guard) y CFG (Control Flow Guard) para los procesos que manejan contenido web. Si el experimento resulta exitoso, se podría esperar su incorporación en la versión principal de Chrome.
- En la página de nueva pestaña se proporciona una lista de los documentos más solicitados guardados en Google Drive. El contenido de la lista corresponde a la sección Prioridad en drive.google.com. Para gestionar la visualización del contenido de Google Drive, se pueden utilizar las configuraciones 'chrome://flags/#ntp-modules' y 'chrome://flags/#ntp-drive-module'.

- Para la página de apertura de nueva pestaña se han propuesto nuevos mapas informativos que ayudan a encontrar contenido reciente y la información asociada. Estos mapas están diseñados para facilitar la continuación del trabajo con información cuya visualización haya sido interrumpida, por ejemplo, ayudarán a localizar una receta de un platillo que se encontró recientemente en línea pero se perdió al cerrar la página, o continuar la selección de compras en las tiendas. Como parte de un experimento, se han ofrecido dos nuevos mapas: 'Recetas' (chrome://flags/#ntp-recipe-tasks-module) para buscar recetas culinarias y mostrar las recetas vistas recientemente; y 'Compras' (chrome://flags/#ntp-chrome-cart-module) para recordar los artículos seleccionados en tiendas en línea.
- En la versión para la plataforma Android se ha añadido soporte opcional para la barra de búsqueda continua (chrome://flags/#continuous-search), que permite mantener visibles los resultados de búsqueda recientes en Google (la barra sigue mostrando resultados después de navegar a otras páginas).

- En la versión para la plataforma Android se ha añadido un modo experimental de intercambio de citas (chrome://flags/#webnotes-stylize), que permite guardar un fragmento destacado de la página en forma de cita y compartirlo con otros usuarios.
- Al publicar nuevas adiciones o actualizaciones de versiones en la Chrome Web Store, ahora es obligatorio aplicar la verificación en dos pasos para los desarrolladores.
- Para los usuarios de Google Account, se ha proporcionado la opción de guardar la información de pagos en su cuenta de Google.
- En modo incógnito, si se activa la opción de limpiar los datos de navegación, se implementó un nuevo diálogo de confirmación que explica que limpiar los datos provocará el cierre de la ventana y finalizará todas las sesiones en modo incógnito.
- Debido a incompatibilidades detectadas con el firmware de algunos dispositivos, se ha desactivado temporalmente el soporte para un nuevo método de negociación de claves añadido en Chrome 91, resistente a ataques de computación cuántica, basado en la utilización en TLSv1.3 de la extensión CECPQ2 (Combined Elliptic-Curve and Post-Quantum 2), que combina el mecanismo clásico de intercambio de claves X25519 con el esquema HRSS, basado en el algoritmo NTRU Prime, diseñado para criptosistemas postcuánticos.
- Se han añadido los puertos 989 (ftps-data) y 990 (ftps) a la lista de puertos de red prohibidos con el fin de bloquear el ataque ALPACA. Anteriormente, para protegerse del ataque NAT slipstreaming, ya se habían bloqueado los puertos 69, 137, 161, 554, 1719, 1720, 1723, 5060, 5061, 6566 y 10080.
- Se ha dejado de soportar cifrados basados en el algoritmo 3DES en TLS. En particular, se ha eliminado el conjunto de cifrado TLS_RSA_WITH_3DES_EDE_CBC_SHA, que es vulnerable al ataque Sweet32.
- Se ha dejado de soportar la distribución Ubuntu 16.04.
- Se ha habilitado el uso de la API WebOTP entre diferentes dispositivos vinculados a través de una cuenta común en Google. WebOTP permite a la aplicación web leer códigos de un solo uso enviados a través de SMS. El cambio propuesto permite recibir el código de confirmación en un dispositivo móvil con Chrome para Android y aplicarlo en un sistema de escritorio.
- Se ha ampliado la API User-Agent Client Hints, que se desarrolla como una alternativa a la cabecera User-Agent. User-Agent Client Hints permite organizar la entrega selectiva de datos sobre parámetros específicos del navegador y del sistema (versión, plataforma, etc.) solo después de una solicitud. el servidorEl usuario, a su vez, puede definir qué información se puede proporcionar a los propietarios de sitios web. Al usar User-Agent Client Hints, el identificador del navegador no se transmite sin una solicitud explícita, y por defecto solo se indican los parámetros básicos, lo que dificulta la identificación pasiva.
La nueva versión incluye soporte para el parámetro Sec-CH-UA-Bitness, que permite obtener datos sobre la arquitectura de la plataforma, lo que puede usarse para proporcionar archivos binarios optimizados. Por defecto, se envía el parámetro Sec-CH-UA-Platform con información general sobre la plataforma. En el valor UADataValues, devuelto al llamar a getHighEntropyValues(), por defecto se proporciona información general si no es posible devolver una variante detallada. Se añadió el método toJSON al objeto NavigatorUAData, lo que permite usar construcciones como JSON.stringify(navigator.userAgentData).
- Se ha estabilizado y se ha ofrecido por defecto la posibilidad de empaquetar recursos en paquetes en formato Web Bundle, que son adecuados para organizar una carga más eficiente de un gran número de archivos asociados (estilos CSS, JavaScript, imágenes, iframe). Entre las desventajas de la actual compatibilidad con paquetes para archivos JavaScript (webpack), que intentan solucionar en Web Bundle: en la memoria caché HTTP puede residir el paquete mismo, pero no sus partes; la compilación y ejecución pueden comenzar solo después de que se haya completado la carga del paquete; los recursos adicionales, como CSS e imágenes, deben codificarse en forma de cadenas JavaScript, lo que resulta en un aumento del tamaño y ejecución de otra etapa de análisis.
- Se incluye la API WebXR Plane Detection, que proporciona información sobre superficies planas en un entorno 3D virtual. La API mencionada permite evitar un procesamiento de datos que consume recursos, obtenidos mediante la llamada a MediaDevices.getUserMedia(), utilizando implementaciones propias de algoritmos de visión por computadora. Recordemos que la API WebXR permite unificar el trabajo con diferentes clases de dispositivos de realidad virtual, desde cascos 3D de escritorio hasta soluciones basadas en dispositivos móviles.
- 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 propone la API Multi-Screen Window Placement, que permite ubicar ventanas en cualquier pantalla conectada al sistema actual, así como guardar la posición de la ventana y ampliar la ventana a pantalla completa si es necesario. Por ejemplo, mediante la mencionada API, una aplicación web para mostrar presentaciones puede organizar la salida de diapositivas en una pantalla, mientras que muestra notas para el presentador en otra.
- En el encabezado Cross-Origin-Embedder-Policy, que gestiona el modo de aislamiento Cross-Origin y permite definir reglas para el uso seguro de operaciones privilegiadas en la página, se ha añadido soporte para el parámetro 'credentialless' para desactivar el envío de información relacionada con credenciales, como Cookies y certificados de cliente.
- Para aplicaciones web instaladas de forma independiente (PWA, Progressive Web Apps) que controlan el renderizado del contenido de la ventana y manejan la entrada, se ha proporcionado una superposición con elementos de control de ventana, como un área de encabezado y botones para minimizar/maximizar la ventana. La superposición amplía el área editable a toda la ventana y permite agregar sus propios elementos al área del encabezado.

- Se ha añadido la capacidad de crear aplicaciones PWA que pueden actuar como manejadores de URL. Por ejemplo, la aplicación music.example.com puede registrarse como manejador de la URL https://*.music.example.com, y todos los enlaces externos a estas direcciones, por ejemplo, desde mensajeros y clientes de correo, abrirán estas aplicaciones PWA en lugar de una nueva pestaña en el navegador.
- Se ha habilitado la carga de archivos CSS utilizando la declaración 'import', de manera similar a la carga de módulos JavaScript, lo que resulta conveniente al crear elementos personalizados y permite evitar la asignación de estilos con código JavaScript. import sheet from './styles.css' assert { type: 'css' }; document.adoptedStyleSheets = [sheet]; shadowRoot.adoptedStyleSheets = [sheet];
- Se ha introducido un nuevo método estático AbortSignal.abort(), que devuelve un objeto AbortSignal que ya tiene el parámetro aborted establecido. En lugar de varias líneas de código para crear un objeto AbortSignal en estado aborted, ahora se puede utilizar una sola línea: 'return AbortSignal.abort()'.
- Se ha añadido al elemento Flexbox el soporte para las palabras clave start, end, self-start, self-end, left y right, complementando las palabras clave center, flex-start y flex-end con herramientas para facilitar la alineación de la posición de los elementos flex.
- Se ha implementado una nueva propiedad opcional 'cause' en el constructor Error(), que permite vincular errores entre sí de manera sencilla. const parentError = new Error('parent'); const error = new Error('child', { cause: parentError }); console.log(error.cause === parentError); // → true
- Se ha añadido soporte para el modo noplaybackrate en la propiedad HTMLMediaElement.controlsList, lo que permite deshabilitar los elementos de la interfaz del navegador que cambian la velocidad de reproducción del contenido multimedia.
- Se ha añadido el encabezado Sec-CH-Prefers-Color-Scheme, que permite enviar datos sobre el esquema de color preferido por el usuario en las consultas de medios "prefers-color-scheme" al enviar la solicitud, lo que permitirá al sitio optimizar la carga de los CSS relacionados con el esquema seleccionado y evitar cambios visibles desde otros esquemas.
- Se ha añadido la propiedad Object.hasOwn, que es una versión simplificada de Object.prototype.hasOwnProperty, implementada en forma de método estático. Object.hasOwn({ prop: 42 }, 'prop') // → true
- Se ha añadido un modo de ejecución por lotes de operaciones al compilador JIT Sparkplug, diseñado para una compilación rápida, lo que permite reducir la sobrecarga de alternar entre el modo de escritura y ejecución de páginas de memoria. Sparkplug ahora compila varias funciones a la vez y llama a mprotect una sola vez para cambiar los permisos de todo el grupo. Este modo propuesto reduce significativamente el tiempo de compilación (hasta un 44%) sin afectar negativamente el rendimiento de ejecución de JavaScript.

- En la versión para Android se han deshabilitado los mecanismos de protección contra ataques por canal lateral integrados en el motor V8, como Spectre, que se consideran menos efectivos que la aislamiento de sitios en procesos separados. En la versión de escritorio, se deshabilitaron dichos mecanismos en la versión 70 de Chrome. La desactivación de verificaciones innecesarias ha permitido aumentar el rendimiento entre un 2 y un 15%.

- Se han realizado mejoras en las herramientas para desarrolladores web. En el modo de inspección de hojas de estilo, se ha añadido la posibilidad de editar consultas formadas con la expresión @container. En el modo de inspección de red, se ha implementado una vista previa de recursos en formato Web bundle. En la consola web, se han añadido opciones en el menú contextual para copiar líneas en forma de literales de JavaScript o JSON. Se ha simplificado la depuración de errores relacionados con CORS (Cross-Origin Resource Sharing).

Además de las innovaciones y correcciones de errores, en la nueva versión se han solucionado 27 vulnerabilidades. Muchas de estas vulnerabilidades fueron descubiertas a través de pruebas automatizadas utilizando herramientas como AddressSanitizer, MemorySanitizer, Control Flow Integrity, LibFuzzer y AFL. No se han identificado problemas críticos que permitan el el bypass de todos los niveles de protección del navegador y la ejecución de código en el sistema fuera del entorno sandbox. En el marco del programa de recompensas por la detección de vulnerabilidades para esta versión, Google ha otorgado 19 premios por un total de 136500 dólares estadounidenses (tres premios de $20000, un premio de $15000, tres premios de $10000, un premio de $7500, tres premios de $5000 y tres premios de $3000). La cantidad de 5 recompensas aún no se ha determinado.
Fuente: opennet.ru









