A empresa Google lançou a versão 97 do navegador web Chrome. 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, um sistema de envio de notificações em caso de falha, módulos para reprodução de conteúdo de vídeo protegido contra cópia (DRM), um sistema de instalação automática de atualizações e a transmissão de parâmetros RLZ durante as buscas. Para aqueles que necessitam de mais tempo para atualizar, uma versão Extended Stable é mantida separadamente, após 8 semanas, que contém uma atualização para a versão anterior do Chrome 96. A próxima versão do Chrome 98 está programada para o dia 1 de fevereiro.
Principais mudanças no Chrome 97:
- Para alguns usuários, um novo interface para gerenciamento de dados armazenados no navegador foi implementada no configurador ("chrome://settings/content/all"). A principal diferença dessa nova interface é a orientação para configurar permissões e limpar todos os cookies de um site de uma só vez, sem a possibilidade de visualizar informações detalhadas sobre cookies individuais ou excluí-los seletivamente. Segundo o Google, o acesso ao gerenciamento de cookies individuais para usuários comuns, que não entendem os detalhes do desenvolvimento web, pode levar a quebras inesperadas nos sites devido a mudanças imprudentes em determinados parâmetros, assim como ao desligamento acidental de mecanismos de proteção à privacidade ativados por meio de cookies. Para aqueles que precisam manipular cookies individuais, é recomendado usar a seção de gerenciamento de armazenamento nas ferramentas para desenvolvedores web (Application/Storage/Cookie).

- Na seção com informações sobre o site, uma breve descrição do site (por exemplo, uma descrição da Wikipédia) é exibida, caso a opção de otimização de busca e navegação esteja ativada nas configurações (opção "Make searches and browsing better").

- Melhor suporte à auto-preenchimento de campos em formulários web. As recomendações com opções de auto preenchimento agora são exibidas com um pequeno desvio e vêm acompanhadas de ícones informativos para uma visualização mais conveniente e para identificar claramente a relação com o campo que está sendo preenchido. Por exemplo, o ícone de perfil indica que o auto preenchimento sugerido está relacionado aos campos de endereço e informações de contato.

