1 puntos por GN⁺ 2023-07-27 | 1 comentarios | Compartir por WhatsApp
  • El commit de Chromium 6f47a22 ajusta la estructura de la feature para que, al activar Web Environment Integrity como Origin Trial, se pueda acceder a toda la API web
  • El cambio clave es que base::Feature pasa de content_features.h a una feature generada basada en runtime_enabled_features.json5, separando el flag de la función del control de exposición de la API web
  • La API web sigue controlada por RuntimeFeature y permanece desactivada por defecto, pero si un Origin Trial la activa, el acceso a la API queda disponible
  • Si se desactiva base::Feature mediante Finch, funciona como kill-switch de toda la función, impidiendo también que un Origin Trial la active
  • El cambio consta de 173 líneas agregadas y 18 eliminadas en 15 archivos, y se agregó una prueba para WebView que aprovecha la posibilidad de falsificar respuestas desde un origin conocido

Cambio de estructura para habilitar el acceso a la API de WEI mediante Origin Trial

  • El título del commit es [wei] Ensure Origin Trial enables full feature y corresponde al commit 6f47a22 del repositorio de Chromium
  • El eje del cambio es permitir el acceso completo a la API cuando Web Environment Integrity se activa mediante Origin Trial
  • La ubicación de base::Feature se movió desde content_features.h a una feature generada por runtime_enabled_features.json5
  • En esta estructura, base::Feature puede estar activada por defecto, pero la exposición de la API web queda a cargo de RuntimeFeature y permanece apagada en el estado predeterminado

Relación entre Origin Trial, RuntimeFeature y el kill-switch

  • Origin Trial puede activar RuntimeFeature para abrir el acceso a la API
  • Para que el acceso completo a la API esté disponible, no solo RuntimeFeature sino también base::Feature deben estar activadas; la condición relacionada se refleja en los cambios de origin_trial_context.cc
  • Si base::Feature se desactiva mediante Finch, actúa como kill-switch de toda la función
    • En ese caso, también se bloquea que un Origin Trial active la función

Comportamiento verificado con pruebas de WebView

  • Se agregó una prueba de WebView aprovechando que es fácil falsificar respuestas desde un origin conocido
  • AwWebEnvironmentIntegrityTest.java incluye pruebas que verifican lo siguiente
    • En el estado predeterminado, navigator no tiene getEnvironmentIntegrity
    • Al activar BlinkFeatures.WEB_ENVIRONMENT_INTEGRITY, la API puede usarse
    • Al desactivar esa feature, la API vuelve a quedar no disponible
    • Con el header y el token de Origin Trial, se verifica la llamada a getEnvironmentIntegrity('contentBinding') y el resultado de encode()
  • En la prueba se usan el origin https://example.com/, el header Origin-Trial, un token de Origin Trial y el valor TOKEN_BASE64 AQIDBA==, entre otros

Rutas de código y traslado de referencias a la feature

