2 puntos por GN⁺ 2023-08-15 | 1 comentarios | Compartir por WhatsApp
  • Little Rat es una pequeña extensión de Chrome que monitorea y opcionalmente bloquea las llamadas de red de otras extensiones de Chrome
  • Detectar y bloquear el tráfico de otras extensiones solo es posible si se activa la bandera extensions-on-chrome-urls en chrome://flags/#extensions-on-chrome-urls o si se ejecuta Chrome con --extensions-on-chrome-urls
  • La instalación manual usa el procedimiento de descargar el ZIP desde GitHub, descomprimirlo, activar el Developer mode en Chromium/Chrome Extensions y usar Load unpacked extension sobre el directorio little-rat-main

1 comentarios

 
GN⁺ 2023-08-15
Opiniones de Hacker News
  • Preferiría que esto fuera una función nativa de Firefox o Chrome, más que una extensión de terceros. Así tendría suficiente adopción como para que otros navegadores también le prestaran atención. Me gustaría poder permitirle a una extensión específica solo solicitudes GET a URL estáticas predefinidas, sin que pueda cambiar headers.
    Así se podrían actualizar datos y, al mismo tiempo, reducir el riesgo de filtraciones. Algunas extensiones funcionan solo dentro del navegador local, así que ni siquiera necesitan acceso a la red. Eso sí, si pueden modificar el código fuente de la página, podrían esquivar esto para transmitir datos, y quizá por eso los navegadores no lo hacen. Aun así, creo que vale más la pena intentarlo que rendirse y dejarlo en manos de una extensión de Chrome.

    • Para al menos observarlo, sí se puede. Hay que abrir el depurador del navegador, no el depurador de la página actual.
      Es casi el mismo proceso que inspeccionar la UI: activar la depuración remota y luego ejecutar Browser Toolbox: https://superuser.com/questions/1608096/how-to-inspect-firef...
      También sirve para averiguar qué se necesita en el archivo CSS de user-chrome cuando quieres cambiar algo más que el tema de las pestañas. Aunque usar user-chrome CSS en sí es algo engorroso.
      Para que se vean las solicitudes de red de las extensiones tuve que cambiar a multi-process mode, lo cual en general tiene sentido.
      Por ejemplo, uBlock obteniendo una lista de bloqueo cualquiera que seleccioné para probar: https://i.imgur.com/wBYbBM2.png
      Firefox actualizando en segundo plano sus listas de safe-browsing: https://i.imgur.com/JYxWwjW.png
    • Incluso las solicitudes GET pueden filtrar datos mediante la ruta y los parámetros de la cadena de consulta. Aunque bloquees eso, se puede crear una comunicación tipo código Morse que sugiera actividad mediante tiempos o frecuencia; y con suficientes solicitudes, también se pueden transmitir fácilmente datos en el orden de megabytes.
    • Creo que si una extensión genera una solicitud HTTP que no sea simplemente repetir una URL que ya estaba en la página, debería mostrarse una notificación toast con el cuerpo de la solicitud presentado de forma legible.
      En una extensión bien hecha, la notificación aparecería solo de vez en cuando; y en una extensión que necesita servidor, aparecería en momentos en los que el usuario espera que se comunique con el servidor. Una extensión que envía pulsaciones de teclado o datos sospechosos sería muy fácil de detectar.
    • Según recuerdo, las extensiones no pueden acceder a URL que no estén especificadas en la sección de permisos del manifiesto. Tengo entendido que Firefox muestra esas URL en el cuadro de confirmación de permisos.
      Eso sí, se pueden poner comodines en las URL, y creo que también había un valor especial que significa todas las URL. Aun así, no debería haber muchas extensiones que necesiten ese permiso.
    • Imagino que los fabricantes de navegadores no ofrecen esta función porque cualquier protección sería fácil de evadir.
      Por ejemplo, aunque la extensión no pudiera crear solicitudes por sí misma, si tiene permiso para modificar el DOM de una página web, hay muchas formas de engañar a la página para que envíe solicitudes en su lugar.
  • Esta extensión no es facilísima de instalar, así que estaría bueno agregar capturas que muestren eventos de red capturados de verdad. La captura actual oculta la función más interesante.

    • Abre Google Chrome y ve al menú de tres puntos arriba a la derecha → Extensions → Manage Extensions → activa Developer Mode arriba a la derecha → botón “Load Packged” arriba a la izquierda → carga el directorio del .zip descomprimido.
      Luego vuelve a la pantalla normal del navegador, haz clic en el ícono de extensiones con forma de pieza de rompecabezas a la derecha de la barra de direcciones, y presiona el pequeño ícono de chincheta junto a Little Rat. Así queda instalada y aparece en la lista de íconos de extensiones.
  • Genial. Honestamente, me sorprende que esto sea posible.
    No sé exactamente qué datos exponen estas API, pero si una extensión puede acceder a las solicitudes de otra extensión, ¿no podría generar preocupaciones de seguridad para extensiones de gestores de contraseñas o extensiones que usan tokens de autenticación?

  • Bien. Siento que algo así debería existir como una URL chrome://.

    • Si las extensiones son un riesgo tan grande para la seguridad y la privacidad, lo primero que se me ocurrió fue: ¿por qué esto no es una función nativa de Chromium?
  • Se ve bien, pero me gustaría saber si hay planes de portarlo a Firefox.
    ¿Alguien sabe de alguna alternativa que haga lo mismo en Firefox?

  • Lo usaré cuando esté en Chrome Store.

    • Está usando declarativeNetRequest.onRuleMatchedDebug[0], y eso parece ser solo para depuración, así que me pregunto si lo permitirán en Chrome Web Store.
      0: https://github.com/dnakov/little-rat/blob/f0b9b6be39af9fe7f4...
    • Ve a Releases, haz clic derecho en el archivo crx y guárdalo; luego ve a Extensions en Chrome y arrastra y suelta ese archivo crx.
  • ¿Por qué no está en Chrome Store?

    • Está actualmente en revisión. Es porque usa chrome.declarativeNetRequest, que también es una API que usa uBlock.
  • Está limpio, pero habría que tratar esta parte con más cuidado: https://github.com/dnakov/little-rat/blob/main/popup.js#L36
    No quiero tener que preocuparme de si otra extensión puede inyectar XSS aquí con una solicitud, ID o nombre manipulados.

    • Muy buen punto, pero la política de seguridad de contenido no permite unsafe-inline y Chrome genera automáticamente el ID de la extensión.
  • El simple hecho de que no haya llamadas de red no prueba que una extensión sea segura. Podría guardar en caché datos que quieres mantener privados y enviarlos periódicamente.