A empresa Google lançou a versão 91 do navegador web Chrome. Ao mesmo tempo, a versão estável do projeto livre Chromium, que serve como base para o Chrome, está disponível. O navegador Chrome se destaca pelo uso dos logotipos do Google, pela presença de um sistema de envio de notificações em caso de falha, por módulos para reprodução de conteúdo de vídeo protegido (DRM), por um sistema automático de instalação de atualizações e pela transmissão de parâmetros RLZ durante as pesquisas. O próximo lançamento do Chrome 92 está previsto para 20 de julho.
Principais alterações no Chrome 91:
- Foi implementada a possibilidade de interromper a execução de JavaScript em grupos de abas minimizadas. No Chrome 85, foi adicionada a funcionalidade de agrupar abas, que podem estar associadas a uma cor e a uma etiqueta específicas. Ao clicar na etiqueta do grupo, as abas relacionadas são minimizadas e resta apenas uma etiqueta (um novo clique na etiqueta expande o grupo). Na nova versão, com o objetivo de reduzir a carga na CPU e economizar energia, foi implementada a pausa da atividade em abas minimizadas. Uma exceção é feita apenas para abas que estão reproduzindo som, usam a API Web Locks ou IndexedDB, estabeleceram conexão com dispositivos USB, ou estão capturando vídeo, som ou conteúdo de janelas. Essa mudança será implementada gradualmente, começando por uma pequena porcentagem de usuários.
- Foi adicionada a compatibilidade com o método de troca de chaves resistente à força bruta em computadores quânticos. Computadores quânticos resolvem de forma radicalmente mais rápida o problema da fatoração de números naturais em fatores primos, que está na base dos algoritmos de criptografia assimétrica modernos e é efetivamente insolúvel em processadores clássicos. Para uso no TLSv1.3, foi disponibilizado o plug-in CECPQ2 (Combined Elliptic-Curve and Post-Quantum 2), que combina o mecanismo clássico de troca de chaves X25519 com o esquema HRSS, baseado no algoritmo NTRU Prime, desenvolvido para criptossistemas pós-quânticos.
- O suporte aos protocolos TLS 1.0 e TLS 1.1 foi completamente encerrado, e estes foram catalogados como obsoletos pelo comitê IETF (Internet Engineering Task Force). Também foi removida a possibilidade de reverter para TLS 1.0/1.1 através da alteração da política SSLVersionMin.
- As compilações para a plataforma Linux incluem o uso do modo "DNS sobre HTTPS" (DoH, DNS over HTTPS), que anteriormente foi disponibilizado para usuários de Windows, macOS, ChromeOS e Android. O DNS sobre HTTPS será ativado automaticamente para usuários cujas configurações especificam provedores de DNS que suportam essa tecnologia (o mesmo provedor utilizado para DNS será aplicado ao DNS sobre HTTPS). Por exemplo, se o usuário tem configurado o DNS 8.8.8.8 nas configurações do sistema, o serviço DNS sobre HTTPS do Google será ativado no Chrome ("https://dns.google.com/dns-query"); se o DNS for 1.1.1.1, o serviço DNS sobre HTTPS da Cloudflare será ativado ("https://cloudflare-dns.com/dns-query"), e assim por diante.
- O porto 10080 foi adicionado à lista de portas de rede proibidas, utilizado no Amanda backup e VMWare vCenter. Anteriormente, as portas 69, 137, 161, 554, 1719, 1720, 1723, 5060, 5061 e 6566 já estavam bloqueadas. Para as portas na lista negra, o envio de solicitações HTTP, HTTPS e FTP é bloqueado para proteger contra ataques de NAT slipstreaming, que permitem que, ao abrir uma página da web especialmente preparada pelo atacante no navegador, uma conexão de rede seja estabelecida do servidor do atacante para qualquer porta UDP ou TCP no sistema do usuário, apesar do uso de intervalos de endereços internos (192.168.x.x, 10.x.x.x).
- Foi disponibilizada a configuração para o início automático de aplicativos web isolados (PWA — Progressive Web Apps) ao fazer login no sistema (Windows e macOS). O autoinício é configurado na página chrome://apps. A funcionalidade ainda está sendo testada em uma pequena porcentagem de usuários, enquanto para os demais é necessária a ativação da configuração "chrome://flags/#enable-desktop-pwas-run-on-os-login".
- No âmbito do trabalho para traduzir o navegador para uma terminologia inclusiva, o arquivo "master_preferences" foi renomeado para "initial_preferences". Para manter a compatibilidade, o suporte a "master_preferences" ainda será mantido no navegador por algum tempo. Anteriormente, o navegador já havia eliminado o uso das palavras "whitelist", "blacklist" e "native".
- No modo de proteção estendida contra sites perigosos (Enhanced Safe Browsing), são ativadas verificações adicionais para proteger contra phishing, atividades maliciosas e outras ameaças na web, permitindo o envio de arquivos carregados para verificação no lado do Google. Além disso, no Enhanced Safe Browsing, é implementada a contagem de tokens associados à conta do Google ao identificar tentativas de phishing, assim como o envio para os servidores do Google dos valores do cabeçalho Referrer para verificar o redirecionamento de sites maliciosos.
- Na edição para a plataforma Android, a apresentação dos elementos de formulários web foi aprimorada, sendo otimizada para uso em telas sensíveis ao toque e sistemas para pessoas com deficiência (a apresentação para sistemas desktop foi reformulada no Chrome 83). O objetivo da reestruturação foi a unificação da apresentação dos elementos do formulário e a eliminação de inconsistências nos estilos — anteriormente, parte dos elementos do formulário era projetada de acordo com os elementos de interface dos sistemas operacionais, enquanto parte seguia os estilos mais populares. Isso fazia com que diferentes elementos se adaptassem de maneiras distintas para telas sensíveis ao toque e sistemas para pessoas com deficiência.


