La compañía Google ha presentado la versión del navegador web Chrome 94. 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, un sistema de notificación en caso de fallos, módulos para la reproducción de contenido de video protegido (DRM), un sistema de instalación automática de actualizaciones y el envío de parámetros RLZ durante las búsquedas. La próxima versión de Chrome 95 está programada para el 19 de octubre.
A partir de la versión Chrome 94, el desarrollo se ha trasladado a un nuevo ciclo de preparación de versiones. Las nuevas versiones significativas se publicarán cada 4 semanas, en lugar de cada 6 semanas, lo que permitirá acelerar la llegada de nuevas funcionalidades a los usuarios. Se señala que la optimización del proceso de preparación de versiones y la mejora del sistema de pruebas permiten lanzar versiones más frecuentemente sin comprometer la calidad. Para las empresas y aquellos que necesitan más tiempo para actualizar, se publicará una edición Extended Stable cada 8 semanas, lo que permitirá pasar a nuevas versiones funcionales no cada 4 semanas, sino cada 8 semanas.
Principales cambios en Chrome 94:
- Se ha añadido el modo HTTPS-First, que es similar al modo HTTPS Only que apareció anteriormente en Firefox. Si el modo está habilitado en la configuración y se intenta abrir un recurso sin cifrado por HTTP, el navegador primero intentará acceder al sitio a través de HTTPS y si este intento falla, se mostrará una advertencia al usuario de que no se admite HTTPS y se le propondrá abrir el sitio sin cifrado. En el futuro, Google está considerando habilitar HTTPS-First por defecto para todos los usuarios, limitar el acceso a algunas características de la plataforma web para páginas abiertas por HTTP, y añadir advertencias adicionales que informen a los usuarios sobre las amenazas que surgen al acceder a sitios sin cifrado. El modo se habilita en la sección de configuración «Privacidad y seguridad» > «Seguridad» > «Avanzado».

