La empresa Google ha lanzado la versión del navegador web Chrome 91. Al mismo tiempo, está disponible la versión estable del proyecto de código abierto Chromium, que es la base de Chrome. El navegador Chrome se distingue por el uso de logotipos de Google, la presencia de un sistema de notificación en caso de falla, módulos para la reproducción de contenido protegido (DRM), un sistema de instalación automática de actualizaciones y la transmisión de parámetros RLZ durante las búsquedas. La próxima versión, Chrome 92, está programada para el 20 de julio.
Los principales cambios en Chrome 91:
- Se ha implementado la capacidad de detener la ejecución de JavaScript en un grupo de pestañas minimizado. En Chrome 85 se agregó la funcionalidad de agrupar pestañas, las cuales pueden estar asociadas con un color y una etiqueta específicos. Al hacer clic en la etiqueta del grupo, las pestañas asociadas se minimizan y queda solo una etiqueta (un clic repetido en la etiqueta expande el grupo). En esta nueva versión, para reducir la carga en la CPU y ahorrar energía, se ha implementado la suspensión de la actividad en las pestañas minimizadas. La única excepción son las pestañas que reproducen audio, utilizan la API Web Locks o IndexedDB, están conectadas a un dispositivo USB, o están capturando video, audio o el contenido de las ventanas. Este cambio se implementará gradualmente, comenzando con un pequeño porcentaje de usuarios.
- Se ha habilitado el soporte para un método de intercambio de claves resistente a la ruptura por computadoras cuánticas. Las computadoras cuánticas resuelven drásticamente más rápido el problema de descomponer un número natural en factores primos, que es la base de los algoritmos modernos de cifrado asimétrico y que es eficientemente irresoluble en procesadores clásicos. Para su uso en TLSv1.3 se ha proporcionado el complemento 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 sistemas criptográficos postcuánticos.
- Se ha descontinuado por completo el soporte para los protocolos TLS 1.0 y TLS 1.1, que han sido considerados obsoletos por el comité IETF (Internet Engineering Task Force). También se ha eliminado la posibilidad de regresar a TLS 1.0/1.1 mediante el cambio de la política SSLVersionMin.
- En las compilaciones para la plataforma Linux se incluye el uso del modo «DNS sobre HTTPS» (DoH, DNS over HTTPS), que anteriormente se había implementado para usuarios de Windows, macOS, ChromeOS y Android. DNS-over-HTTPS se activará automáticamente para los usuarios cuyos ajustes indiquen proveedores de DNS que admiten esta tecnología (para DNS-over-HTTPS se utiliza el mismo proveedor que se aplicaba para DNS). Por ejemplo, si un usuario tiene configurado el DNS 8.8.8.8 en la configuración del sistema, entonces en Chrome se activará el servicio DNS-over-HTTPS de Google («https://dns.google.com/dns-query»), si el DNS es 1.1.1.1, entonces se activará el servicio DNS-over-HTTPS de Cloudflare («https://cloudflare-dns.com/dns-query»), etc.
- Se ha agregado el puerto 10080 a la lista de puertos de red prohibidos, que se utiliza en la copia de seguridad de Amanda y VMWare vCenter. Anteriormente ya se habían bloqueado los puertos 69, 137, 161, 554, 1719, 1720, 1723, 5060, 5061 y 6566. Para los puertos en la lista negra se bloquea el envío de solicitudes HTTP, HTTPS y FTP con el fin de protegerse contra el ataque de NAT slipstreaming, que permite, al abrir una página web preparada por el atacador en el navegador, establecer una conexión de red desde el servidor del atacador a cualquier puerto UDP o TCP en el sistema del usuario, a pesar de la utilización de direcciones de rango interno (192.168.x.x, 10.x.x.x).
- Se ha habilitado la configuración para el inicio automático de aplicaciones web progresivas (PWA) al iniciar sesión en el sistema (Windows y macOS). El arranque automático se configura en la página chrome://apps. Esta funcionalidad aún se está probando en un pequeño porcentaje de usuarios y, para el resto, requiere activar la opción «chrome://flags/#enable-desktop-pwas-run-on-os-login».
- En el marco del trabajo de traducción hacia la terminología inclusiva, el archivo «master_preferences» ha sido renombrado a «initial_preferences». Para mantener la compatibilidad, el soporte de «master_preferences» se conservará durante un tiempo en el navegador. Anteriormente, el navegador ya había eliminado el uso de los términos «whitelist», «blacklist» y «native».
- En el modo de protección mejorada contra sitios peligrosos (Enhanced Safe Browsing), en el cual se activan verificaciones adicionales para proteger contra el phishing, actividad maliciosa y otras amenazas en la web, se implementa la posibilidad de enviar archivos descargados para su verificación en el lado de Google. Además, en Enhanced Safe Browsing se toma en cuenta los tokens vinculados a la cuenta de Google al detectar intentos de phishing, así como el envío a los servidores de Google de los valores del encabezado Referrer para verificar el tráfico desde un sitio malicioso.
- En la edición para la plataforma Android se ha mejorado el diseño de los elementos de formularios web, que han sido optimizados para su uso en pantallas táctiles y sistemas para personas con discapacidades (para sistemas de escritorio, el diseño fue reformado en Chrome 83). El objetivo de la reestructuración fue la unificación del diseño de los elementos del formulario y la eliminación de incongruencias de estilo: anteriormente, algunos elementos del formulario estaban diseñados de acuerdo con los elementos de la interfaz de las sistemas operativos, mientras que otros seguían los estilos más populares. Debido a esto, diferentes elementos eran de diferente idoneidad para pantallas táctiles y sistemas para personas con discapacidades.


- Se ha añadido una encuesta de opinión de los usuarios, que se muestra al abrir la configuración del Privacy Sandbox (chrome://settings/privacySandbox).
- Al abrir la versión de Chrome para Android en tablets de pantalla grande, se solicita la versión de escritorio del sitio, en vez de la edición para dispositivos móviles. Este comportamiento puede cambiarse mediante la configuración 'chrome://flags/#request-desktop-site-for-tablets'.
- Se ha reescrito el código para la renderización de tablas, lo que ha permitido resolver problemas de discrepancia en el comportamiento al mostrar tablas en Chrome y en Firefox/Safari.
- Se ha dejado de procesar certificados del servidor del centro de certificación español Camerfirma debido a incidentes repetidos desde 2017 relacionados con violaciones en la emisión de certificados. Se mantiene el soporte para certificados de clientes, y la prohibición se aplica únicamente a los certificados usados en sitios para HTTPS.
- Se ha continuado la implementación del soporte para la segmentación de la red para protegerse contra métodos de seguimiento del movimiento del usuario entre sitios, basados en el almacenamiento de identificadores en áreas no destinadas para el almacenamiento permanente de información («Supercookies»). Dado que los recursos en caché se almacenan en un espacio de nombres compartido, independientemente del dominio de origen, un sitio puede detectar la carga de recursos desde otro sitio mediante la verificación de la existencia de ese recurso en la caché. La protección se basa en la aplicación de la segmentación de red (Network Partitioning), cuya esencia es agregar en las cachés compartidas un enlace adicional de las entradas al el dominio, desde el cual se abrió la página principal, lo que limita el ámbito de la caché para los scripts de seguimiento de movimientos solo al sitio actual (el script desde iframe no podrá verificar si el recurso se ha cargado desde otro sitio).
El costo de la segmentación es una disminución en la eficiencia de la caché, lo que lleva a un ligero aumento en el tiempo de carga de la página (máximo del 1.32%, pero para el 80% de los sitios del 0.09-0.75%). Para probar el modo de segmentación, puede iniciar el navegador con la opción «—enable-features=PartitionConnectionsByNetworkIsolationKey, PartitionExpectCTStateByNetworkIsolationKey, PartitionHttpServerPropertiesByNetworkIsolationKey, PartitionNelAndReportingByNetworkIsolationKey, PartitionSSLSessionsByNetworkIsolationKey, SplitHostCacheByNetworkIsolationKey».
- Se ha añadido la API REST externa VersionHistory (https://versionhistory.googleapis.com/v1/chrome), a través de la cual se puede obtener información sobre las versiones de Chrome en relación con las plataformas y ramas, así como el historial de actualizaciones del navegador.
- En iframes cargados desde dominios distintos al dominio de la página base, se prohíbe la salida de los diálogos de JavaScript alert(), confirm() y prompt(), lo que permitirá proteger a los usuarios de intentos de scripts de terceros de mostrar mensajes haciéndose pasar por notificaciones del sitio principal.
- Se ha estabilizado y se ha propuesto por defecto la API WebAssembly SIMD para el uso de instrucciones SIMD vectoriales en aplicaciones en formato WebAssembly. Para garantizar la independencia de la plataforma, se ofrece un nuevo tipo de 128 bits que puede representar diferentes tipos de datos empaquetados, y varias operaciones vectoriales básicas para el procesamiento de datos empaquetados. SIMD permite mejorar el rendimiento al paralelizar el procesamiento de datos y será útil al compilar código nativo en WebAssembly.
- 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.
- WebTransport — un protocolo y API de JavaScript asociado para enviar y recibir datos entre el navegador y el servidor. El canal de comunicación se organiza sobre HTTP/3 utilizando el protocolo QUIC como transporte, que, a su vez, es una capa sobre el protocolo UDP, soportando el multiplexado de múltiples conexiones y proporcionando métodos de encriptación equivalentes a TLS/SSL.
WebTransport puede utilizarse en lugar de los mecanismos WebSockets y RTCDataChannel, ofreciendo características adicionales como la organización de transferencias en múltiples flujos, flujos unidireccionales, entrega sin tener en cuenta el orden de envío de paquetes (out-of-order), modos de entrega confiables y no confiables. Además, WebTransport puede aplicarse en lugar del mecanismo Server Push, del cual Google se ha desvinculado en Chrome.
- Una interfaz declarativa para definir enlaces a aplicaciones web separadas (PWA), activada mediante el parámetro capture_links en el manifiesto de la aplicación web, permitiendo que los sitios abran automáticamente una nueva ventana PWA al hacer clic en un enlace de la aplicación o pasen a un modo de ventana única, similar a las aplicaciones móviles.
- Se ha añadido la API de Detección de Planos de WebXR, que proporciona información sobre superficies planas en un entorno 3D virtual. La mencionada API permite evitar el procesamiento intensivo de recursos de los datos obtenidos a través de la llamada MediaDevices.getUserMedia(), utilizando implementaciones propias de algoritmos de visión por computadora. Recordemos que la API de WebXR permite unificar el trabajo con diversas clases de dispositivos de realidad virtual, desde cascos 3D de escritorio hasta soluciones basadas en dispositivos móviles.
- WebTransport — un protocolo y API de JavaScript asociado para enviar y recibir datos entre el navegador y el servidor. El canal de comunicación se organiza sobre HTTP/3 utilizando el protocolo QUIC como transporte, que, a su vez, es una capa sobre el protocolo UDP, soportando el multiplexado de múltiples conexiones y proporcionando métodos de encriptación equivalentes a TLS/SSL.
- Se ha implementado el soporte para WebSockets sobre HTTP/2 (RFC 8441), que solo funciona para solicitudes seguras a WebSockets y en presencia de una conexión HTTP/2 ya establecida con el servidor, en la que se anuncia el soporte para la extensión 'WebSockets over HTTP/2'.
- Se han unificado las restricciones de precisión de los valores del temporizador proporcionados por la llamada performance.now() para todas las plataformas soportadas y adaptadas teniendo en cuenta la posible aislamiento de los controladores en procesos separados. Por ejemplo, en sistemas de escritorio, la precisión en contextos no aislados se ha reducido de 5 a 100 microsegundos.
- En las compilaciones para sistemas de escritorio se ha implementado la posibilidad de leer archivos desde el portapapeles (la grabación de archivos en el portapapeles sigue estando prohibida). async function onPaste(e) { let file = e.clipboardData.files[0]; let contents = await file.text(); }
- En CSS se ha implementado la regla @counter-style, que permite definir un estilo personalizado para contadores y etiquetas en listas numeradas.
- En CSS, se ha añadido a los pseudo-clases «:host()» y «:host-context()» la capacidad de pasar valores únicos de selectores compuestos (<compound-selector>) además de listas de selectores (<compound-selector-list>).
- Se ha añadido la interfaz GravitySensor para determinar datos volumétricos (en tres ejes de coordenadas) desde un sensor de gravedad.
- En la API File System Access se ha proporcionado la posibilidad de definir recomendaciones para el nombre de archivo y directorio que se ofrecen en el diálogo de creación o apertura de archivos.
- Se permite el acceso a la API WebOTP desde iframes cargados desde otros dominios, siempre que el usuario otorgue los permisos correspondientes. WebOTP permite leer códigos de confirmación de un solo uso que se envían a través de SMS.
- Se permite el uso compartido de credenciales para sitios vinculados mediante el mecanismo DAL (Digital Asset Links), que permite asociar aplicaciones de Android con sitios web para facilitar el inicio de sesión.
- En el worker de servicio se permite el uso de módulos JavaScript. Al especificar el tipo 'module' al invocar el constructor, los scripts indicados se cargarán en forma de módulos y estarán disponibles para ser importados en el contexto del worker. El soporte para módulos simplifica el uso compartido de código en páginas web y en workers de servicio.
- En JavaScript se ha añadido la posibilidad de verificar la existencia de campos privados en un objeto, utilizando la sintaxis «#foo in obj». class A { static test(obj) { console.log(#foo in obj); } #foo = 0; } A.test(new A()); // true A.test({}); // false
- En JavaScript, se permite por defecto el uso de la palabra clave await en módulos de nivel superior, lo que permite una integración más suave de las llamadas asíncronas en el proceso de carga de módulos y evitar el empaque en una «async function». Por ejemplo, en lugar de (async function() { await Promise.resolve(console.log(‘test’)); }()); ahora se puede escribir await Promise.resolve(console.log(‘test’));
- En el motor JavaScript V8, se ha mejorado la eficiencia del almacenamiento en caché de plantillas, lo que ha permitido aumentar la velocidad de las pruebas Speedometer2-FlightJS en un 4.5%.
- Se han implementado una gran cantidad de mejoras en las herramientas para desarrolladores web. Se ha añadido un nuevo modo de inspección de memoria, que proporciona medios para examinar los datos de ArrayBuffer y la memoria Wasm.

En el panel de Performance se ha añadido un indicador resumen de rendimiento, que permite juzgar si el sitio requiere optimización o no.

Al previsualizar imágenes en el panel de Elements y en el panel de análisis de solicitudes de red, se proporciona información sobre la relación de aspecto de la imagen, los parámetros de visualización y el tamaño del archivo.

En el panel de inspección de red ha surgido la posibilidad de cambiar los valores recibidos del encabezado Content-Encoding.

En el panel de estilos se ha añadido la opción de vista rápida del valor calculado al navegar por los parámetros de CSS, seleccionando en el menú contextual 'Ver valor calculado'.

Además de las novedades y correcciones de errores, la nueva versión ha arreglado 32 vulnerabilidades. Muchas de las vulnerabilidades fueron identificadas mediante pruebas automatizadas utilizando las herramientas AddressSanitizer, MemorySanitizer, Control Flow Integrity, LibFuzzer y AFL. No se han detectado problemas críticos que permitan eludir todos los niveles de protección del navegador y ejecutar código en el sistema más allá del entorno sandbox. En el marco del programa de recompensas por la detección de vulnerabilidades para esta versión, Google ha otorgado 21 premios por un total de 92,000 dólares (un premio de $20,000, un premio de $15,000, cuatro premios de $7,500, tres premios de $5,000, tres premios de $3,000, dos premios de $1,000 y dos premios de $500). El monto de 5 recompensas aún no ha sido determinado.
Fuente: opennet.ru







