A empresa Google lançou a versão do navegador web Chrome 94. Simultaneamente, está disponível a versão estável do projeto livre Chromium, que serve como base para o Chrome. O navegador Chrome se destaca pelo uso dos logotipos do Google, pela presença de um sistema de notificação em caso de falha, módulos para reprodução de conteúdo de vídeo protegido (DRM), um sistema de instalação automática de atualizações e pelo envio de parâmetros RLZ durante a pesquisa. O próximo lançamento do Chrome 95 está programado para 19 de outubro.
A partir do lançamento do Chrome 94, o desenvolvimento foi transferido para um novo ciclo de preparação de lançamentos. Novos lançamentos significativos serão publicados a cada 4 semanas, e não mais a cada 6 semanas, permitindo acelerar a entrega de novos recursos aos usuários. Destaca-se que a otimização do processo de preparação de lançamentos e a melhoria do sistema de testes permitem formar lançamentos com mais frequência sem comprometer a qualidade. Para empresas e para aqueles que precisam de mais tempo para atualização, a edição Extended Stable será lançada separadamente a cada 8 semanas, permitindo que a transição para novos lançamentos funcionais ocorra a cada 8 semanas, em vez de a cada 4 semanas.
Principais alterações do Chrome 94:
- Adicionado o modo HTTPS-First, que é semelhante ao modo HTTPS Only que apareceu anteriormente no Firefox. Se o modo estiver ativado nas configurações, ao tentar acessar um recurso sem criptografia via HTTP, o navegador inicialmente tentará acessar o site via HTTPS e, se a tentativa falhar, o usuário verá um aviso sobre a falta de suporte para HTTPS e será solicitado a abrir o site sem criptografia. No futuro, a Google considera a possibilidade de ativar o HTTPS-First por padrão para todos os usuários, restringindo o acesso a alguns recursos da web para páginas abertas via HTTP, e adicionando avisos adicionais que informam os usuários sobre as ameaças que surgem ao acessar sites sem criptografia. O modo é ativado na seção de configurações “Privacidade e segurança” > “Segurança” > “Avançado”.

