A empresa Google lançou a versão 93 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 da Google, pela presença de um sistema de envio de notificações em caso de falhas, módulos para reprodução de conteúdo de vídeo protegido (DRM), sistema de instalação automática de atualizações e transmissão dos parâmetros RLZ durante as buscas. A próxima versão do Chrome, a 94, está prevista para 21 de setembro (o desenvolvimento foi transferido para um ciclo de 4 semanas de lançamentos).
Principais mudanças no Chrome 93:
- Foi modernizada a aparência do bloco de informações da página (page info), que agora suporta blocos aninhados, e os menus suspensos com permissões de acesso foram substituídos por interruptores. As listas agora apresentam as informações mais importantes prioritariamente. Essa mudança não foi aplicada a todos os usuários; para ativá-la, pode-se usar a configuração 'chrome://flags/#page-info-version-2-desktop'.

- Para uma pequena porcentagem de usuários, como parte de um experimento, o indicador de conexão segura na barra de endereço foi alterado para um símbolo mais neutro e que não gera ambiguidade (o cadeado foi substituído pelo sinal 'V'). Para conexões estabelecidas sem criptografia, o indicador 'não seguro' continua sendo exibido. A razão para a mudança do indicador é que muitos usuários associam o cadeado à confiabilidade do conteúdo do site, em vez de o ver como um sinal de criptografia da conexão. De acordo com uma pesquisa da Google, apenas 11% dos usuários compreendem o significado do ícone do cadeado.

- Na lista de abas recentemente fechadas, agora é possível visualizar o conteúdo de grupos de abas fechadas (anteriormente, apenas o nome do grupo era exibido sem detalhes sobre o conteúdo), com a opção de restaurar todo o grupo ou abas individuais de uma vez. Essa possibilidade não está ativada para todos os usuários, portanto, pode ser necessário alterar a configuração 'chrome://flags/#tab-restore-sub-menus' para ativá-la.

- Para as empresas, foram implementadas novas configurações DefaultJavaScriptJitSetting, JavaScriptJitAllowedForSites e JavaScriptJitBlockedForSites, permitindo gerenciar o modo JIT-less, que desativa a aplicação da compilação JIT durante a execução do JavaScript (apenas o interpretador Ignition é usado) e proíbe a alocação de memória executável durante a execução do código. Desativar o JIT pode ser útil para aumentar a segurança ao lidar com aplicativos web potencialmente perigosos, a custo de uma redução no desempenho da execução do JavaScript de aproximadamente 17%. Notavelmente, a empresa Microsoft foi ainda mais longe e implementou no navegador Edge um modo experimental chamado 'Super Duper Secure', que permite ao usuário desativar o JIT e ativar mecanismos de proteção de hardware que não são compatíveis com JIT, como CET (Controlflow-Enforcement Technology), ACG (Arbitrary Code Guard) e CFG (Control Flow Guard) para processos que tratam conteúdo web. Se o experimento for bem-sucedido, pode-se esperar a sua inclusão na versão principal do Chrome.
- Na página da nova guia, uma lista dos documentos mais procurados, salvos no Google Drive, é exibida. O conteúdo da lista corresponde à seção Prioridade em drive.google.com. Para gerenciar a exibição do conteúdo do Google Drive, você pode usar as configurações 'chrome://flags/#ntp-modules' e 'chrome://flags/#ntp-drive-module'.