Alcance del cambio e información del commit

  • El commit modificó 15 archivos, con 173 líneas agregadas y 18 líneas eliminadas
  • Los bugs relacionados son 1439945, b/278701736
  • El enlace de revisión es chromium-review.googlesource.com/c/chromium/src/+/4681552
  • La ubicación del commit aparece como refs/heads/main@{#1173344}

1 comentarios

 
GN⁺ 2023-07-27
Opiniones en Hacker News
  • Como material introductorio para entender la situación, el resumen de Vivaldi me pareció bueno
    https://vivaldi.com/blog/googles-new-dangerous-web-environme...

    • Me dio curiosidad y probé Vivaldi, pero en 10 minutos se me hizo difícil creer en sus afirmaciones sobre privacidad
      El navegador predeterminado del sistema operativo está configurado como Firefox y todas las demás apps lo respetan, pero durante la instalación, al abrir enlaces como la política de privacidad, usó Microsoft Edge. Además, no tiene ninguna función de contenedores, así que para impedir que una cookie de Google de una pestaña se lea en otra, hay que usar una nueva ventana privada. Apenas lo desinstalé, también abrió en Edge la página que pregunta por qué lo estaba eliminando
  • Mozilla debería exigir que expulsen a Google del W3C por esta implementación de Web Environment Integrity
    Seguro dirán: “¿de qué sirve un W3C sin Google, si Chrome tiene 65% de cuota?”, pero si Google puede cambiar unilateralmente los principios básicos de la web, entonces el W3C ya no sirve de nada. Si Google quiere mantener la apariencia de que el W3C importa, debería retirar esta implementación
    Es increíble que en solo 3 días el posible futuro de la web se haya vuelto tan peligroso. Ya hay una propuesta menos problemática, aunque igual mala, llamada Private Access Tokens, avanzando en comités de estándares, pero Google la ignoró. Presentó la propuesta de forma muy sospechosa con una cuenta personal de GitHub, cerró de inmediato las contribuciones y comentarios externos y, pese a la reacción en contra, está metiendo una implementación completa en Chromium
    Lo que hace falta es acción real, y Mozilla siempre se ha presentado como el guardián neutral “auténtico” que defiende los ideales de la web. Ahora es momento de demostrarlo. No basta con simplemente declarar oposición. Esto es un ataque a los fundamentos que han distinguido a la web de todos los ecosistemas cerrados. Si alguien presentara ante el W3C una propuesta de que “solo los navegadores existentes deberían poder renderizar páginas web”, la respuesta correcta no sería “nos oponemos a esa propuesta”, sino cuestionar seriamente si quien la presentó merece participar en esa organización. Eso es exactamente lo que está pasando ahora

    • Está ampliamente aceptado que la forma habitual de estandarización web es que quienes apoyan una nueva función primero la implementen y la desplieguen, y luego, cuando se demuestra que funciona en la práctica, lleven la especificación al organismo de estándares
      Por lo general funciona bien, pero si la implementación previa al estándar tiene demasiado éxito, a veces después se vuelve difícil cambiarla por una implementación que siga el estándar aprobado. Esto se debe a que en el proceso de estandarización suelen surgir cambios grandes
      Un ejemplo es CSS Grid Layout. Microsoft lo agregó en IE 10 con el prefijo de proveedor -ms-, a casi todo el mundo le gustó y se estandarizó, pero terminó siendo bastante distinto de la implementación original de Microsoft, así que en CSS no bastaba con quitar -ms- para que CSS Grid estándar funcionara correctamente
      Desde que Microsoft lo lanzó por primera vez en IE 10 hasta que otros navegadores lo activaron por defecto pasaron 4,5 años. Chrome lo incorporó como función experimental en menos de un año, y Firefox unos 2 años después, pero el usuario tenía que activarlo manualmente. Durante esos 4,5 años, suficientes sitios que solo se preocupaban por IE usaron el formato -ms-, de modo que Microsoft quedó atado a ese formato en IE 10 y 11 en lugar del estándar
    • Ya es demasiado tarde. El W3C se volvió prácticamente irrelevante y, para empezar, tampoco es que alguna vez haya importado tanto
      Internet no lo hacen los organismos de estándares, sino las grandes empresas. Los estándares vivos reales están en WHATWG, y el software real lo hacen Google, Apple, Cloudflare y Amazon. A nadie le importa el W3C, y Mozilla perdió su poder hace mucho
    • Cuando Apple hizo algo parecido en Safari no pasó nada, todos se quedaron callados, y en HN se defendió activamente el monopolio de Apple Safari con esa función activada. ¿Por qué habría de ser diferente ahora?
    • No hay ninguna posibilidad de que Mozilla haga algo realmente significativo aquí. Probablemente publicará una declaración a favor de la web abierta y hará algo de virtue signaling, pero no más que eso
    • Sinceramente, el W3C ya perdió su voz cuando WHATWG desplazó el estándar XHTML y lo reemplazó con el comité de HTML5
      En ese momento aún tenía el peso suficiente para decir “la web es XHTML2 y, si quieren, hagan su propio internet”, pero ahora su poder de negociación es mucho menor
      Puede que la decisión de transferir la responsabilidad a las grandes empresas de internet haya sido hasta cierto punto razonable en aquel entonces, pero al final es la causa de que hayamos llegado a una situación que, en la práctica, se parece a volver a la Microsoft Network inicial
      [1]http://www.codersnotes.com/notes/the-microsoft-network/
  • No te limites a quejarte en los comentarios: hoy mismo hay que contactar a las autoridades antimonopolio
    EE. UU.: 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
    India: https://www.cci.gov.in/antitrust/ / https://www.cci.gov.in/filing/atd

    • Acabo de enviar un correo a antitrust@ftc.gov. Para quienes se traban al redactar el email, Bing Chat me generó un borrador bastante bueno y solo tuve que retocarlo un poco
      1. Abrí en Edge la página https://vivaldi.com/blog/googles-new-dangerous-web-environme...
      2. Abrí la barra lateral de Bing Chat en la esquina superior derecha y resumió automáticamente el artículo
      3. El prompt fue: “Usa este resumen de la página web para escribir una carta denunciando una infracción antimonopolio de Alphabet. Incluye lo siguiente”; puse que la empresa era Alphabet, usé el contenido del artículo como motivo por el que perjudica la competencia, y mi rol como usuario del navegador Firefox
    • Acabo de enviarle un correo a la FTC. Se sintió bastante liberador, y creo que ya no tendré que pasar el resto del día enojado por esto. Les recomiendo a otros que lo intenten
    • Canadá: https://www.competitionbureau.gc.ca/eic/site/cb-bc.nsf/frm-e...
    • Para el contacto antimonopolio de la UE, parece mejor esta página: https://competition-policy.ec.europa.eu/antitrust/procedures...
      Ahí se puede crear específicamente una nueva queja antimonopolio
    • Respeto el optimismo, pero me sorprendería que la autoridad del Reino Unido moviera siquiera un dedo. Es demasiado inútil
  • Esta propuesta es tan profundamente hostil al usuario que hasta cuesta criticarla con argumentos técnicos
    No es una mala propuesta; es una propuesta peligrosa, malvada y maliciosa, así que criticar los detalles es una pérdida de tiempo. El problema es todo el conjunto y debe descartarse
    Una protesta silenciosa no va a funcionar esta vez. El objetivo es hacer suficiente ruido para atraer la atención de gobiernos y reguladores, y lograr que se inicien procedimientos antimonopolio
    Google puede irse al diablo con su censura y sus avisos de “mantener la cordialidad”. Ya mostró su verdadera cara, y el código de conducta se convirtió en una herramienta para acallar el disenso, no para reforzar buenas prácticas y un entorno acogedor
    Me cambié a Firefox y recomiendo a otros hacer lo mismo

    • Si les interesa la “postura” de Google, sus motivaciones o las razones técnicas, el documento explicativo está aquí
      https://github.com/RupertBenWiser/Web-Environment-Integrity/...
      Es abiertamente hostil al usuario. Es un intento de invertir la relación del “user agent”, para hacer que el agente trabaje para anunciantes, empresas y gobiernos que vigilan a la persona detrás de la pantalla. La forma en que la introducción lo presenta como algo que los usuarios necesitan o quieren da asco
      Reescrito con honestidad, sería así: empresas como Google necesitan que los anunciantes puedan saber tanto como sea posible sobre los usuarios. Sus ingresos pueden depender de tomar huellas digitales del entorno del cliente, rastrear comportamientos e historiales, y demostrar que detrás del teclado hay un ser humano con suficiente ingreso disponible. Esta minería de datos personales es la base del modelo de negocio de Google y es esencial para mantener su dominio de la web y sus enormes márgenes de ganancia
    • Totalmente de acuerdo. Me senté a escribir una carta para la FTC, pero después de leer esta especificación no pude formular bien en palabras por qué me opongo. Mi reacción se resume simplemente en: “¿qué demonios es esto?”
      Trabajé antes con integrantes del equipo de Chromium y, en general, los consideraba competentes y bienintencionados, pero en esta propuesta de especificación no veo ni buena intención ni competencia. Se siente como si Google hubiera pasado de su dinámica habitual de absorberlo todo lentamente a una dirección mucho más directa y autoritaria
    • El problema no es solo la propuesta, sino Google en sí. Hay que dividir Google obligatoriamente
    • Como alguien que no conoce bien WEI, ¿alguien puede hacer un resumen de qué hace y por qué es malo?
    • ¿En qué sentido esta función es hostil para los usuarios de Google?
      También tiene beneficios reales: permite que los sitios web hagan más cosas en la web en lugar de usar apps. Podría haber menos CAPTCHA y menos bots en redes sociales
      Las plataformas que usa la mayoría se beneficiarían, y parece que los usuarios de Apple ya disfrutan de ese tipo de beneficios
      Entiendo el argumento de que empeora el entorno open source. Pero google.com seguirá funcionando. Quienes harán peor la experiencia de uso serán otros sitios web
  • Hay muchas razones para oponerse a este problema, pero no se ha hablado mucho de su impacto en los motores de búsqueda.
    Si los sitios web implementan esto, será prácticamente imposible que nuevos actores creen un motor de búsqueda web. Los incumbentes pueden poner sus propios clientes en una lista de permitidos o certificarlos, y clasificar a todos los demás clientes de scraping como bots.
    Aunque no hubiera otra razón, no veo cómo se puede permitir que Google, una empresa de búsqueda, impulse algo que puede matar a la competencia usando su dominio de mercado en otra área, como los navegadores.

    • Porque el antimonopolio estuvo muerto durante bastante tiempo. Chrome no es más que una herramienta para enviar gente a Google y a los anuncios de Google.
      El motor de navegador de Microsoft en la época de IE y Edge, por más que IE fuera célebremente doloroso, era de agradecer porque aportaba competencia en este ámbito. Pero ahora solo quedan Chrome (Blink), Firefox (Gecko) y Safari (WebKit), y lo que hizo Chrome después de conseguir una cuota dominante es bastante evidente.
      Puede que haya Googlers que crean sinceramente que están haciendo de la web un lugar más seguro, pero si uno toma distancia, la verdadera razón parece bastante clara.
    • No había pensado en esto. ¿Habrá algún procedimiento para rechazarlo, aunque sea indirectamente, con base en que limita el uso justo?
    • ¿Sería posible implementar esta API de modo que falle alrededor de un 5%, para impedir que un sitio web bloquee a una persona solo por una falla de certificación?
      https://github.com/RupertBenWiser/Web-Environment-Integrity/...
    • ¿No es algo que los incumbentes ya pueden hacer con certificados de cliente comunes: poner sus propios clientes en una lista de permitidos y clasificar a otros scrapers como bots?
      O incluso bastaría con enviar un encabezado de solicitud con el HMAC de la URL usando una clave secreta compartida.
      Más fundamentalmente, ¿por qué tendrían que scrapear su propio contenido? Pueden crear cualquier canal alternativo para acceder a los datos, como hace Google cuando incluye resultados de YouTube en la página de resultados de búsqueda. No hay ninguna necesidad de ofrecer un sitio web que pueda scrapearse de forma útil.
    • ¿Cómo funcionaría esto con scrapers que ejecutan una instancia de navegador aprobada, al estilo Selenium?
  • Otro artículo moderado de The Register.
    https://www.theregister.com/2023/07/25/google_web_environmen...
    Aunque la especificación está a medio cocinar, la reacción en contra de la semana pasada fue rápida: el repositorio de WEI en GitHub se llenó de comentarios mayormente críticos, y también hubo insultos dirigidos al autor de la propuesta. Los desarrolladores de Google restringieron los comentarios para que solo pudieran comentar quienes ya habían contribuido antes al repositorio, y publicaron un documento de código de conducta como recordatorio para mantener la cortesía.
    Es una forma común hoy en día de responder a la oposición.

    • También es importante que hayan bloqueado los botones de reacción, es decir, pulgares, corazones, etc. Porque eso ofrece una negación plausible para decir más adelante que “solo una minoría expresó preocupación sobre el tema X”. Los periodistas deberían prestar más atención a esto.
      Por separado, los periodistas o personas que quieran contactar directamente al autor de la especificación pueden mirar su sitio web público. Está en otro de los repositorios del perfil de GitHub donde se publicó la especificación, y también aparece su correo personal. Que él haya escrito lo siguiente en 2022 resulta dolorosamente absurdo:
      “Al final decidí convertir esto en una app. Ahí fue cuando empezó a costar dinero. Tuve que comprar una MacBook Pro usada para compilar la app de iOS. La estrategia de Apple es obvia y en realidad funciona bien, pero me sigue dando muchísima rabia no poder crear una app solo con una laptop Linux. Para mantener la app por más de un mes y que mis amigos pudieran instalarla fácilmente, tuve que pagar 99 dólares por una cuenta de desarrollador. Apple, entiendo que quieras hacer que la gente use la App Store, pero esto es un poco cruel. Ahora, en la práctica, tengo que pagar 99 dólares al año para seguir usando mi pequeña app.”
      [0] https://benwiser.com/blog/I-just-spent-%C2%A3700-to-have-my-...
    • “Por favor mantengan la cortesía mientras destruimos la web tal como la conocíamos. Por si acaso, también llevo tapones para los oídos”.
    • “Si quieren protestar por el cuchillo que les estamos clavando en el estómago, pueden hacerlo. Pero necesitan credenciales y cortesía”.
    • Limitar las publicaciones y exigir cortesía es la única forma en que una persona puede comunicarse de manera significativa incluso con miles de personas.
      La mente humana no está adaptada a una internet social a escala de internet, donde existen más voces distintas que latidos del corazón en toda una vida.
  • Hay una acción pequeña, pero que realmente se puede hacer: poner en tu sitio web un mensaje sutil que recomiende usar Firefox.
    No tiene que ser algo muy llamativo; basta con una frase pequeña. Puede recomendar Firefox o cualquier otro navegador que no esté basado en Chromium.
    Yo también lo agregué a mi sitio: https://geeklaunch.io/
    Hice que solo se muestre en navegadores basados en Chromium. Poco a poco se puede cambiar la tendencia.

    • Para quienes quieran incluir algo así, este es un ejemplo de texto:
      Este sitio web fue diseñado para Firefox, un navegador web que respeta la privacidad
      La clase .hidden puede ocultar el elemento de cualquier forma; aquí se maneja como .hidden { display: none; }.
    • Me gusta la idea, pero me da curiosidad qué postura ha expresado Mozilla sobre este tema.
      Aunque soy usuario de Firefox, desde hace bastante tiempo no tengo una impresión exclusivamente positiva de Mozilla. Antes de promocionarlo así, quisiera saber que Mozilla está del lado correcto en este asunto.
    • Este consejo tiene una fuerte vibra de 1998.
    • La mayoría de la gente no sabe la diferencia entre Chrome y Firefox y, si puede seguir usando los mismos sitios web después del cambio, probablemente no le importe.
      Aunque les expliques la diferencia, el 99% lo habrá olvidado al día siguiente.
      Al final no sirve de nada. Ante este abuso excesivo de poder, solo la intervención y la regulación del gobierno pueden ayudar. Google no es un rival al que se le pueda enfrentar con la billetera; es demasiado grande.
    • Dijiste que solo aparece en navegadores basados en Chromium, pero no sé qué método usas para detectarlo y aun así también veo este aviso en Orion. Orion está basado en WebKit y en Safari no aparece.
      Incluso si cambio explícitamente el agente de usuario a Firefox o Safari, sigue apareciendo.
  • Siento que, aun con todo esto, hay un lado positivo. A medida que la World Wide Web se vaya purificando y esterilizando cada vez más con códigos de conducta, censura corporativa, publicidad, cacerías de brujas y todo tipo de restricciones, espero que las partes valiosas e interesantes fluyan hacia espacios alternativos.
    La internet de antes era un lugar donde se reunían geeks, gente rara, outsiders y personas con tendencias antisociales. Todo estaba permitido y todo era posible. Muchos, incluido yo, esperábamos que eso cambiara el mundo, pero no ocurrió. Como todos vemos, el mundo está ganando de nuevo. Aun así, espero que la normalización de la web genere una masa crítica de personas que quieran algo más que una zona segura corporativa.
    Sinceramente espero un futuro en el que protocolos como Gemini, despojados del ruido visual y las funciones “dinámicas”, consigan suficientes usuarios. Y si no, como alguien que no usa las redes sociales mainstream, ni los servicios de Google y Microsoft, ni LLMs ni otras cosas modernas y distópicas, tampoco tengo mucho que perder. Hay suficientes libros excelentes para llenar cien vidas, senderos de montaña por caminar y amigos con quienes beber. Quizá hasta sea mejor así.

    • La internet colorida de antes coexistía con una época en la que los trámites bancarios se hacían en sucursales.
      Ahora la banca se trasladó mayormente a internet y los bancos eliminaron muchas sucursales físicas. Lo mismo pasa con el acceso a servicios gubernamentales en muchos países. Lo preocupante aquí es que, aunque sobreviva una pequeña internet de aficionados para geeks y outsiders, sin un navegador compatible no se podrán realizar tareas cotidianas importantes.
  • Hay que involucrar a la Wikimedia Foundation y hacer que Wikipedia u otros grandes hosts de MediaWiki no muestren ningún contenido si detectan esta función en el navegador.
    Además, si eres mantenedor de una distribución, deberías configurar así los valores predeterminados de Apache y nginx.
    Más aún, en vez de redirigir a un muro de texto que explique extensamente las razones políticas y técnicas, sería mejor mostrar solo un mensaje de ERROR grande que diga que el navegador no es compatible debido a este módulo y, si es posible, una breve guía para desactivarlo en about:config.

    • No estoy de acuerdo con cambiar así la configuración predeterminada de Apache y nginx, a menos que esto impida funcionar correctamente a los servidores que no entienden WEI. Al menos no parece ser el caso.
      Un administrador de sistemas podría cambiar la configuración, pero aquí estamos hablando de los valores predeterminados.
      Dicho eso, el resto de la propuesta me parece bien. Los mantenedores de distribuciones también podrían desactivar WEI en la configuración predeterminada del cliente o no incluir programas cliente que incorporen WEI.
  • Es decepcionante ver este giro de 180 grados respecto de “don’t be evil”.
    Estoy recomendando Mozilla Firefox a todos mis amigos y familiares.

    • Yo también lo hago y sigo teniendo conversaciones agotadoras, pero es realmente difícil transmitir el punto central a personas no técnicas.
      Incluso entre mis amigos del sector tecnológico, muchos siguen usando Chrome por comodidad, aunque podrían volver a Chrome solo cuando algo realmente no funcione en Firefox. ¿Cómo se supone que convenzamos a quienes no saben mucho de tecnología?
    • Por fin pude hacer que mi esposa volviera a Firefox. En Mac, Chrome simplemente se congelaba y no podía abrir páginas, mientras que todo lo demás funcionaba bien.
      Ahora usa Firefox sin problemas junto con uBlock Origin sin funciones limitadas.
    • Lamentablemente, al final no se puede decir que Firefox tenga buena UI/UX.
      La última vez que revisé, incluso el soporte para múltiples perfiles estaba en algún estado a medio hacer.