1 pontos por GN⁺ 2023-07-27 | 1 comentários | Compartilhar no WhatsApp
  • O commit 6f47a22 do Chromium ajusta a estrutura de feature para permitir acesso a toda a Web API quando Web Environment Integrity é ativado via Origin Trial
  • A mudança principal é mover o base::Feature de content_features.h para uma feature gerada com base em runtime_enabled_features.json5, separando o flag de funcionalidade do controle de exposição da Web API
  • A Web API continua sendo controlada por RuntimeFeature e permanece desativada por padrão, mas, quando o Origin Trial a ativa, o acesso à API passa a ser possível
  • Se o base::Feature for desativado via Finch, ele vira um kill-switch da funcionalidade inteira, podendo impedir até mesmo que o Origin Trial a ative
  • A mudança abrange 15 arquivos, com 173 linhas adicionadas e 18 removidas, e inclui testes no WebView aproveitando o fato de que é possível falsificar respostas de origins conhecidos

Mudança de estrutura para liberar acesso à API WEI via Origin Trial

  • O título do commit é [wei] Ensure Origin Trial enables full feature, e ele corresponde ao commit 6f47a22 no repositório Chromium
  • O centro da mudança é garantir acesso completo à API quando o Web Environment Integrity for ativado por Origin Trial
  • A localização do base::Feature foi movida de content_features.h para uma feature gerada por runtime_enabled_features.json5
  • Nessa estrutura, o base::Feature pode ficar ativado por padrão, mas a exposição da Web API continua sob responsabilidade do RuntimeFeature, que permanece desligado no estado padrão

Relação entre Origin Trial, RuntimeFeature e kill-switch

  • O Origin Trial pode ativar o RuntimeFeature para liberar o acesso à API
  • Para que o acesso completo à API seja possível, não basta o RuntimeFeature: o base::Feature também precisa estar ativado, e essa condição foi refletida nas mudanças em origin_trial_context.cc
  • Se o base::Feature for desativado via Finch, ele passa a funcionar como kill-switch da funcionalidade inteira
    • Nesse caso, até a ativação da funcionalidade por Origin Trial é bloqueada

Comportamento verificado com testes no WebView

  • Os testes de WebView foram adicionados aproveitando o fato de que é fácil falsificar respostas de um origin conhecido
  • AwWebEnvironmentIntegrityTest.java inclui testes que verificam o seguinte comportamento
    • No estado padrão, navigator não tem getEnvironmentIntegrity
    • Ao ativar BlinkFeatures.WEB_ENVIRONMENT_INTEGRITY, a API pode ser usada
    • Ao desativar essa feature, a API volta a ficar indisponível
    • Com cabeçalho e token de Origin Trial, a chamada getEnvironmentIntegrity('contentBinding') é executada e o resultado de encode() é verificado
  • Os testes usam o origin https://example.com/, o cabeçalho Origin-Trial, o token de Origin Trial e o valor TOKEN_BASE64 AQIDBA==

Caminhos de código e mudança nas referências de feature