- Para las páginas abiertas sin HTTPS, se prohíbe el envío de solicitudes (carga de recursos) a URL locales (por ejemplo, «http://router.local» y localhost) y rangos de direcciones internos (127.0.0.0/8, 192.168.0.0/16, 10.0.0.0/8, etc.). Se ha hecho una excepción solo para páginas cargadas desde servidores, que tienen IP internas. Por ejemplo, una página cargada desde servidores 1.2.3.4 podrá acceder a un recurso alojado en la IP 192.168.0.1 o en la IP 127.0.0.1, mientras que una cargada desde el servidor 192.168.1.1 podrá hacerlo. Este cambio añade un nivel adicional de protección contra la explotación de vulnerabilidades en los manejadores que aceptan solicitudes en IPs locales, y también ayudará a proteger contra ataques de tipo 'DNS rebinding'.
- Se ha añadido la función 'Compartir Hub', que permite compartir rápidamente con otros usuarios el enlace a la página actual. Se proporciona la posibilidad de generar un código QR con la URL, guardar la página, enviar el enlace a otro dispositivo vinculado a la cuenta del usuario, y compartir el enlace en sitios externos, como Facebook, WhatsApp, Twitter y VK. Por ahora, esta función no está disponible para todos los usuarios. Para activar forzosamente el botón 'Compartir' en el menú y en la barra de direcciones, se pueden usar las configuraciones 'chrome://flags/#sharing-hub-desktop-app-menu' y 'chrome://flags/#sharing-hub-desktop-omnibox'.

- Se ha reestructurado la interfaz de configuración del navegador. Ahora, cada sección de configuraciones se muestra en una página separada, en lugar de en una única página general.

- Se ha implementado el soporte para la actualización dinámica del registro de certificados emitidos y revocados (Transparencia de Certificados), que ahora se actualizará sin depender de la actualización del navegador.
- Se ha añadido una página de servicio 'chrome://whats-new' que ofrece un resumen de los cambios visibles para los usuarios en la nueva versión. La página se muestra automáticamente inmediatamente después de la actualización o se puede acceder a través del botón '¿Qué hay de nuevo?' en el menú de Ayuda. Actualmente, en la página se mencionan la búsqueda por pestañas, la posibilidad de dividir perfiles y la función de cambio de color de fondo, que no son específicas de Chrome 94 y aparecieron en versiones anteriores. La visualización de la página aún no está habilitada para todos los usuarios: para gestionar la activación se pueden utilizar las configuraciones 'chrome://flags#chrome-whats-new-ui' y 'chrome://flags#chrome-whats-new-in-main-menu-new-badge'.

- Se ha declarado obsoleta la llamada a la API WebSQL desde contenido cargado desde sitios externos (por ejemplo, a través de iframe). En Chrome 94, se mostrará una advertencia al intentar acceder a WebSQL desde scripts externos, pero a partir de Chrome 97 tales accesos serán bloqueados. En el futuro, se planea eliminar gradualmente el soporte para WebSQL, independientemente del contexto de uso. El controlador WebSQL se basa en código de SQLite y podría haber sido utilizado por atacantes para explotar vulnerabilidades en SQLite.
- Por razones de seguridad y para prevenir actividades maliciosas, se ha comenzado a bloquear el uso del antiguo protocolo MK (URL:MK), que alguna vez fue utilizado en Internet Explorer y permitía que las aplicaciones web extrajeran información de archivos comprimidos.
- Se ha terminado el soporte para la sincronización con versiones antiguas de Chrome (Chrome 48 y anteriores).
- Se ha agregado soporte para la bandera 'display-capture' en el encabezado HTTP Permissions-Policy, que se utiliza para habilitar ciertas capacidades y gestionar el acceso a APIs, permitiendo controlar el uso de la API Screen Capture en la página (por defecto, la captura de contenido de pantalla de iframes externos está bloqueada).
- 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 API WebGPU, que sustituye a la API WebGL y proporciona medios para realizar operaciones en la GPU, como renderizado y cálculos. Conceptualmente, WebGPU es similar a las APIs Vulkan, Metal y Direct3D 12. WebGPU se diferencia de WebGL de manera similar a como la API gráfica Vulkan se diferencia de OpenGL, pero no se basa en ninguna API gráfica específica, sino que actúa como una capa universal que utiliza los mismos primitivos de bajo nivel que existen en Vulkan, Metal y Direct3D 12.
WebGPU proporciona a las aplicaciones en JavaScript herramientas para un control de bajo nivel sobre la organización, procesamiento y envío de comandos a la GPU, así como la gestión de recursos relacionados, memoria, buffers, objetos de texturas y sombreadores gráficos compilados. Este enfoque permite lograr un mayor rendimiento en aplicaciones gráficas al reducir la sobrecarga y mejorar la eficiencia en el uso de la GPU. La API también permite crear complejos proyectos 3D para la web que funcionan tan bien como programas independientes, pero no están atados a plataformas específicas.
- Para aplicaciones PWA aisladas, se ha implementado la posibilidad de registrarse como manejadores de URL. Por ejemplo, la aplicación music.example.com puede registrarse como manejador de la URL https://*.music.example.com y todas las transiciones desde aplicaciones externas a estos enlaces, como mensajeros y clientes de correo, abrirán esta aplicación PWA en lugar de una nueva pestaña en el navegador.
- Se ha implementado el nuevo código de respuesta HTTP — 103, que puede usarse para la entrega anticipada de encabezados. El código 103 permite informar al cliente sobre el contenido de algunos encabezados HTTP inmediatamente después de la solicitud, sin esperar a que el servidor complete todas las operaciones relacionadas con la solicitud y comience a entregar el contenido. De esta manera, se pueden comunicar sugerencias sobre elementos relacionados con la página que se está entregando, que pueden ser precargados (por ejemplo, pueden proporcionarse enlaces a los archivos CSS y JavaScript utilizados en la página). Al recibir información sobre estos recursos, el navegador comenzará a cargarlos sin esperar a que finalice la entrega de la página principal, lo que permite reducir el tiempo total de procesamiento de la solicitud.
- Se ha añadido la API WebGPU, que sustituye a la API WebGL y proporciona medios para realizar operaciones en la GPU, como renderizado y cálculos. Conceptualmente, WebGPU es similar a las APIs Vulkan, Metal y Direct3D 12. WebGPU se diferencia de WebGL de manera similar a como la API gráfica Vulkan se diferencia de OpenGL, pero no se basa en ninguna API gráfica específica, sino que actúa como una capa universal que utiliza los mismos primitivos de bajo nivel que existen en Vulkan, Metal y Direct3D 12.
- Se ha añadido la API WebCodecs para manipular flujos multimedia a bajo nivel, complementando las APIs de alto nivel HTMLMediaElement, Media Source Extensions, WebAudio, MediaRecorder y WebRTC. Esta nueva API puede ser útil en áreas como la transmisión de juegos, la aplicación de efectos del lado del cliente, la recodificación de flujos y el soporte de contenedores multimedia no estándar. En lugar de implementar códecs individuales en JavaScript o WebAssembly, la API WebCodecs proporciona acceso a componentes de alto rendimiento listos para usar, integrados en el navegador. En particular, la API WebCodecs incluye decodificadores y codificadores de audio y video, decodificadores de imágenes y funciones para trabajar con cuadros individuales de video a bajo nivel.
- Se ha estabilizado la API Insertable Streams, que permite manipular flujos multimedia sin procesar (raw) transmitidos a través de la API MediaStreamTrack, como los datos de la cámara y el micrófono, el resultado de la captura de pantalla o los datos intermedios de decodificación del códec. Para representar cuadros sin procesar se utilizan interfaces WebCodec, tras lo cual se forma un flujo similar al que genera la API WebRTC Insertable Streams a partir de RTCPeerConnections. Desde un punto de vista práctico, esta nueva API permite implementar funcionalidades como aplicar métodos de aprendizaje automático para identificar o anotar objetos en tiempo real o para añadir efectos, como el recorte de fondo, antes de la codificación o después de la decodificación del códec.
- Se ha estabilizado el método scheduler.postTask(), que permite gestionar la programación de la ejecución de tareas (llamadas de retorno de JavaScript) con diferentes niveles de prioridad. Se ofrecen tres niveles de prioridad: 1 - ejecución prioritaria, incluso si las operaciones del usuario pueden estar bloqueadas; 2 - se permiten cambios visibles para el usuario; 3 - ejecución en segundo plano. Para cambiar la prioridad y cancelar tareas, se puede usar el objeto TaskController.
- Se ha estabilizado y ahora se distribuye fuera de Origin Trials el API de Detección de Inactividad para determinar la inactividad del usuario. Este API permite identificar el momento en que el usuario no interactúa con el teclado/rato, se ha activado el protector de pantalla, la pantalla está bloqueada o se está trabajando en otro monitor. La notificación a la aplicación sobre la inactividad se realiza a través del envío de una notificación una vez alcanzado el umbral de inactividad establecido.
- Se ha formalizado el proceso de gestión del color en objetos CanvasRenderingContext2D e ImageData y el uso de ellos en el espacio de color sRGB. Se ha proporcionado la posibilidad de crear objetos CanvasRenderingContext2D e ImageData en espacios de color distintos a sRGB, como Display P3, para aprovechar las capacidades avanzadas de los monitores modernos.
- En la API VirtualKeyboard se han añadido métodos y propiedades para gestionar la visualización y ocultación del teclado virtual, así como para obtener información sobre el tamaño del teclado virtual mostrado.
- En JavaScript para clases se ha habilitado la posibilidad de aplicar bloques de inicialización estáticos para agrupar código que se ejecuta una vez al procesar la clase: class C { /// El bloque se ejecutará al procesar la clase misma static { console.log('Bloque estático de C'); } }
- En las propiedades CSS flex-basis y flex se han implementado las palabras clave content, min-content, max-content y fit-content para un control más flexible del tamaño del área principal de Flexbox.
- Se ha añadido la propiedad CSS scrollbar-gutter para gestionar la reserva de espacio en pantalla para la barra de desplazamiento. Por ejemplo, cuando no se requiere desplazamiento del contenido, se puede ampliar la salida y ocupar el área de la barra de desplazamiento.
- Se ha añadido la API Self Profiling con la implementación de un sistema de perfilado que permite medir el tiempo de ejecución de JavaScript del lado del usuario para depurar problemas de rendimiento en el código JavaScript, sin tener que recurrir a manipulaciones manuales en la interfaz para desarrolladores web.
- Después de eliminar el plugin de Flash, se decidió devolver valores vacíos en las propiedades navigator.plugins y navigator.mimeTypes, pero resultó que algunas aplicaciones las utilizaban para comprobar la presencia de plugins para mostrar archivos PDF. Dado que Chrome tiene un visor de PDF incorporado, de ahora en adelante las propiedades navigator.plugins y navigator.mimeTypes devolverán una lista fija de plugins y tipos MIME estándar para ver PDFs: 'Visor de PDF, Visor de PDF de Chrome, Visor de PDF de Chromium, Visor de PDF de Microsoft Edge y Visor de PDF integrado de WebKit'.
- Se han realizado mejoras en las herramientas para desarrolladores web. Se han añadido los dispositivos Nest Hub y Nest Hub Max a la lista de simulación de pantallas. En la interfaz de inspección de actividad de red se ha añadido un botón para invertir los filtros (por ejemplo, al establecer un filtro 'status-code: 404' se pueden ver rápidamente todas las demás solicitudes), así como la posibilidad de ver los valores originales de los encabezados Set-Cookie (lo que permite evaluar la existencia de valores incorrectos que se eliminan durante la normalización). Se ha declarado obsoleta la barra lateral en la consola web y se eliminará en una de las próximas versiones. Se ha añadido una función experimental para ocultar problemas en la pestaña Issues. En la configuración se ha añadido la opción de seleccionar el idioma de la interfaz.

Además de las novedades y correcciones de errores, en la nueva versión se han solucionado 19 vulnerabilidades. Muchas de las vulnerabilidades se detectaron mediante pruebas automatizadas con herramientas como AddressSanitizer, MemorySanitizer, Control Flow Integrity, LibFuzzer y AFL. No se han encontrado problemas críticos que permitan eludir todos los niveles de protección del navegador y ejecutar código en el sistema fuera del entorno de sandbox. En el marco del programa de recompensas por descubrimiento de vulnerabilidades, para la versión actual, la empresa Google ha otorgado 17 recompensas por un total de 56,500 dólares (una recompensa de $15,000, dos recompensas de $10,000, una recompensa de $7,500, cuatro recompensas de $3,000 y dos recompensas de $1,000). El monto de 7 recompensas aún no se ha determinado.
Fuente: opennet.ru





