Detecta cambios de propietario en las extensiones de Chrome instaladas
(github.com/classvsoftware)- Under New Management es una extensión que verifica periódicamente si la información del desarrollador de las extensiones de navegador instaladas ha cambiado en Chrome Web Store o Firefox Add-ons
- Si la información del desarrollador cambia, muestra una insignia roja en el ícono de la extensión para que el usuario pueda notar el cambio de propiedad
- La necesidad surge del problema de que los desarrolladores de extensiones reciben con frecuencia ofertas de adquisición, y en casi todos los casos el comprador intenta aprovecharse de los usuarios existentes
- Es posible que los usuarios no sepan que la propiedad de una extensión instalada cambió y que podría haber sido comprometida, por lo que esta herramienta les da la oportunidad de decidir con más criterio
- Como el navegador impone restricciones para modificar dominios de marketplaces de extensiones, la verificación de la información del desarrollador se delega al servidor API de ExBoost
Detección de cambios de propiedad de extensiones
- Under New Management verifica de forma intermitente si la información del desarrollador de las extensiones instaladas ha cambiado en Chrome Web Store o en la tienda de Firefox Add-ons
- Si hay cambios, se muestra una insignia roja en el ícono de la extensión para que el usuario pueda reconocer el cambio de propiedad
- El objetivo es dar a los usuarios la oportunidad de tomar una decisión informada sobre el software que usan
Por qué es necesario
- Los desarrolladores de extensiones reciben constantemente ofertas para comprar sus extensiones
- El README afirma que en casi todos los casos el comprador busca engañar a los usuarios existentes
- Es posible que los usuarios no sepan que la propiedad de una extensión instalada cambió y que ahora podría haber sido comprometida
Cómo instalar
- Instalación en Chrome: Chrome Web Store
- Instalación en Firefox: Firefox Add-ons
- O bien, puedes descargar la prebuilt release, descomprimir el archivo
.zipy cargar el directoriodisten el navegador
Compilar desde el código fuente
- Under New Management usa Plasmo
pnpm install: instala las dependenciaspnpm dev: ejecución localpnpm build --zip: compilación de releasepnpm build --target=firefox-mv3: compilación para Firefox
Por qué se necesita un servidor externo
- El navegador aplica reglas especiales para modificar dominios de marketplaces de extensiones
- Por ejemplo, no se pueden configurar reglas
declarative_net_requestparachromewebstore.google.com - Por eso, la verificación de la información del desarrollador se delega al servidor API de ExBoost
1 comentarios
Comentarios en Hacker News
El ID de la extensión se deriva de la clave privada que el desarrollador subió junto con la app la primera vez a la tienda, y si después el ZIP subido contiene otro
key.pem, el ID cambiaSin embargo, si no hay
key.pem, el ID de la extensión se mantiene igual. Así que, si el ID cambia, es posible que haya cambiado el propietario, pero también podría ser que el dueño original le haya entregado la clave privada al nuevo propietario. Google no exige la clave privada en cada subida, así que el nuevo propietario puede distribuir cambios sin esa claveEl ecosistema de extensiones es interesante, así que también estoy creando herramientas para este ámbito. Quiero hacer un repositorio de GitHub para una extensión específica, registrar cada actualización como cambios en el repositorio y luego ejecutar analizadores estáticos y un análisis dinámico de contaminación para rastrear si entradas del usuario fluyen hacia sinks peligrosos como
evalopostMessage: https://github.com/milesrichardson/crxmonDurante la negociación dije que retiraría la extensión y entregaría todo el código fuente para que la distribuyeran ellos mismos, pero la otra parte esperaba que también entregara las credenciales de la cuenta de extensiones de Opera. Al final cancelé el trato, y aunque este tipo de herramienta puede ser útil hasta cierto punto, coincido en que sería mejor un escáner de malware para extensiones
El desarrollador debería firmar la extensión o el manifiesto con la clave privada, y compartir la clave pública o incluirla en la subida. Las actualizaciones también deberían seguir firmándose con la misma clave privada, y mientras la clave no cambie, se puede verificar con la clave pública de la primera subida que se usó la misma clave privada. Que las subidas posteriores incluyan o no la clave pública no es esencial. Si se vende o comparte la clave privada, otra persona puede crear actualizaciones legítimamente firmadas, pero ese riesgo existe porque el firmante no mantiene secreta la clave privada. Si Google o quien sea comparte la clave privada, la garantía de procedencia de la extensión se rompe
Pero de verdad me pregunto si es posible que Google permita que un nuevo propietario distribuya cambios sin la clave privada. Chrome Web Store es extremadamente quisquilloso incluso con cosas menores, así que suena raro que no le importe algo así
Uso 3 extensiones publicadas solo para testers, y las uso sin modo desarrollador ni
rsync/robocopypara instalarlas fácilmente en varias máquinas. Pero este fin de semana Chrome deshabilitó todas en una sola máquina con el motivo de que “no están registradas en Chrome Web Store y podrían haberse agregado sin que el usuario lo supiera”. Ni siquiera puedo forzarlas a activarse; en la tienda aparecen como “deshabilitadas” y sale “activar ahora”, pero solo desaparece el banner y al refrescar vuelve a aparecer. Ese perfil de Chrome inició sesión con una cuenta de lista permitidaLa insignia de la página de Chrome Web Store muestra que mi cuenta de desarrollador no tiene sanciones y está en buen estado. Si no hubiera iniciado sesión con el correo de la lista permitida, ni siquiera podría ver esa página. No me convence que “se preocupen tanto” por esto y aun así permitan actualizaciones sin clave
CWS nunca debe cambiar el ID de una extensión existente, porque el ID identifica de forma única a la extensión. Si el ID cambia, el cliente de Chrome no puede solicitar actualizaciones para esa extensión, y ni CWS ni Chrome admiten una función para migrar usuarios de una extensión a otra
Hasta donde sé, CWS rechazará un ZIP que incluya
key.pemdespués del primer envío. Si el ID de la extensión cambió, entonces no es la misma extensión. Que el nuevo propietario pueda distribuir cambios sin el PEM es en general correcto, pero si el desarrollador firmó directamente la extensión enviada a CWS, no podrá actualizarla sin el PEM. Sinceramente no sé si eso sigue siendo posible hoy; antes era una trampa enorme donde los desarrolladores perdían la base instalada al perder la clave privada que usaron para sus subidasCasi todos aceptarían al final si el precio fuera el correcto; la única diferencia entre personas sería cuánto tendrían que pagarles
Hace unos meses hice una extensión gratuita y de código abierto para saltar rápido los anuncios de YouTube, la compartí aquí y llegó a la portada.
En menos de una semana, alguien que había comentado en mi post de Show HN la copió y promocionó su versión en Reddit; se volvió viral y superó los 300 mil usuarios: https://github.com/rkk3/ad-accelerator/blob/main/lessons_pos...
Me pregunté por qué había decidido copiar una extensión gratuita y de código abierto en vez de enviar un PR, pero unas semanas después estaba tratando de venderla por una suma de cinco cifras en varios sitios. Puede que todavía la tenga, pero también me llamó la atención que el desarrollador registrado en Chrome Store ya no era el mismo que en el lanzamiento inicial.
No entiendo todo el trasfondo, pero esa extensión en realidad es básicamente un JavaScript trivial de 50 líneas. Es bastante osado decir que alguien la robó. La idea en sí no tiene valor, y también es difícil afirmar que fuera algo muy novedoso. Incluso asumiendo que la otra parte se inspiró, la cronología de quién hizo qué primero no está del todo clara.
Aunque cuánto tiempo YouTube y Chrome permitirán que siga funcionando ya es otro tema, y puede que a ellos tampoco les guste.
“…si el mundo entero canta tu canción / y todos cuelgan tu pintura / recuerda que lo que era tuyo ahora es de todos / no es que esté bien o mal / puedes aferrarte a eso todo lo que quieras / pero el único que se pondrá ansioso serás tú…” — “What Light” de Wilco
Esto es realmente útil, pero como ya dijo otra persona, debería ser una función integrada del navegador.
Todavía no he revisado el código fuente a fondo, pero me da curiosidad si avisa automáticamente cuando hay un cambio de propiedad. No tiene que ser en tiempo real, pero si lo notifica al arrancar, o si hay que ejecutar manualmente algún comando de verificación.
Hace unos meses este tema también fue muy comentado: https://news.ycombinator.com/item?id=36233068
Como decía el comentario destacado en ese momento, Firefox y Chrome harían bien en cambiar su política de actualización automática de extensiones en situaciones así. Si una extensión revela un cambio de propiedad, la actualización debería requerir aprobación del usuario; y si no lo revela, el usuario debería poder reportarla como maliciosa. Además, probablemente el título debería llevar “Show HN”.
Consideré que una notificación más fuerte sería demasiado intrusiva.
Eso reduce el valor del producto o de la empresa al momento de venderla. Es favorable para el usuario, pero desfavorable para el creador que tiene que pagar las cuentas.
Esto no es ninguna broma.
Durante varios años fui dueño de una extensión de Chrome de código abierto bastante popular, y el total de donaciones no alcanzaba ni para pagar el café de un mes.
Pero recibí muchísimas ofertas para vender la extensión, y por montos absurdos, con fines claramente maliciosos, incluso en casos donde lo decían abiertamente. Las rechacé todas, pero no es una postura sensata esperar que la moralidad del desarrollador original sea el único sistema de seguridad y privacidad en una situación así.
Entiendo bastante el objetivo y también las limitaciones técnicas, pero que envíe la lista completa de extensiones del usuario a una red publicitaria centrada en extensiones se ve un poco sospechoso
Dicen que necesitan un servidor externo porque el navegador tiene reglas especiales para modificaciones en dominios de mercados de extensiones como
chromewebstore.google.com, así que delegan la verificación de la información del desarrollador al servidor API de ExBoosthttps://www.extensionboost.com/
ExBoost se describe como una red de colaboración entre extensiones de navegador que quieren más usuarios y reseñas. Funciona poniendo un espacio de ExBoost dentro de la UI de la extensión para mostrar promoción de extensiones similares o solicitudes de reseña
Si ves el resultado del API para una extensión instalada, aparecen metadatos relacionados con el desarrollador. Probé la API de Chrome
chrome.management.get(id), pero no devuelve esa información, y tampoco parece haber una forma de obtener programáticamente el contenido demanifest.json. Así que, para hacer lo que esta extensión intenta hacer ahora mismo, sí hace falta una fuente externahttps://github.com/classvsoftware/under-new-management/blob/...
https://api.extensionboost.com/v1/developer?extension_ids=gh...
Básicamente decía que pusiera su código en mi extensión, y era algo como “si tú muestras lo mío, yo muestro lo tuyo. Costo 0, todos ganan”. Me pareció sospechoso, lo marqué como spam, y no se veía distinto de otros correos basura que recibía de estafadores
Las extensiones de Firefox tienen el programa de extensiones recomendadas de Mozilla, y dicen que antes de ser incluidas pasan por una revisión técnica estricta por parte de expertos de seguridad del personal: https://support.mozilla.org/en-US/kb/recommended-extensions-...
Aun así, solo con el documento de soporte no queda claro si todas las actualizaciones se revisan antes de publicarse. Si las revisan cada vez, eso resolvería en parte este problema para las extensiones populares, aunque también me pregunto cuánto retraso generaría cuando haga falta una actualización de seguridad urgente
Mi política personal actual es permitir que solo esas extensiones curadas se ejecuten en todos los sitios y pestañas
Una estructura donde incluso organizaciones muy populares o conocidas puedan ser vetadas si incumplen repetidamente las reglas o intentan saltarse el funcionamiento del marketplace
En los casos realmente maliciosos, muchas veces cuando una extensión cambia de manos lo que venden son directamente las credenciales de la cuenta de desarrollador de Google, así que en esos casos esto no lo detecta
Hace mucho instalé adblock y me encantó
Compré una máquina nueva y tuve que instalarlo de nuevo, y fue entonces cuando vi los permisos por primera vez; eran de locos. Tiene lógica que, para bloquear anuncios, tenga que poder ver lo que yo veo, pero nunca lo había pensado seriamente
Ahora uso Pi-hole y no uso ninguna extensión
Aun así, está bueno que haya opciones para quien las quiera, y cada persona tiene un perfil de riesgo y preocupaciones distintas
Algunas extensiones son de código abierto y confiables, pero muchas no, y parece que a la gente le cuesta verificarlas
Tú proporcionas la lista de bloqueo y el navegador hace el bloqueo directamente. No sé si en Firefox se puede también: https://developer.apple.com/documentation/safariservices/cre...
Si yo fuera comprador de extensiones maliciosas, pensaría en mantener igual el nombre del desarrollador para evitar esto. ¿O la Chrome Extension Store controla estrictamente los nombres de desarrollador?
Por ejemplo, un actor estatal malicioso podría ofrecerle decenas de millones de dólares al autor de uBlock para conseguir mucho acceso a navegadores. No sé si cerraría económicamente, pero extensiones más de nicho seguramente se podrían apuntar por mucho menos
Me pregunto si este problema es peor en Chrome que en otros navegadores
La única extensión de navegador que uso es HonorLock, un software de supervisión de exámenes, y estoy obligado a usarlo. La extensión solo funciona en Chrome, así que a veces uso Chrome por culpa de HonorLock. Si abres el enlace de instalación desde Safari, te dice que instales Chrome: https://app.honorlock.com/install/extension
Me pregunto si hay alguna característica que solo tengan las extensiones de Chrome que haga posible el caso de uso de HonorLock y que al mismo tiempo vuelva más útil la herramienta de este artículo