Escala da mudança e informações do commit

  • O commit alterou 15 arquivos, com 173 linhas adicionadas e 18 linhas removidas
  • Os bugs relacionados são 1439945 e b/278701736
  • O link de revisão é chromium-review.googlesource.com/c/chromium/src/+/4681552
  • A posição do commit é mostrada como refs/heads/main@{#1173344}

1 comentários

 
GN⁺ 2023-07-27
Comentários no Hacker News
  • Como material introdutório para entender a situação, o resumo do Vivaldi foi bom
    https://vivaldi.com/blog/googles-new-dangerous-web-environme...

    • Achei interessante e testei o Vivaldi, mas em 10 minutos ficou difícil acreditar nas alegações de privacidade
      O navegador padrão do sistema operacional estava definido como Firefox e todos os outros apps respeitavam isso, mas, durante a instalação, ao abrir links como a política de privacidade, ele usou o Microsoft Edge. Além disso, não há nenhum recurso de conteinerização; para impedir que cookies do Google de uma aba sejam lidos em outra, é preciso abrir uma nova janela privativa. Assim que desinstalei, a página perguntando por que eu estava removendo também abriu no Edge
  • A Mozilla deveria exigir que o Google fosse expulso do W3C por causa desta implementação do Web Environment Integrity
    Alguém vai dizer: “mas qual é a utilidade de um W3C sem o Google, se o Chrome tem 65% de participação?”. Só que, se o Google pode mudar unilateralmente os princípios básicos da web, então o W3C já é inútil. Se o Google quiser manter a aparência de que o W3C importa, precisa retirar esta implementação
    É inacreditável que, em apenas três dias, o futuro potencial da web tenha se tornado tão perigoso. Já existe uma proposta menos problemática — mas ainda ruim — chamada Private Access Tokens avançando em um comitê de padronização, e o Google a ignorou. A proposta foi publicada de forma muito suspeita por uma conta pessoal do GitHub, contribuições externas e comentários foram imediatamente fechados, e, apesar da reação contrária, uma implementação completa está sendo empurrada para dentro do Chromium
    O que é necessário é ação concreta, e a Mozilla sempre se apresentou como a guardiã neutra “de verdade” que protege os ideais da web. Agora é hora de provar isso. Simplesmente publicar uma posição contrária não basta. Isto é um ataque ao fundamento que sempre diferenciou a web de todos os ecossistemas fechados. Se alguém apresentasse ao W3C uma proposta dizendo que “apenas navegadores existentes devem ter permissão para renderizar páginas web”, a resposta correta não seria “somos contra essa proposta”, mas questionar seriamente se quem a apresentou tem qualificação para participar daquela organização. É exatamente isso que está acontecendo agora

    • É amplamente aceito que o modo comum de padronização da web é o defensor de um novo recurso primeiro implementá-lo e distribuí-lo e, depois que se comprova que ele funciona na prática, levar a especificação ao órgão de padronização
      Em geral isso funciona bem, mas, quando uma implementação anterior ao padrão faz sucesso demais, às vezes fica difícil depois trocá-la por uma implementação que siga o padrão aprovado. Isso porque mudanças grandes acontecem com frequência durante o processo de padronização
      Um exemplo é o layout CSS Grid. A Microsoft o adicionou ao IE 10 com o prefixo de fornecedor -ms-, quase todo mundo gostou e ele foi padronizado, mas havia diferenças grandes em relação à implementação original da Microsoft, então simplesmente remover -ms- do CSS não fazia o CSS Grid padrão funcionar corretamente
      Depois que a Microsoft o lançou inicialmente no IE 10, levou 4,5 anos até que outros navegadores o ativassem por padrão. O Chrome o incluiu como recurso experimental em menos de um ano, e o Firefox cerca de dois anos depois disso, mas os usuários precisavam ativá-lo manualmente. Durante esses 4,5 anos, sites que só se preocupavam com o IE usaram o formato -ms- em quantidade suficiente para que a Microsoft ficasse presa a esse formato no IE 10 e 11, em vez do padrão
    • Já é tarde demais. O W3C se tornou, na prática, irrelevante, e para começo de conversa nunca foi tão importante assim
      A internet não é feita por órgãos de padronização, mas por grandes empresas. Os padrões vivos de fato estão no WHATWG, e o software real é feito por Google, Apple, Cloudflare e Amazon. Ninguém liga para o W3C, e a Mozilla perdeu força há muito tempo
    • Quando a Apple fez algo parecido no Safari, nada aconteceu, todo mundo ficou quieto e, no HN, defenderam ativamente o monopólio do Apple Safari com esse recurso ativado. Então por que seria diferente agora?
    • Não há chance de a Mozilla fazer algo realmente significativo aqui. Ela talvez publique uma declaração em apoio à web aberta, fazendo um pouco de sinalização de virtude, mas não passará disso
    • Sinceramente, o W3C já tinha perdido sua voz quando o WHATWG empurrou o padrão XHTML para fora e o substituiu pelo comitê do HTML5
      Na época, ele ainda tinha peso suficiente para dizer algo como “a web é XHTML2; se quiserem, criem a internet de vocês”, mas hoje seu poder de negociação é muito menor
      Talvez a decisão de transferir a responsabilidade para as grandes empresas de internet tenha sido até razoável em certa medida, mas, no fim, foi o que levou ao estado atual, que na prática é um retorno à Microsoft Network inicial
      [1]http://www.codersnotes.com/notes/the-microsoft-network/
  • Não basta reclamar nos comentários; é preciso entrar em contato hoje com órgãos antitruste
    EUA: https://www.ftc.gov/enforcement/report-antitrust-violation / antitrust@ftc.gov
    UE: https://competition-policy.ec.europa.eu/antitrust/contact_en / comp-greffe-antitrust@ec.europa.eu
    Reino Unido: https://www.gov.uk/guidance/tell-the-cma-about-a-competition... / general.enquiries@cma.gov.uk
    Índia: https://www.cci.gov.in/antitrust/ / https://www.cci.gov.in/filing/atd

    • Acabei de enviar um e-mail para antitrust@ftc.gov. Para quem trava na hora de escrever, o Bing Chat gerou um rascunho bem decente, e só precisei ajustar um pouco
      1. No Edge, abri a página https://vivaldi.com/blog/googles-new-dangerous-web-environme...
      2. Ao abrir a barra lateral do Bing Chat no canto superior direito, ele resume o texto automaticamente
      3. Usei o prompt “usando o resumo desta página, escreva uma carta denunciando violações antitruste da Alphabet. Inclua o seguinte”; coloquei Alphabet como empresa, usei o conteúdo do texto como motivo pelo qual prejudica a concorrência, e informei que meu papel é o de usuário do navegador Firefox
    • Acabei de enviar um e-mail para a FTC. Foi bem aliviante, e acho que agora não preciso passar o resto do dia com raiva disso. Recomendo que outras pessoas também façam
    • Canadá: https://www.competitionbureau.gc.ca/eic/site/cb-bc.nsf/frm-e...
    • Para contato antitruste na UE, esta página parece melhor
      https://competition-policy.ec.europa.eu/antitrust/procedures...
      Ali dá para criar uma nova denúncia antitruste de forma específica
    • Respeito o otimismo, mas eu ficaria surpreso se o órgão do Reino Unido mexesse um dedo sequer. É inútil demais
  • Esta proposta é tão profundamente hostil ao usuário que é até difícil criticá-la em bases técnicas
    Não é uma proposta ruim; é uma proposta perigosa, maligna e mal-intencionada, então críticas aos detalhes são perda de tempo. O problema é o conjunto inteiro, e ele precisa ser descartado
    Protestos discretos não vão funcionar desta vez. O objetivo é criar um problema grande o suficiente para chamar a atenção de governos e reguladores e fazer com que procedimentos antitruste sejam iniciados
    O Google pode ir se ferrar com sua censura e seus avisos de “mantenha a civilidade”. Agora mostrou sua verdadeira face, e o código de conduta virou uma ferramenta para sufocar opiniões divergentes, não para reforçar boas práticas e um ambiente acolhedor
    Mudei para o Firefox e recomendo que outras pessoas façam o mesmo

    • Se você quer saber a “posição” do lado do Google, suas motivações ou razões técnicas, o documento explicativo está aqui
      https://github.com/RupertBenWiser/Web-Environment-Integrity/...
      É descaradamente hostil ao usuário. É uma tentativa de inverter a relação de “agente do usuário”, fazendo com que o agente trabalhe para anunciantes, empresas e governos que vigiam a pessoa atrás da tela. A forma como a introdução embrulha isso como se fosse algo de que os usuários precisam ou querem é repugnante
      Reescrito honestamente, ficaria assim: empresas como o Google precisam que anunciantes possam saber o máximo possível sobre os usuários. A receita pode depender de impressão digital do ambiente do cliente, rastreamento de comportamento e histórico, e de provar que há um ser humano com renda disponível suficiente atrás do teclado. Essa mineração de dados pessoais é a base do modelo de negócios do Google e é essencial para manter seu domínio da web e suas margens de lucro enormes
    • Concordo totalmente. Sentei para escrever uma carta para a FTC, mas, depois de ler essa especificação, não consegui formular direito em palavras por que sou contra. A reação se resume simplesmente a “que diabos é isso?”
      Já trabalhei com integrantes da equipe do Chromium no passado e, em geral, os via como competentes e bem-intencionados, mas nesta proposta de especificação não vejo nenhuma boa-fé nem competência. Parece que o Google mudou seu comportamento para algo muito mais direto e autoritário, indo além do fluxo antigo em que absorvia tudo lentamente
    • O problema não é só a proposta, é o próprio Google. O Google precisa ser dividido
    • Como alguém que não conhece bem o WEI, alguém poderia fazer um resumo do que ele faz e por que é ruim?
    • Como esse recurso é hostil aos usuários do Google?
      Também há benefícios reais ao permitir que sites façam mais coisas na web em vez de apps. Poderia haver menos CAPTCHAs e menos bots em redes sociais
      As plataformas que a maioria usa se beneficiariam, e usuários da Apple já parecem receber esse tipo de benefício
      Entendo o argumento de que ambientes open source piorariam. Mas google.com ainda funcionaria. Quem tornaria a experiência ruim seriam outros sites
  • Há muitos motivos para se opor a esse problema, mas o impacto sobre mecanismos de busca não foi muito discutido
    Se os sites implementarem isso, será praticamente impossível para novos entrantes criarem um mecanismo de busca na web. Os incumbentes poderão colocar seus próprios clientes em uma lista de permissão ou atestá-los, e classificar todos os outros clientes de scraping como bots
    Mesmo que não houvesse outros motivos, não entendo como se pode permitir que o Google, uma empresa de busca, empurre algo que lhe permitiria usar seu domínio de mercado em outra área, como navegadores, para matar a concorrência

    • Porque o antitruste ficou morto por um bom tempo. O Chrome é apenas uma ferramenta para levar pessoas ao Google e aos anúncios do Google
      Na época do IE e do Edge, o motor de navegador da Microsoft era algo pelo qual dava para ser grato, mesmo que o IE fosse notoriamente doloroso, porque trazia concorrência a essa área. Mas agora só temos Chrome (Blink), Firefox (Gecko) e Safari (WebKit), e ficou bem claro o que o Chrome fez depois de conquistar uma fatia dominante
      Talvez existam Googlers que acreditem sinceramente que estão tornando a web um lugar mais seguro, mas, dando um passo para trás, o verdadeiro motivo parece bastante claro
    • Não tinha pensado nisso. Será que existe algum procedimento para rejeitar isso, ainda que indiretamente, com base na restrição ao uso justo?
    • Será que seria possível implementar essa API de modo que ela falhe uns 5%, impedindo que sites bloqueiem indivíduos apenas por falha na atestação?
      https://github.com/RupertBenWiser/Web-Environment-Integrity/...
    • Incumbentes colocarem seus próprios clientes em uma lista de permissão e classificarem outros scrapers como bots não é algo que já dá para fazer com certificados de cliente comuns?
      Ou então bastaria enviar um cabeçalho de requisição com o HMAC da URL usando uma chave secreta compartilhada
      Mais fundamentalmente, por que seria necessário fazer scraping do próprio conteúdo? Dá para criar algum backchannel arbitrário para acessar os dados, como o Google faz ao colocar resultados do YouTube na página de resultados de busca. Não há nenhuma necessidade de oferecer um site que possa ser scrapeado de forma útil
    • Como isso funcionaria para scrapers que executam uma instância aprovada de navegador, como no caso do Selenium?
  • Mais um artigo moderado do The Register
    https://www.theregister.com/2023/07/25/google_web_environmen...
    Mesmo com a especificação ainda meio crua, a reação contrária na semana passada foi rápida; o repositório WEI no GitHub recebeu uma enxurrada de comentários em geral críticos, além de alguns insultos dirigidos ao autor da proposta. Desenvolvedores do Google restringiram os comentários a quem já havia contribuído anteriormente para o repositório e publicaram um documento de código de conduta com um lembrete para manter a civilidade
    É um jeito comum hoje em dia de lidar com oposição

    • Também é importante notar que os botões de reação — joinhas, corações etc. — foram bloqueados. Isso dá uma negação plausível para, mais tarde, dizer que “apenas poucas pessoas levantaram preocupações sobre o assunto X”. Jornalistas deveriam entender melhor esse ponto
      Separadamente, jornalistas ou pessoas que queiram entrar em contato diretamente com o autor da especificação podem olhar o site público dele. Está em um dos outros repositórios do perfil do GitHub onde a especificação foi publicada, e há também um e-mail pessoal. É dolorosamente absurdo que ele tenha escrito o texto abaixo em 2022
      “No fim, decidi transformar isso em um app. Foi aí que os custos começaram. Para criar um app iOS, tive de comprar um MacBook Pro usado. A estratégia da Apple é óbvia e realmente funciona, mas ainda fico extremamente irritado por não poder criar um app usando apenas um notebook Linux. Para manter o app por mais de um mês e permitir que meus amigos o instalassem facilmente, tive de pagar US$ 99 por uma conta de desenvolvedor. Apple, entendo que vocês queiram fazer as pessoas usarem a App Store, mas isso é um tanto cruel. Para continuar usando meu pequeno app, agora preciso pagar, na prática, US$ 99 todos os anos.”
      [0] https://benwiser.com/blog/I-just-spent-%C2%A3700-to-have-my-...
    • “Por favor, mantenham a civilidade enquanto destruímos a web como a conhecíamos. Também estou usando tampões de ouvido, só por precaução”
    • “Se quiser protestar contra a faca que estamos enfiando na sua barriga, pode. Mas você precisa de credenciais e civilidade”
    • Restringir postagens e exigir civilidade é a única maneira de uma pessoa se comunicar de forma significativa, mesmo que seja com milhares de pessoas
      A mente humana não está adaptada a uma internet social em escala de internet, com mais vozes diferentes do que batimentos cardíacos ao longo de uma vida
  • Há uma ação pequena, mas que dá para fazer de verdade: colocar no seu site uma mensagem sutil recomendando o uso do Firefox
    Não precisa ser algo super chamativo; uma frase pequena basta. Pode recomendar o Firefox ou qualquer outro navegador não baseado em Chromium
    Eu também adicionei ao meu site: https://geeklaunch.io/
    Fiz para aparecer apenas em navegadores baseados em Chromium. Dá para mudar o rumo aos poucos

    • Para quem quiser colocar algo assim, um exemplo de texto seria este:
      Este site foi projetado para o Firefox, um navegador web que respeita a privacidade
      A classe .hidden pode ocultar o elemento de alguma forma; aqui foi tratado como .hidden { display: none; }
    • Gosto da ideia, mas fico curioso para saber qual posição a Mozilla tomou sobre esse assunto
      Sou usuário do Firefox, mas já faz bastante tempo que não tenho só uma boa impressão da Mozilla. Antes de promovê-lo assim, eu gostaria de saber se a Mozilla está do lado certo nessa questão
    • Esse conselho tem uma vibe muito forte de 1998
    • A maioria das pessoas não sabe a diferença entre Chrome e Firefox e, se puder continuar usando os mesmos sites depois da mudança, acho que não vai se importar
      Mesmo que você explique a diferença, 99% vão esquecer no dia seguinte
      No fim, é inútil. Para esse tipo de abuso excessivo de poder, só intervenção e regulação governamental podem ajudar. O Google não é alguém que dê para enfrentar com a carteira; é grande demais
    • Foi dito que apareceria apenas em navegadores baseados em Chromium, mas, não sei qual é o método de detecção, esse aviso também aparece no Orion. O Orion é baseado em WebKit e não aparece no Safari
      Mesmo mudando explicitamente o user agent para Firefox ou Safari, ele continua aparecendo
  • Sinto que há um lado positivo em tudo isso. À medida que a World Wide Web vai sendo cada vez mais purificada e esterilizada por códigos de conduta, censura corporativa, publicidade, caça às bruxas e todo tipo de restrição, espero que as partes valiosas e interessantes migrem para espaços alternativos
    A internet de antigamente era um lugar onde se reuniam geeks, excêntricos, outsiders e pessoas de inclinação antissocial. Tudo era permitido e tudo era possível. Eu e muitos outros esperávamos que isso mudasse o mundo, mas não mudou. Como todos podem ver, o mundo está vencendo de novo. Ainda assim, espero que a normalização da web gere uma massa crítica de pessoas que queiram algo além de uma zona segura corporativa
    Torço sinceramente por um futuro em que protocolos como o Gemini, sem o ruído visual e os recursos “dinâmicos”, consigam usuários suficientes. Mesmo que isso não aconteça, para quem não usa redes sociais mainstream, serviços do Google e da Microsoft, LLMs e outras coisas modernas e distópicas, não há muito a perder. Existem livros excelentes o bastante para preencher cem vidas, trilhas nas montanhas para caminhar e amigos suficientes para beber junto. Talvez até seja melhor assim

    • A internet colorida de antigamente coexistia com a época em que serviços bancários eram feitos em agências
      Hoje, os serviços bancários migraram em grande parte para o online, e os bancos fecharam muitas agências físicas. O mesmo vale para o acesso a serviços governamentais em muitos países. A preocupação aqui é que, mesmo que sobreviva uma pequena internet de hobby para geeks e outsiders, sem um navegador compatível você possa deixar de conseguir realizar tarefas importantes do cotidiano
  • É preciso envolver a Wikimedia Foundation e fazer com que a Wikipedia ou outros grandes hosts MediaWiki não mostrem nenhum conteúdo quando esse recurso for detectado no navegador
    Além disso, se você for mantenedor de uma distribuição, deveria configurar os padrões do Apache e do nginx dessa forma
    Indo além, em vez de redirecionar para um mural com uma longa explicação de motivos políticos e técnicos, seria melhor mostrar apenas uma grande mensagem de ERROR dizendo que o navegador não é compatível por causa desse módulo e, se possível, uma instrução curta para desativá-lo em about:config

    • Se a ideia não for fazer servidores que não entendem WEI deixarem de funcionar corretamente, não concordo em mudar assim as configurações padrão do Apache e do nginx. Pelo menos não parece ser esse o caso
      Um administrador de sistemas pode mudar a configuração, mas aqui estamos falando dos padrões
      Dito isso, o restante da proposta parece bom. Mantenedores de distribuições também poderiam desativar o WEI nas configurações padrão do cliente ou deixar de incluir programas cliente que venham com WEI
  • É decepcionante ver uma guinada de 180 graus em relação ao “don’t be evil
    Estou recomendando o Mozilla Firefox a todos os meus amigos e familiares

    • Eu também faço isso e continuo tendo conversas cansativas, mas é realmente difícil transmitir o ponto central para quem não é especialista
      Mesmo entre meus amigos da área de tecnologia, muitos continuam usando o Chrome por conveniência, embora pudessem voltar para ele apenas quando algo realmente não funcionasse no Firefox. Como convencer pessoas que não entendem de tecnologia?
    • Finalmente consegui fazer minha esposa voltar para o Firefox. No Mac, o Chrome simplesmente travava e não abria páginas, enquanto todo o resto funcionava normalmente
      Agora ela usa bem o Firefox com o uBlock Origin sem limitações de recursos
    • Infelizmente, no fim das contas, não dá para dizer que o Firefox tenha uma boa UI/UX
      Da última vez que verifiquei, o suporte a múltiplos perfis também parecia estar em algum estado meio inacabado