- Adicionada uma pesquisa de opinião dos usuários, exibida ao abrir as configurações do Privacy Sandbox (chrome://settings/privacySandbox).
- Ao iniciar a versão Android do Chrome em tablets com telas grandes, agora é solicitado a versão desktop do site, em vez da versão para dispositivos móveis. Esse comportamento pode ser alterado na configuração "chrome://flags/#request-desktop-site-for-tablets".
- O código para renderização de tabelas foi reformulado, o que resolveu problemas de inconsistências de comportamento na exibição de tabelas no Chrome e no Firefox/Safari.
- Foi suspensa a manipulação de certificados de servidor do fornecedor espanhol Camerfirma devido a incidentes recorrentes desde 2017 relacionados a violações na emissão de certificados. O suporte para certificados de cliente foi mantido, e a restrição se aplica apenas aos certificados utilizados em sites para HTTPS.
- Continua a implementação do suporte ao particionamento de rede para proteger contra métodos de rastreamento de movimentos do usuário entre sites, baseados no armazenamento de identificadores em áreas não destinadas ao armazenamento permanente de informações ("Supercookies"). Como os recursos em cache são armazenados em um espaço de nomes compartilhado, independentemente do domínio de origem, um site pode determinar o carregamento de recursos de outro site verificando a presença desse recurso no cache. A proteção é baseada na aplicação do particionamento de rede, que consiste em adicionar uma ligação adicional nos caches compartilhados ao domínio, a partir do qual a página inicial foi aberta, o que limita o alcance do cache para scripts de rastreamento de movimentos apenas ao site atual (um script de iframe não poderá verificar se o recurso foi carregado de outro site).
O custo do particionamento é a redução da eficácia do cache, resultando em um pequeno aumento no tempo de carregamento da página (máximo de 1,32%, mas para 80% dos sites em 0,09-0,75%). Para testar o modo de particionamento, você pode iniciar o navegador com a opção "—enable-features=PartitionConnectionsByNetworkIsolationKey, PartitionExpectCTStateByNetworkIsolationKey, PartitionHttpServerPropertiesByNetworkIsolationKey, PartitionNelAndReportingByNetworkIsolationKey, PartitionSSLSessionsByNetworkIsolationKey, SplitHostCacheByNetworkIsolationKey".
- Adicionada a API externa REST VersionHistory (https://versionhistory.googleapis.com/v1/chrome), através da qual é possível obter informações sobre as versões do Chrome em relação às plataformas e ramificações, bem como o histórico de atualizações do navegador.
- Em iframes carregados de domínios diferentes do domínio da página base, a exibição de diálogos JavaScript alert(), confirm() e prompt() está proibida, o que protegerá os usuários contra tentativas de exibir mensagens por scripts de terceiros sob a alegação de que a notificação foi gerada pelo site principal.
- O API WebAssembly SIMD foi estabilizado e proposto como padrão para utilizar instruções SIMD vetoriais em aplicações no formato WebAssembly. Para garantir a portabilidade entre plataformas, é proposto um novo tipo de 128 bits, que pode representar diferentes tipos de dados empacotados, e várias operações vetoriais básicas para processar dados empacotados. SIMD permite aumentar o desempenho ao paralelizar o processamento de dados e será útil na compilação de código nativo em WebAssembly.
- 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.
- WebTransport — um protocolo e API JavaScript associado para enviar e receber dados entre o navegador e servidor. O canal de comunicação é organizado sobre HTTP/3 usando o protocolo QUIC como transporte, que, por sua vez, é uma extensão do protocolo UDP, suportando multiplexação de várias conexões e fornecendo métodos de criptografia equivalentes ao TLS/SSL.
WebTransport pode ser usado em vez de mecanismos como WebSockets e RTCDataChannel, oferecendo funcionalidades adicionais, como a organização de transmissões em múltiplos fluxos, fluxos unidirecionais, entrega sem garantir a ordem de envio de pacotes (out-of-order), modos de entrega confiáveis e não confiáveis. Além disso, o WebTransport pode ser utilizado em vez do mecanismo Server Push, do qual o Google se desfaz em Chrome.
- Interface declarativa para definir links para aplicativos web isolados (PWA), ativada pelo parâmetro capture_links no manifesto do aplicativo web e permitindo que sites abram automaticamente uma nova janela PWA ao clicar no link do aplicativo ou mudem para o modo de janela única, semelhante a aplicativos móveis.
- Adicionado o API WebXR Plane Detection, que fornece informações sobre superfícies planas em um ambiente 3D virtual. O API permite evitar processamento intensivo de dados obtidos através da chamada MediaDevices.getUserMedia(), utilizando implementações próprias de algoritmos de visão computacional. Vale lembrar que o API WebXR unifica o trabalho com diferentes classes de dispositivos de realidade virtual, desde headsets 3D estacionários a soluções baseadas em dispositivos móveis.
- WebTransport — um protocolo e API JavaScript associado para enviar e receber dados entre o navegador e servidor. O canal de comunicação é organizado sobre HTTP/3 usando o protocolo QUIC como transporte, que, por sua vez, é uma extensão do protocolo UDP, suportando multiplexação de várias conexões e fornecendo métodos de criptografia equivalentes ao TLS/SSL.
- Implementado suporte para WebSockets sobre HTTP/2 (RFC 8441), que funciona apenas para solicitações seguras a WebSockets e quando uma conexão HTTP/2 já está estabelecida com o servidor, na qual foi anunciada a suporte para a extensão 'WebSockets over HTTP/2'.
- As limitações de precisão dos valores do timer retornados pela chamada performance.now() foram unificadas para todas as plataformas suportadas e adaptadas considerando a possível isolamento de manipuladores em processos separados. Por exemplo, em sistemas desktop, a precisão no processamento em contextos não isolados foi reduzida de 5 para 100 microssegundos.
- As coleções para sistemas de desktop implementaram a capacidade de ler arquivos da área de transferência (a gravação de arquivos na área de transferência ainda é proibida). async function onPaste(e) { let file = e.clipboardData.files[0]; let contents = await file.text(); }
- No CSS, foi implementada a regra @counter-style, permitindo definir estilos personalizados para contadores e rótulos em listas numeradas.
- No CSS, os pseudo-classes ':host()' e ':host-context()' ganharam a possibilidade de transmitir valores únicos de seletores compostos (<compound-selector>) além de listas de seletores (<compound-selector-list>).
- Adicionado a interface GravitySensor para a determinação de dados volumétricos (em três eixos de coordenadas) provenientes do sensor de gravidade.
- Na API File System Access, foi adicionada a capacidade de definir recomendações de escolha de nome de arquivo e diretório, apresentadas no diálogo de criação ou abertura de arquivos.
- Em iframes carregados de outros domínios, é permitido o acesso à API WebOTP, desde que o usuário conceda as permissões adequadas. WebOTP permite ler códigos de verificação temporários enviados via SMS.
- É permitido o compartilhamento de credenciais para sites relacionados por meio do mecanismo DAL (Digital Asset Links), que permite associar aplicativos Android a sites para simplificar o login.
- No Service Worker, é permitido o uso de módulos JavaScript. Ao especificar o tipo 'module' durante a chamada do construtor, os scripts indicados serão carregados como módulos e estarão disponíveis para importação no contexto do worker. O suporte a módulos simplifica o compartilhamento de código em páginas web e em Service Workers.
- No JavaScript, foi introduzida a possibilidade de verificar a existência de campos privados em um objeto, utilizando a sintaxe '#foo in obj'. class A { static test(obj) { console.log(#foo in obj); } #foo = 0; } A.test(new A()); // true A.test({}); // false
- No JavaScript, por padrão, é permitido o uso da palavra-chave await em módulos de nível superior, o que permite uma integração mais suave de chamadas assíncronas no processo de carregamento de módulos, eliminando a necessidade de encapsulá-las em uma 'async function'. Por exemplo, em vez de (async function() { await Promise.resolve(console.log('teste')); }()); agora pode-se escrever await Promise.resolve(console.log('teste'));
- No motor JavaScript V8, a eficiência do cache de templates foi aumentada, resultando em um aumento de 4,5% na velocidade do teste Speedometer2-FlightJS.
- Uma grande quantidade de melhorias foi feita nas ferramentas para desenvolvedores web. Adicionado um novo modo de inspeção de memória (Memory inspector), que fornece ferramentas para investigar dados ArrayBuffer e memória Wasm.

No painel Performance, foi adicionado um indicador resumido de performance, permitindo avaliar se um site necessita de otimização ou não.

Ao visualizar imagens no painel Elements e no painel de análise de requisições de rede, são fornecidas informações sobre a proporção da imagem, os parâmetros de visualização e o tamanho do arquivo.

No painel de inspeção da rede, agora é possível alterar os valores aceitos do cabeçalho Content-Encoding.

No painel de estilos, há uma nova opção para visualizar rapidamente o valor computado ao navegar pelas propriedades CSS, selecionando no menu de contexto "Ver valor computado".

Além das novidades e correções de erros, a nova versão corrigiu 32 vulnerabilidades. Muitas das vulnerabilidades foram identificadas por meio de testes automatizados com as ferramentas AddressSanitizer, MemorySanitizer, Control Flow Integrity, LibFuzzer e AFL. Nenhum problema crítico que permita contornar todos os níveis de segurança do navegador e executar código no sistema fora do ambiente sandbox foi detectado. No âmbito do programa de recompensas por descobertas de vulnerabilidades para esta versão, a Google concedeu 21 prêmios totalizando 92.000 dólares (um prêmio de $20.000, um prêmio de $15.000, quatro prêmios de $7.500, três prêmios de $5.000, três prêmios de $3.000, dois prêmios de $1.000 e dois prêmios de $500). O valor de 5 recompensas ainda não foi definido.
Fonte: opennet.ru