- Garantiu a remoção da memória dos manipuladores de perfis de usuário após o fechamento das janelas do navegador associadas. Anteriormente, os perfis permaneciam na memória e continuavam a realizar tarefas relacionadas à sincronização e execução de scripts em segundo plano de extensões, o que levava a um uso excessivo de recursos em sistemas que utilizavam vários perfis simultaneamente (por exemplo, perfil de convidado e vinculação a uma conta do Google). Além disso, foi realizada uma limpeza mais cuidadosa dos dados que permanecem durante a interação com o perfil.
- Melhorou a página de configurações dos motores de busca (‘Configurações > Gerenciar motores de busca’). A ativação automática de motores, cuja informação é fornecida ao abrir o site através do script OpenSearch, foi desativada — novos motores para processar consultas de busca da barra de endereços agora precisam ser ativados manualmente nas configurações (motores que anteriormente eram ativados automaticamente continuarão a funcionar sem alterações).
- A partir de 17 de janeiro, não serão aceitas extensões no catálogo do Chrome Web Store que utilizem a segunda versão do manifesto do Chrome, mas os desenvolvedores de extensões já adicionadas poderão publicar atualizações como antes.
- Foi adicionada a suporte experimental à especificação WebTransport, que define o protocolo e a API JavaScript correspondente para o envio e recebimento de dados entre o navegador e servidor. O canal de comunicação é organizado sobre HTTP/3 utilizando o protocolo QUIC como transporte. O WebTransport pode ser usado em vez do mecanismo WebSockets, oferecendo recursos adicionais, como a organização de transferências em múltiplos fluxos, fluxos unidirecionais, entrega sem considerar a ordem de envio de pacotes (fora de ordem), modos de entrega confiáveis e não confiáveis. Além disso, o WebTransport pode ser aplicado em vez do mecanismo Server Push, do qual a Google se afastou no Chrome.
- Na linguagem JavaScript, os objetos Array e TypedArrays foram adicionados com os métodos findLast e findLastIndex, permitindo buscar elementos com base no resultado relativo ao final do array. [1,2,3,4].findLast((el) => el % 2 === 0) // → 4 (último elemento par)
- Elementos HTML fechados (sem o atributo ‘open’) agora estão disponíveis para pesquisa e links, e se expandem automaticamente ao utilizar a pesquisa na página e navegação por fragmentos (ScrollToTextFragment).
- Restrições da Política de Segurança de Conteúdo (CSP) nos cabeçalhos de resposta servidor agora se aplicam também aos workers dedicados, que anteriormente eram tratados como documentos separados.
- Foi feito um pedido explícito de autorização para carregar quaisquer sub-recursos da rede interna — ao acessar a rede interna ou localhost no servidor do site principal, agora é enviado um pedido CORS (Compartilhamento de Recursos de Origem Cruzada) com o cabeçalho ‘Access-Control-Request-Private-Network: true’, exigindo confirmação da operação por meio do retorno do cabeçalho ‘Access-Control-Allow-Private-Network: true’.
- Adicionado a propriedade CSS font-synthesis, que permite gerenciar a possibilidade de síntese de estilos de fonte ausentes (oblique, bold e small-cap) pelo navegador, que não estão disponíveis na família de fontes selecionada.
- Para transformações CSS, na função perspective() foi implementado o parâmetro ‘none’, que é tratado como um valor infinito ao organizar animações.
- No cabeçalho HTTP Permissions-Policy (Feature Policy), utilizado para delegar permissões e habilitar recursos avançados, foi adicionada a compatibilidade com o valor keyboard-map, que permite o uso da API Keyboard. Foi implementado o método Keyboard.getLayoutMap(), que permite identificar qual tecla foi pressionada considerando diferentes layouts de teclado (por exemplo, se a tecla foi pressionada no layout russo ou no inglês).
- Adicionado o método HTMLScriptElement.supports(), que unifica a definição de novos recursos disponíveis no elemento ‘script’, permitindo, por exemplo, descobrir a lista de valores suportados para o atributo ‘type’.
- O processo de normalização de novas linhas ao enviar formulários web foi alinhado com os mecanismos dos navegadores Gecko e WebKit. A normalização dos caracteres de nova linha e retorno de carro (substituindo /r e /n por \r\n) no Chrome agora é feita na última fase, e não no início do processamento do envio do formulário (ou seja, manipuladores intermediários que usam o objeto FormData verão os dados como o usuário inseriu, e não da forma normalizada).
- Padronizado a nomenclatura dos nomes das propriedades para a API Client Hints, desenvolvida como substituta do cabeçalho User-Agent e que permite fornecer seletivamente dados sobre parâmetros específicos do navegador e sistema (versão, plataforma, etc.) somente após a solicitação do servidor. As propriedades agora são prefixadas com ‘sec-ch-‘, por exemplo, sec-ch-dpr, sec-ch-width, sec-ch-viewport-width, sec-ch-device-memory, sec-ch-rtt, sec-ch-downlink e sec-ch-ect.
- A segunda fase de descontinuação do suporte à API WebSQL foi aplicada, e agora o acesso a ela a partir de scripts de terceiros será bloqueado. No futuro, está previsto um encerramento gradual completo do suporte ao WebSQL, independentemente do contexto de uso. O manipulador do WebSQL é baseado no código SQLite e poderia ser explorado por invasores para tirar proveito de vulnerabilidades no SQLite.
- Para a plataforma Windows, foi incluída uma compilação com verificações de integridade do fluxo de execução (CFG, Control Flow Guard), bloqueando tentativas de injeção de código no processo do Chrome. Além disso, os serviços de rede, executados em processos separados, agora aplicam isolamento sandbox, limitando as capacidades do código nesses processos.
- O Chrome para Android agora conta com um mecanismo de atualização dinâmica do log de certificados emitidos e revogados (Certificate Transparency), que anteriormente foi ativado nas versões para sistemas desktop.
- Foram feitas melhorias nas ferramentas para desenvolvedores web. Implementado suporte experimental para sincronização das configurações do DevTools entre diferentes dispositivos. Adicionada uma nova aba Recorder, que permite gravar, reproduzir e analisar as ações do usuário na página.

Ao exibir erros no console da web, agora são mostrados os números das colunas relacionadas ao problema, facilitando a depuração de problemas no código JavaScript minimificado. Atualizada a lista de dispositivos que podem ser simulados para avaliar a exibição de páginas em dispositivos móveis. Na interface de edição de blocos HTML (Edit as HTML), foram adicionados realce de sintaxe e a possibilidade de autocompletar a entrada.

Além das novas funcionalidades e correções de bugs, a nova versão elimina 37 vulnerabilidades. Muitas das vulnerabilidades foram identificadas por meio de testes automatizados utilizando ferramentas como AddressSanitizer, MemorySanitizer, Control Flow Integrity, LibFuzzer e AFL. Uma das vulnerabilidades recebeu o status de problema crítico, permitindo contornar todos os níveis de proteção do navegador e executar código no sistema, fora do ambiente sandbox. Detalhes sobre a vulnerabilidade crítica (CVE-2022-0096) ainda não foram divulgados, sabe-se apenas que está relacionada ao acesso a uma área de memória já liberada no código que lida com armazenamentos internos (API Storage).
No âmbito do programa de recompensa por descoberta de vulnerabilidades para a versão atual, a Google pagou 24 prêmios no total de 54 mil dólares (três prêmios de $10,000, dois prêmios de $5,000, um prêmio de $4,000, três prêmios de $3,000 e um prêmio de $1,000). O valor de 14 recompensas ainda não foi definido.
Fonte: opennet.ru