- Para páginas abertas sem HTTPS, a solicitação de envio (carregamento de recursos) para URLs locais (por exemplo, “http://router.local” e localhost) e faixas de endereços internos (127.0.0.0/8, 192.168.0.0/16, 10.0.0.0/8, etc.) é proibida. A única exceção foi feita para páginas carregadas com servidores, com IPs internos. Por exemplo, uma página carregada de servidor 1.2.3.4 poderá acessar o recurso hospedado em IP 192.168.0.1 ou IP 127.0.0.1, enquanto que a carregada do servidor 192.168.1.1 conseguirá. Essa mudança introduz um nível adicional de proteção contra exploração de vulnerabilidades em manipuladores que aceitam solicitações em IPs locais, e também protege contra ataques do tipo ‘DNS rebinding’.
- Foi adicionada a função 'Sharing Hub', permitindo que os usuários compartilhem rapidamente o link da página atual. É possível gerar um QR code com a URL, salvar a página, enviar o link para outro dispositivo associado à conta do usuário e compartilhar o link em sites de terceiros como Facebook, WhatsApp, Twitter e VK. A função ainda não está disponível para todos os usuários. Para forçar a ativação do botão 'Share' no menu e na barra de endereços, você pode usar as configurações ‘chrome://flags/#sharing-hub-desktop-app-menu’ e ‘chrome://flags/#sharing-hub-desktop-omnibox’.

- Foi realizada uma reestruturação na interface de configuração do navegador. Cada seção de configurações agora é exibida em uma página separada, em vez de em uma única página geral.

- Foi implementado suporte para atualização dinâmica do log de certificados emitidos e revogados (Certificate Transparency), que agora será atualizado independentemente da atualização do navegador.
- Foi adicionada uma página de serviço ‘chrome://whats-new’ com uma visão geral das mudanças visíveis ao usuário na nova versão. A página é exibida automaticamente logo após a atualização ou pode ser acessada pelo botão ‘O que há de novo’ (What’s New) no menu Ajuda (Help). Atualmente, a página menciona a busca por abas, a capacidade de dividir perfis e a função de mudar a cor de fundo, que não são específicas do Chrome 94 e apareceram em versões anteriores. A exibição da página ainda não está habilitada para todos os usuários: para gerenciar a ativação, você pode usar as configurações ‘chrome://flags#chrome-whats-new-ui’ e ‘chrome://flags#chrome-whats-new-in-main-menu-new-badge’.

- Foi anunciado o fim do suporte ao acesso à API WebSQL de conteúdos carregados de sites externos (por exemplo, através de iframe). No Chrome 94, ao tentar acessar o WebSQL a partir de scripts externos, uma advertência é exibida, mas a partir do Chrome 97, esses acessos serão bloqueados. No futuro, está previsto um encerramento gradual do suporte ao WebSQL, independentemente do contexto de uso. O manipulador WebSQL é baseado no código SQLite e poderia ser explorado por invasores para tirar proveito de vulnerabilidades no SQLite.
- Por razões de segurança e prevenção de atividades maliciosas, começou a ser bloqueado o uso do protocolo MK obsoleto (URL:MK), que foi um dia utilizado no Internet Explorer e permitia que aplicações web extraíssem informações de arquivos compactados.
- O suporte para sincronização com versões antigas do Chrome (Chrome 48 e anteriores) foi encerrado.
- O cabeçalho HTTP Permissions-Policy, que visa habilitar certas funcionalidades e gerenciar o acesso à API, agora suporta a flag 'display-capture', que permite controlar o uso da API Screen Capture na página (por padrão, a capacidade de capturar conteúdo de tela de iframes externos é bloqueada).
- No modo Origin Trials (recursos experimentais que requerem ativação separada) foram adicionadas várias novas APIs. O Origin Trial permite o uso da API especificada a partir de aplicativos carregados a partir de localhost ou 127.0.0.1, ou após registro e obtenção de um token especial, que é válido por tempo limitado para um site específico.
- Foi adicionada a API WebGPU, que substitui a API WebGL e fornece meios para executar operações na GPU, como renderização e computação. Conceitualmente, o WebGPU é similar às APIs Vulkan, Metal e Direct3D 12. O WebGPU se diferencia do WebGL de maneira similar à diferença entre a API gráfica Vulkan e OpenGL, mas não é baseado em uma API gráfica específica, representando uma camada universal que utiliza os mesmos primitivos de baixo nível presentes no Vulkan, Metal e Direct3D 12.
A WebGPU fornece aos aplicativos em JavaScript meios para controle de baixo nível sobre a organização, processamento e envio de comandos para a GPU, além de permitir a gestão de recursos relacionados, memória, buffers, objetos de textura e shaders gráficos compilados. Essa abordagem permite alcançar um desempenho superior em aplicações gráficas, reduzindo a sobrecarga e aumentando a eficiência no uso da GPU. A API também permite criar projetos 3D complexos para a Web, que funcionam tão bem quanto programas independentes, mas não estão vinculados a plataformas específicas.
- Para aplicações PWA isoladas, foi implementada a capacidade de registro como manipuladores de URL. Por exemplo, o aplicativo music.example.com pode se registrar como manipulador da URL https://*.music.example.com e todas as navegações a partir de aplicativos externos através desses links, como de mensageiros e clientes de e-mail, resultarão na abertura da referida PWA em vez de uma nova aba no navegador.
- Foi implementado o suporte para um novo código de resposta HTTP — 103, que pode ser utilizado para a prévia saída de cabeçalhos. O código 103 permite informar o cliente sobre o conteúdo de alguns cabeçalhos HTTP logo após a solicitação, sem esperar que o servidor execute todas as operações relacionadas à solicitação e comece a entregar o conteúdo. De forma semelhante, é possível fornecer dicas sobre elementos relacionados à página que estão sendo entregues e que podem ser pré-carregados (por exemplo, podem ser fornecidos links para os arquivos CSS e JavaScript usados na página). Ao receber informações sobre esses recursos, o navegador iniciará seu carregamento sem esperar a conclusão da entrega da página principal, o que contribui para reduzir o tempo total de processamento da solicitação.
- Foi adicionada a API WebGPU, que substitui a API WebGL e fornece meios para executar operações na GPU, como renderização e computação. Conceitualmente, o WebGPU é similar às APIs Vulkan, Metal e Direct3D 12. O WebGPU se diferencia do WebGL de maneira similar à diferença entre a API gráfica Vulkan e OpenGL, mas não é baseado em uma API gráfica específica, representando uma camada universal que utiliza os mesmos primitivos de baixo nível presentes no Vulkan, Metal e Direct3D 12.
- Foi adicionado o API WebCodecs para manipulação de fluxos multimídia em nível baixo, complementando os APIs de alto nível HTMLMediaElement, Media Source Extensions, WebAudio, MediaRecorder e WebRTC. O novo API pode ser requisitado em áreas como streaming de jogos, aplicação de efeitos do lado do cliente, recodificação de fluxos e suporte a contêineres multimídia não padronizados. Em vez de implementar codecs separados em JavaScript ou WebAssembly, o API WebCodecs oferece acesso a componentes prontos de alta performance incorporados no navegador. Em particular, o API WebCodecs fornece decodificadores e codificadores de áudio e vídeo, decodificadores de imagens e funções para trabalhar com frames de vídeo em nível baixo.
- O API Insertable Streams foi estabilizado, permitindo a manipulação de fluxos multimídia brutos (raw) transmitidos através do API MediaStreamTrack, como dados da câmera e do microfone, resultados da captura de tela ou dados intermediários de decodificação pela codec. Para a representação de frames brutos são utilizados os interfaces WebCodec, após o que é formado um fluxo, semelhante ao que o API WebRTC Insertable Streams gera a partir de RTCPeerConnections. Do ponto de vista prático, o novo API permite implementar funcionalidades como a utilização de métodos de aprendizado de máquina para identificar ou anotar objetos em tempo real ou para adicionar efeitos, como remoção de fundo, antes da codificação ou após a decodificação pela codec.
- O método scheduler.postTask() foi estabilizado, permitindo gerenciar o agendamento da execução de tarefas (chamadas de retorno JavaScript) com diferentes níveis de prioridade. Três níveis de prioridade são fornecidos: 1 - execução em primeiro lugar, mesmo que operações do usuário possam ser bloqueadas; 2 - alterações visíveis ao usuário são permitidas; 3 - execução em segundo plano. Para alterar a prioridade e cancelar tarefas, pode-se utilizar o objeto TaskController.
- Estabilizado e agora disponível fora do Origin Trials, a API Idle Detection define a inatividade do usuário. A API permite determinar quando o usuário não interage com o teclado/mouse, quando o protetor de tela está ativado, a tela está bloqueada ou quando o trabalho está sendo realizado em outro monitor. A notificação ao aplicativo sobre a inatividade é realizada por meio do envio de um aviso após atingir um determinado limite de inatividade.
- O processo de gerenciamento de cores em objetos CanvasRenderingContext2D e ImageData foi formalizado, com o uso do espaço de cores sRGB. Agora é possível criar objetos CanvasRenderingContext2D e ImageData em espaços de cores diferentes de sRGB, como Display P3, para aproveitar as capacidades avançadas dos monitores modernos.
- A API VirtualKeyboard ganhou métodos e propriedades para controlar a exibição e ocultação do teclado virtual, além de obter informações sobre o tamanho do teclado virtual mostrado.
- No JavaScript, para classes, agora é possível usar blocos estáticos de inicialização que agrupam um código executado uma única vez durante o processamento da classe: class C { // O bloco será executado ao processar a própria classe static { console.log('Bloco estático de C'); } }
- As propriedades CSS flex-basis e flex implementaram as palavras-chave content, min-content, max-content e fit-content para um gerenciamento mais flexível do tamanho da área principal do Flexbox.
- Adicionado a propriedade CSS scrollbar-gutter para gerenciar a reserva de espaço na tela para a barra de rolagem. Por exemplo, quando a rolagem de conteúdo não é necessária, a saída pode ser ampliada para ocupar a área da barra de rolagem.
- Adicionada a API Self Profiling com a implementação de um sistema de profilagem que permite medir o tempo de execução de JavaScript do lado do usuário para depuração de problemas de desempenho no código JavaScript, sem recorrer a manipulações manuais na interface para desenvolvedores web.
- Após a remoção do plug-in Flash, foi decidido retornar valores vazios nas propriedades navigator.plugins e navigator.mimeTypes, mas, como se descobriu, alguns aplicativos os utilizavam para verificar a presença de plug-ins para exibir arquivos PDF. Como o Chrome possui um visualizador de PDF integrado, a partir de agora as propriedades navigator.plugins e navigator.mimeTypes retornarão uma lista fixa de plug-ins e tipos MIME padrão para visualização de PDF — "PDF Viewer, Chrome PDF Viewer, Chromium PDF Viewer, Microsoft Edge PDF Viewer e WebKit built-in PDF".
- Melhorias foram feitas nas ferramentas para desenvolvedores web. Dispositivos Nest Hub e Nest Hub Max foram adicionados à lista de simulação de telas. Na interface de inspeção de atividade de rede, foi adicionada um botão para inverter filtros (por exemplo, ao definir o filtro "status-code: 404", é possível visualizar rapidamente todas as outras solicitações), além de permitir a visualização dos valores originais do cabeçalho Set-Cookie (o que permite avaliar a presença de valores incorretos que são removidos durante a normalização). O painel lateral na web console foi declarado obsoleto e será removido em uma das próximas versões. Foi adicionada uma funcionalidade experimental para ocultar problemas na guia Issues. Nas configurações, foi adicionada a opção de escolher o idioma da interface.

Além das inovações e correções de bugs, a nova versão resolve 19 vulnerabilidades. Muitas dessas vulnerabilidades foram identificadas por meio de testes automatizados utilizando as ferramentas AddressSanitizer, MemorySanitizer, Control Flow Integrity, LibFuzzer e AFL. Não foram descobertos problemas críticos que permitem contornar todos os níveis de segurança do navegador e executar código no sistema fora do ambiente sandbox. No âmbito do programa de recompensas por vulnerabilidades, a empresa Google pagou 17 prêmios totalizando 56.500 dólares (um prêmio de $15.000, dois prêmios de $10.000, um prêmio de $7.500, quatro prêmios de $3.000 e dois prêmios de $1.000). O valor de 7 prêmios ainda não foi definido.
Fonte: opennet.ru