- Para a página de abertura de uma nova guia, foram propostas novos cartões informativos que ajudam a encontrar conteúdo recentemente visualizado e informações relacionadas. Os cartões têm como objetivo simplificar a continuidade do trabalho com informações cuja visualização foi interrompida, por exemplo, os cartões ajudam a encontrar a receita de um prato que foi recentemente encontrado na web, mas perdido após o fechamento da página, ou continuar as compras em lojas. Como parte de um experimento, duas novas cartas foram oferecidas aos usuários: 'Receitas' (chrome://flags/#ntp-recipe-tasks-module) para busca de receitas culinárias e exibição de receitas visualizadas recentemente; 'Compras' (chrome://flags/#ntp-chrome-cart-module) para lembretes sobre produtos selecionados em lojas online.
- Na versão para a plataforma Android, foi adicionada suporte opcional para a barra de pesquisa contínua (chrome://flags/#continuous-search), permitindo manter à vista os resultados de busca recentes no Google (a barra continua a mostrar resultados após a navegação para outras páginas).

- Na versão para a plataforma Android, foi adicionado um modo experimental de compartilhamento de citações (chrome://flags/#webnotes-stylize), permitindo salvar uma seleção de uma página na forma de citação e compartilhá-la com outros usuários.
- Ao publicar novas extensões ou atualizações de versões na Chrome Web Store, agora é obrigatória a aplicação da verificação de dois fatores para desenvolvedores.
- Para usuários da Conta do Google, foi disponibilizada a opção de salvar informações de pagamento em sua conta Google.
- No modo incógnito, ao ativar a opção de limpeza de dados de navegação, uma nova caixa de diálogo de confirmação foi implementada, explicando que a limpeza de dados resultará no fechamento da janela e no término de todas as sessões no modo incógnito.
- Devido a incompatibilidades detectadas com o firmware de alguns dispositivos, o suporte ao novo método de negociação de chaves, resistente a ataques em computadores quânticos, introduzido no Chrome 91, foi temporariamente desativado. Esse método é baseado na utilização da extensão CECPQ2 (Combined Elliptic-Curve and Post-Quantum 2) no TLSv1.3, que combina o mecanismo clássico de troca de chaves X25519 com o esquema HRSS, desenvolvido para criptossistemas pós-quânticos.
- Foram adicionadas às portas de rede proibidas as portas 989 (ftps-data) e 990 (ftps) com o objetivo de bloquear o ataque ALPACA. Anteriormente, para proteger contra o ataque de NAT slipstreaming, as portas 69, 137, 161, 554, 1719, 1720, 1723, 5060, 5061, 6566 e 10080 já haviam sido bloqueadas.
- Foi descontinuado o suporte a cifras baseadas no algoritmo 3DES no TLS. Em particular, o conjunto de cifras TLS_RSA_WITH_3DES_EDE_CBC_SHA, vulnerável ao ataque Sweet32, foi removido.
- O suporte à distribuição Ubuntu 16.04 foi encerrado.
- Agora é possível usar a API WebOTP entre diferentes dispositivos conectados através da mesma conta Google. O WebOTP permite que um aplicativo web leia códigos de confirmação de uso único enviados por SMS. A alteração proposta permite que um código de confirmação seja obtido em um dispositivo móvel com Chrome para Android e aplicado em um sistema desktop.
- A API User-Agent Client Hints, em desenvolvimento como substituta do cabeçalho User-Agent, foi expandida. O User-Agent Client Hints permite que a entrega seletiva de dados sobre parâmetros específicos do navegador e do sistema (versão, plataforma, etc.) ocorra apenas após solicitação. servidor. O usuário, por sua vez, pode determinar que informações podem ser fornecidas aos proprietários de sites. Ao utilizar User-Agent Client Hints, o identificador do navegador não é enviado sem uma solicitação explícita, e por padrão são informados apenas os parâmetros básicos, o que dificulta a identificação passiva.
Na nova versão, foi implementado suporte ao parâmetro Sec-CH-UA-Bitness para retornar dados sobre a arquitetura da plataforma, o que pode ser utilizado para fornecer arquivos binários otimizados. Por padrão, é garantido o envio do parâmetro Sec-CH-UA-Platform com informações gerais sobre a plataforma. No valor UADataValues, emitido ao chamar getHighEntropyValues(), por padrão, são fornecidos parâmetros generalizados, caso não seja possível retornar uma versão detalhada. O objeto NavigatorUAData teve o método toJSON adicionado, permitindo o uso de construções como JSON.stringify(navigator.userAgentData).
- Foi estabilizada e proposta por padrão a possibilidade de empacotar recursos em pacotes no formato Web Bundle, adequado para organizar o carregamento mais eficiente de um grande número de arquivos relacionados (CSS, JavaScript, imagens, iframe). Entre as desvantagens do suporte existente a pacotes para arquivos JavaScript (webpack), que tentam ser corrigidas no Web Bundle: o próprio pacote pode ficar armazenado no cache HTTP, mas não suas partes constituintes; a compilação e execução podem começar apenas após o carregamento completo do pacote; recursos adicionais, como CSS e imagens, devem ser codificados na forma de strings JavaScript, o que leva ao aumento do tamanho e à execução de mais uma fase de análise.
- O API WebXR Plane Detection foi incluído, fornecendo informações sobre superfícies planas em um ambiente 3D virtual. O referido API permite evitar o processamento intensivo de dados obtidos através da chamada MediaDevices.getUserMedia(), utilizando implementações próprias de algoritmos de visão computacional. Lembramos que o API WebXR permite unificar a operação com diferentes classes de dispositivos de realidade virtual, desde headsets 3D estacionários até soluções baseadas em dispositivos móveis.
- 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 proposto o API Multi-Screen Window Placement, permitindo posicionar janelas em qualquer display conectado ao sistema atual, bem como salvar a posição da janela e, se necessário, expandi-la para tela cheia. Por exemplo, com o referido API, uma aplicação web para apresentação pode organizar a exibição de slides em uma tela, enquanto exibe notas para o apresentador em outra.
- No cabeçalho Cross-Origin-Embedder-Policy, que gerencia o modo de isolamento Cross-Origin e permite definir regras para o uso seguro em uma página de operações privilegiadas, foi adicionada a suporte para o parâmetro "credentialless" para desabilitar a transmissão de informações relacionadas a credenciais, como Cookies e certificados de cliente.
- Para aplicativos web instaláveis isoladamente (PWA, Progressive Web Apps), que gerenciam o conteúdo da janela e lidam com a entrada, foi disponibilizado um overlay com elementos de controle de janela, como uma área de cabeçalho e botões para expandir/contrair a janela. O overlay amplia a área modificável para toda a janela e permite adicionar seus próprios elementos na área do cabeçalho.

- Foi adicionada a capacidade de criar aplicativos PWA que podem ser usados como manipuladores de URL. Por exemplo, o aplicativo music.example.com pode se registrar como um manipulador de URL https://*.music.example.com e todas as navegações de aplicativos externos através desses links, como de mensageiros e clientes de e-mail, levarão à abertura dos respectivos aplicativos PWA, em vez de uma nova aba no navegador.
- Foi disponibilizada a possibilidade de carregar arquivos CSS por meio da expressão "import", semelhante ao carregamento de módulos JavaScript, o que é conveniente ao criar seus próprios elementos e permite evitar o uso de designações de estilo via JavaScript. import sheet from './styles.css' assert { type: 'css' }; document.adoptedStyleSheets = [sheet]; shadowRoot.adoptedStyleSheets = [sheet];
- Foi fornecido um novo método estático AbortSignal.abort(), que retorna um objeto AbortSignal, já marcado como aborted. Em vez de várias linhas de código para criar um objeto AbortSignal no estado aborted, agora se pode usar uma única linha: "return AbortSignal.abort()".
- O elemento Flexbox agora suporta palavras-chave start, end, self-start, self-end, left e right, complementando as palavras-chave center, flex-start e flex-end com recursos para simplificar o alinhamento da posição dos elementos flex.
- No construtor Error() foi implementada uma nova propriedade opcional "cause", que facilita a vinculação de erros entre si. const parentError = new Error('parent'); const error = new Error('parent', { cause: parentError }); console.log(error.cause === parentError); // → true
- A propriedade HTMLMediaElement.controlsList agora suporta o modo noplaybackrate, permitindo desativar os elementos da interface do navegador que mudam a velocidade de reprodução do conteúdo multimídia.
- Foi adicionado o cabeçalho Sec-CH-Prefers-Color-Scheme, que permite transmitir informações sobre o esquema de cores preferido pelo usuário durante o envio do pedido, utilizado nas media queries 'prefers-color-scheme', permitindo que o site otimize o carregamento do CSS relacionado ao esquema selecionado e evite mudanças visíveis de outros esquemas.
- Adicionada a propriedade Object.hasOwn, que representa uma versão simplificada de Object.prototype.hasOwnProperty, implementada na forma de um método estático. Object.hasOwn({ prop: 42 }, 'prop') // → true
- No compilador JIT Sparkplug, destinado à execução rápida de compilação bruta, foi adicionado um modo de execução em lote de operações, reduzindo os custos de alternância de páginas de memória entre os modos de gravação e execução. O Sparkplug agora compila várias funções de uma vez e chama o mprotect uma única vez para alterar os direitos de acesso de todo o grupo. O modo proposto reduz significativamente o tempo de compilação (em até 44%), sem impacto negativo no desempenho da execução do JavaScript.

- Na versão para Android, os mecanismos de proteção contra ataques por canal lateral integrados no mecanismo V8 foram desativados, pois considerados menos eficazes do que a isolação de sites em processos separados. Na versão desktop, esses mecanismos já haviam sido desativados na versão 70 do Chrome. A desativação de verificações desnecessárias permitiu um aumento de desempenho de 2-15%.

- Foram feitas melhorias nas ferramentas para desenvolvedores web. No modo de inspeção de folhas de estilo, agora é possível editar consultas formadas por meio da expressão @container. No modo de inspeção de rede, implementada a pré-visualização de recursos no formato Web bundle. No console da web, foram adicionadas opções ao menu de contexto para copiar linhas na forma de literais JavaScript ou JSON. A depuração de erros relacionados ao CORS (Cross-Origin Resource Sharing) foi simplificada.

Além das inovações e correções de bugs na nova versão, 27 vulnerabilidades foram eliminadas. Muitas das vulnerabilidades foram identificadas através de testes automatizados utilizando ferramentas como AddressSanitizer, MemorySanitizer, Control Flow Integrity, LibFuzzer e AFL. Não foram identificados problemas críticos que permitam contornar todos os níveis de proteção do navegador e executar código no sistema fora do ambiente sandbox. No âmbito do programa de recompensas por identificação de vulnerabilidades para a versão atual, a Google pagou 19 prêmios que totalizaram 136.500 dólares (três prêmios de $20.000, um prêmio de $15.000, três prêmios de $10.000, um prêmio de $7.500, três prêmios de $5.000 e três prêmios de $3.000). O valor de 5 recompensas ainda não foi definido.
Fonte: opennet.ru









