La falla de Opera GX permite que los sitios maliciosos instalen automáticamente modificaciones para robar datos de las páginas visitadas

Los investigadores encontraron un defecto en Ópera GXla versión del navegador Opera centrada en los juegos, que permite a un sitio web malicioso instalar silenciosamente un complemento del navegador y utilizarlo para extraer datos específicos de las páginas que visita la víctima.

En una prueba de concepto, reconstruyeron la dirección completa de Gmail de un usuario que había iniciado sesión a partir de una sola visita, sin hacer clic. Opera ha reparado el defecto y dice que no encontró evidencia de que alguna vez se haya utilizado en la naturaleza.

La solución se envió en Opera GX versión 130.0.5847.89, por lo que cualquiera con una versión actual ya está cubierta; Puedes confirmar el tuyo en opera://about. No existe CVE.

Como el ataque no necesitaba clics ni aprobaciones, no había otra solución que el parche. El equipo de recompensas por errores de Opera calificó el problema como P1, su máxima gravedad, y pagó la recompensa máxima de 5.000 dólares por un error crítico.

Cómo funciona el ataque

GX Mods te permite cambiar el diseño de Opera GX con sonidos, temas, fondos de pantalla y CSS personalizados que modifican el estilo de los sitios que visitas. Se envían como archivos .crx, como extensiones de navegador, pero no pueden ejecutar JavaScript y no tienen permisos.

La debilidad está en cómo se instalan: la canalización de mods de Opera descarga y habilita un mod automáticamente, sin solicitar aprobación. Por lo tanto, una página maliciosa puede instalar uno de forma silenciosa, por ejemplo, cargando un iframe oculto que apunta a un archivo .crx.

Ciberseguridad

La única señal es una barra de notificación debajo de la barra de direcciones que le indica que se agregó un mod, con un botón Eliminar.

Este comportamiento de instalación automática no es nuevo. el investigador Renwa lo identificó allá por 2023. y, al convertir un mod instalado en una extensión completa, lo usó para falsificar la barra de direcciones del navegador. Opera parchó ese ataque específico en marzo de 2023, pero dejó la instalación automática subyacente, que es en lo que se basa esta nueva investigación.

Un mod de apariencia silenciosa suena inofensivo por sí solo. Pero el CSS de un mod se aplica a cada página que visitas, no sólo a una. La inyección de CSS ordinaria se limita a la página a la que llega; aquí, el estilo del atacante llega a cada sitio que abre el navegador, una técnica que los investigadores llaman inyección universal de CSS.

CSS no puede leer una página y enviarla por sí solo. Pero se le puede convencer para que filtre un valor pieza por pieza. El truco se basa en selectores de atributos: una regla puede probar si el valor del atributo de un elemento, como un correo electrónico escondido en un campo oculto, comienza con una letra determinada y obtener una imagen de fondo del servidor del atacante sólo cuando lo hace. Dispara suficientes de estos y aprenderás el valor carácter por carácter.

Los investigadores llaman esto es Fuga XSabreviatura de fuga entre sitios. Para obtener una dirección de Gmail, los investigadores apuntaron a una página de cuenta de Google, myaccount.google.com/contactemail, que lleva la dirección dentro de tres de sus atributos HTML.

Empaquetaron un mod con aproximadamente 150.000 reglas CSS, un conjunto para cada posible fragmento de tres letras de la dirección, y dejaron que un script de reconstrucción uniera las coincidencias nuevamente. Primero probaron piezas de cuatro letras, que necesitaban 5,6 millones de reglas y alrededor de 880 MB de CSS. El navegador se atragantó, por lo que lo redujeron a fragmentos de tres letras que se superponen lo suficiente para volver a ensamblarse.

Encadenarlo solo requirió un empujón. La víctima llega a la página del atacante, el mod se instala en segundos y unas pocas líneas de JavaScript redirigen el navegador a la página de la cuenta de Google. El CSS del mod ya está cargado allí, por lo que activa las solicitudes y filtra la dirección a medida que se muestra la página, antes de que la víctima pueda alcanzar el botón Eliminar del aviso.

La dirección de Gmail fue sólo la prueba de concepto; El mismo enfoque puede resaltar otros valores que una página expone en su marcado, como un nombre de usuario.

La misma ruta de instalación automática tiene un segundo uso, más crudo, que documentaron los investigadores: cargar un .crx en modo privado (incógnito) bloquea el navegador y descarga todas las pestañas abiertas. Este también afecta a Opera normal, no solo a Opera GX, ya que cualquier .crx activa el proceso de instalación de extensiones, independientemente de lo que contenga. El aviso de Opera aborda la solución al robo de datos y no menciona el bloqueo.

La gravedad y el panorama general

El informe casi no obtuvo lo que se merecía. Opera ejecuta su programa de recompensas en Bugcrowd, y los analistas de clasificación tuvieron dificultades para comprender qué hacía el error, primero calificándolo como P3 mediocre.

Los investigadores presentaron su caso de una manera inusualmente directa: mientras un analista reproducía el ataque, capturaron los propios trigramas del analista, reconstruyeron la dirección de Gmail del analista y la pegaron en el informe. Luego, el equipo de Opera elevó la gravedad a P1 y pagó el máximo de nivel crítico de $5,000.

Ciberseguridad

El propio relato de Opera es más mesurado. en su consultivola compañía dice que está «bastante segura» de que la falla nunca fue explotada en la naturaleza, y presenta el ataque como complicado de llevar a cabo: la víctima tuvo que aterrizar en un sitio malicioso, terminar con un mod nuevo e ignorar el aviso de eliminación el tiempo suficiente para que se activara la redirección.

La demostración de los investigadores es el contrapeso. Su redireccionamiento se ejecuta segundos antes de que un usuario pueda leer el aviso, y mucho menos hacer clic en Eliminar. Fue un ataque limitado y complicado del que Opera no encontró rastros en la naturaleza, y aún funcionó sin clics una vez que se configuró.

El riesgo aquí nunca fue la característica cosmética en sí misma. Fue alcance. Una vez que el CSS de un mod podía seguirte de un sitio a otro, «simplemente diseñar» resultó ser suficiente.

Ése es el giro de una idea familiar: el robo de sólo CSS normalmente queda atrapado en la página donde se inyecta, como en el caso de PortSwigger. Exfiltración ciega de CSS investigación, pero aquí avanzó en cada sitio que abrió la víctima.

Tampoco es la primera característica de Opera que se vuelve contra sus usuarios; Hacker News cubrió el error MyFlaw de 2024 en My Flow de Opera, y Opera había sido advertida sobre este comportamiento de instalación automática desde 2023.

19 paquetes envenenados para ejecutar automáticamente el ladrón de credenciales de bollos – CYBERDEFENSA.MX

La campaña de la cadena de suministro de Miasma ha provocado una nueva ola de ataques llamada infiernoesta vez involucrando 37 artefactos de rueda maliciosos en 19 paquetes en el registro Python Package Index (PyPI), mientras los ataques estilo Mini Shai-Hulud continúan refinándose y dividiéndose para apuntar a ecosistemas específicos.

«Las versiones comprometidas enviaron un archivo *-setup.pth que intenta ejecutarse automáticamente durante el inicio de Python, descargar el tiempo de ejecución de Bun JavaScript y ejecutar una carga útil de JavaScript ofuscada llamada _index.js», Socket dicho en un nuevo análisis.

La lista de paquetes identificados se encuentra a continuación:

  • bramina 0.0.2, 0.0.3, 0.0.4
  • cmd2func 0.2.2, 0.2.3
  • nevera portátil 0.4.1, 0.4.2
  • lanzamiento dinamo 1.5.4
  • motor-ejecutor 0.3.4, 0.3.5
  • ejecutor-http 0.1.3, 0.1.4
  • funcióndesc 0.2.2, 0.2.3
  • mágico 0.6.8, 0.6.9
  • magia-ai 0.4.4, 0.4.5
  • mrbios 0.1.1, 0.1.2
  • napari-ufish 0.0.2, 0.0.3
  • caja nuc 0.1.2, 0.1.3
  • okita 0.0.7, 0.0.8
  • agentes-panteón 0.6.1, 0.6.2
  • conjuntos de herramientas pantheon 0.5.5, 0.5.6
  • spateo-liberación 1.1.2
  • sinago 0.1.1, 0.1.2
  • ufish 0.1.2, 0.1.3
  • uprobe 0.1.3, 0.1.4

Al igual que en las campañas anteriores de Shai-Hulud y Miasma, la carga maliciosa descarga e instala el tiempo de ejecución Bun JavaScript, que luego se utiliza para lanzar un ladrón de JavaScript muy ofuscado que puede recopilar una amplia gama de datos de los sistemas de los desarrolladores.

Ciberseguridad

Esto incluye secretos asociados con GitHub, npm, PyPI, RubyGems, JFrog, CircleCI, Anthropic, AWS, GCP, Azure y Kubernetes, junto con configuraciones de Docker, tokens de Vault, claves SSH, historiales de shell, archivos .env, archivos .npmrc, archivos .pypirc, configuraciones de Claude/MCP y otras credenciales locales o accesibles para corredores.

Lo que ha cambiado esta vez es el marcador de campaña. Mientras que las iteraciones anteriores exportaban los datos recopilados a un repositorio público de GitHub con la descripción «Miasma: The Spreading Blight», «Miasma: The Spreading Blight» y «Miasma – The Spreading Blight», la última ola incluye las descripciones del repositorio –

  • Hades – El fin de los condenados
  • Hades * El fin de los condenados

«Eso hace que Hades se entienda mejor como una rama PyPI del mismo linaje Mini Shai-Hulud/Miasma, no como un incidente de malware Python independiente», dijo la compañía de seguridad de aplicaciones. «El manual principal sigue siendo el mismo: abusar de los canales de paquetes confiables, ejecutar antes del uso normal del paquete, preparar una carga útil de JavaScript impulsada por Bun, robar credenciales de desarrollador y CI/CD, y usar lógica de exfiltración y propagación centrada en GitHub».

Lo que ha cambiado esta vez es el uso de un archivo *-setup.pth que es procesado por el módulo «site» de Python durante el inicio del intérprete, lo que resulta en la ejecución de la carga útil maliciosa después de la instalación sin necesidad de que la víctima importe el paquete envenenado. La carga útil, a su vez, descarga y ejecuta Bun desde GitHub y ejecuta el ladrón, no sin antes comprobar si el sistema corresponde a la configuración regional rusa.

«Este es el equivalente en Python del problema del gancho de instalación de npm que Shai-Hulud y Miasma explotan repetidamente», explicó Socket. «La sintaxis es diferente, pero la consecuencia de seguridad es la misma: la instalación de dependencias crea una ventaja de ejecución antes de que se revise o invoque el código de la aplicación».

Hades Cluster intenta engañar a los escáneres de seguridad de IA

También están comprometidos, como parte de la campaña Hades, una serie de paquetes relacionados con la biología computacional, la bioinformática y el ecosistema de análisis genotipo-fenotipo.

  • aumentar 0.11.97
  • achicar 0.8.101
  • gpsea 0.9.14
  • mflux-streamlit 0.0.3, 0.0.4
  • nhmpy 2.4.7
  • ppkt2synergy 0.1.1
  • herramientas pyphetools 0.9.120

Curiosamente, este clúster emplea un enfoque diferente en el que el punto de entrada está incrustado dentro del archivo «__init__.py» del paquete como un gancho de importación de una sola línea ofuscado. Sin embargo, el resultado es el mismo: descargar y ejecutar el tiempo de ejecución de Bun, seguido de la ejecución de la carga útil de JavaScript.

«El uso del tiempo de ejecución Bun sigue siendo un tema constante», StepSecurity dicho. «La descarga de Bun como un archivo ZIP independiente permite que el malware ejecute tareas complejas de JavaScript en entornos que carecen de una instalación de Node.js, evitando los controles tradicionales del administrador de paquetes y los registros de proxy de red».

En lo que se ha caracterizado como una novedosa técnica de evasión de defensa de inteligencia artificial (IA), el malware también incorpora una inyección de texto sin formato que intenta engañar a las herramientas de análisis de paquetes basadas en Large Language Model (LLM) para indicar al modelo que clasifique el paquete como seguro.

Además de eso, el malware consulta las confirmaciones de GitHub para la palabra clave «TheBeautifulSnadsOfTime» para extraer una cadena codificada en Base64 que contiene una carga útil de JavaScript. También sondea GitHub en busca de confirmaciones que coincidan con la palabra clave «firedalazer» para buscar un cuentagotas basado en Python y ejecutarlo.

Algunas de las características importantes integradas en el malware Hades se enumeran a continuación:

  • Replica y distribuye lateralmente a través de redes de desarrolladores a través de SSH o SCP, envía versiones troyanizadas de paquetes PyPI desde sistemas comprometidos explotando las configuraciones de confianza OpenID Connect (OIDC) de los desarrolladores.
  • Apunte a los repositorios de GitHub para extraer secretos de la organización utilizando los ejecutores de GitHub Actions si el token de GitHub recolectado tiene los permisos de escritura adecuados.
  • Carpetas del espacio de trabajo local de puerta trasera para activar la ejecución de código cuando los asistentes de IA lo analizan o lo abren en IDE. Los objetivos incluyen Anthropic Claude, OpenAI Codex, Google Gemini, Microsoft Copilot, Cline, Aider, Tabby, Amazon Q, Cody, Bolt y Continuar.
  • Instale un servicio en segundo plano llamado «gh-token-monitor» que actúa como un limpiador eliminando todos los datos («rm -rf ~/; rm -rf ~/Documents») si el desarrollador revoca el token de GitHub robado.

«Una capacidad clave del actor Miasma es leer la memoria del proceso del ejecutor de GitHub Actions (el proceso Runner.Worker) para extraer secretos», dijo el investigador de seguridad Rohan Prabhu. «En campañas anteriores, esto se limitaba a los sistemas Linux que usaban /proc/{pid}/mem. La campaña Hades presenta raspadores de memoria personalizados para macOS y Windows».

Ciberseguridad

El desarrollo se produce cuando StepSecurity reveló que un atacante desconocido comprometió la cuenta de GitHub («LeonOstrez») vinculada a «Pythagora-io/gpt-pilot», una popular herramienta de desarrollo de inteligencia artificial de código abierto, y forzó una variante del gusano de robo de credenciales Shai-Hulud a la rama principal. El malware está diseñado para activarse silenciosamente cuando un desarrollador desprevenido ejecuta el proyecto, evitando al mismo tiempo los sistemas con una configuración regional rusa.

«El malware, una variante del gusano Shai-Hulud, fue detenido por un defensor improbable: ruff, un formateador de código Python», dijo Ashish Kurmi, cofundador y director de tecnología de StepSecurity. dicho. «El atacante intentó dos veces pasar el código malicioso a través de CI y falló en ambas ocasiones porque su archivo Python inyectado no coincidía con las reglas de formato y linting del proyecto».

La empresa de seguridad de la cadena de suministro de software Snyk tiene descrito estos ataques como parte del linaje Shai-Hulud/Miasma, con cada ola aprovechando un ladrón ofuscado en tiempo de ejecución de Bun y combinándolo con «nueva persistencia, nuevas rutas de exfiltración y nuevas formas de activar código automáticamente en el momento de la instalación o compilación».

«La campaña Miasma demuestra que tener claves firmadas y cuentas de mantenedor autenticadas ya no es una garantía absoluta de seguridad», Cloudsmith dicho. «Cuando los registros y repositorios ascendentes se ven comprometidos, el código público se convierte en una de las formas más fáciles y directas de ser pirateado».

El ataque de Trivy a la cadena de suministro desencadena un gusano bote que se propaga automáticamente en paquetes de 47 npm – CYBERDEFENSA.MX

Se sospecha que los actores de amenazas detrás del ataque a la cadena de suministro dirigido al popular escáner Trivy están llevando a cabo ataques posteriores que han llevado al compromiso de una gran cantidad de paquetes npm con un gusano autopropagante previamente indocumentado denominado gusano de bote.

El nombre es una referencia al hecho de que el malware utiliza un recipiente de PICque se refiere a contratos inteligentes a prueba de manipulaciones en la cadena de bloques de Internet Computer, como un solucionador de caída muerta. El desarrollo marca el primer abuso documentado públicamente de un recipiente ICP con el propósito explícito de recuperar el servidor de comando y control (C2), según Charlie Eriksen, investigador de seguridad de Aikido. dicho.

La lista de paquetes afectados se encuentra a continuación:

  • 28 paquetes en el ámbito @EmilGroup
  • 16 paquetes en el ámbito @opengov
  • @teale.io/eslint-config
  • @airtm/uuid-base32
  • @pypestream/flotante-ui-dom

El desarrollo se produce un día después de que los actores de amenazas aprovecharan una credencial comprometida para publicar versiones maliciosas de trivy, trivy-action y setup-trivy que contenían un ladrón de credenciales. Un enfoque en la nube operación cibercriminal Se sospecha que el grupo conocido como TeamPCP está detrás de los ataques.

Ciberseguridad

La cadena de infección que involucra los paquetes npm implica aprovechar un gancho posterior a la instalación para ejecutar un cargador, que luego coloca una puerta trasera de Python que es responsable de contactar con el contenedor ICP para recuperar una URL que apunta a la carga útil de la siguiente etapa. El hecho de que la infraestructura de dead drop esté descentralizada la hace resiliente y resistente a los esfuerzos de eliminación.

«El controlador del recipiente puede cambiar la URL en cualquier momento, enviando nuevos archivos binarios a todos los hosts infectados sin tocar el implante», dijo Eriksen.

La persistencia se establece mediante un servicio de usuario systemd, que está configurado para iniciar automáticamente la puerta trasera de Python después de un retraso de 5 segundos si se finaliza por algún motivo mediante el uso de «Reiniciar=siempre» directiva. El servicio systemd se hace pasar por herramientas PostgreSQL («pgmon») en un intento de pasar desapercibido.

La puerta trasera, como se mencionó antes, llama al recipiente de PIC con un agente de usuario del navegador falso cada 50 minutos para recuperar la URL en texto sin formato. Posteriormente, la URL se analiza para buscar y ejecutar el ejecutable.

«Si la URL contiene youtube[.]com, el guión lo omite», explicó Eriksen. «Este es el estado inactivo del recipiente. El atacante arma el implante apuntando el recipiente a un binario real y lo desarma volviendo a un enlace de YouTube. Si el atacante actualiza el contenedor para que apunte a una nueva URL, cada máquina infectada recoge el nuevo binario en su siguiente sondeo. El antiguo binario sigue ejecutándose en segundo plano ya que el script nunca finaliza procesos anteriores».

Vale la pena señalar que un youtube similar[.]Wiz también ha señalado el interruptor de apagado basado en com en relación con el binario troyanizado Trivy (versión 0.69.4), que llega al mismo recipiente ICP a través de otro cuentagotas de Python («sysmon.py»). Al momento de escribir, la URL devuelta por el C2 es una vídeo de youtube de rickroll.

The Hacker News descubrió que el recipiente ICP apoya tres métodos (get_latest_link, http_request, update_link), el último de los cuales permite al actor de amenazas modificar el comportamiento en cualquier momento para servir una carga útil real.

En conjunto, los paquetes vienen con un archivo «deploy.js» que el atacante ejecuta manualmente para distribuir la carga maliciosa a cada paquete al que un token npm robado proporciona acceso de forma programática. El gusano, que se considera codificado por vibración mediante una herramienta de inteligencia artificial (IA), no intenta ocultar su funcionalidad.

«Esto no se activa con la instalación de npm», dijo Aikido. «Es una herramienta independiente que el atacante utiliza con tokens robados para maximizar el radio de explosión».

Para empeorar las cosas, se descubrió que una iteración posterior de CanisterWorm detectada en «@teale.io/eslint-config» versiones 1.8.11 y 1.8.12 se autopropaga sin necesidad de intervención manual.

Ciberseguridad

A diferencia de «deploy.js», que era un script autónomo que el atacante tenía que ejecutar con los tokens npm robados para enviar una versión maliciosa de los paquetes npm al registro, la nueva variante incorpora esta funcionalidad en «index.js» dentro de una función findNpmTokens() que se ejecuta durante la fase posterior a la instalación para recopilar tokens de autenticación npm de la máquina de la víctima.

La principal diferencia aquí es que el script postinstalación, después de instalar la puerta trasera persistente, intenta localizar cada token npm del entorno del desarrollador y genera el gusano inmediatamente con esos tokens iniciando «deploy.js» como un proceso en segundo plano completamente independiente.

Curiosamente, se dice que el actor de amenazas cambió la carga útil de la puerta trasera ICP por una cadena de prueba ficticia («hello123»), probablemente para garantizar que toda la cadena de ataque funcione según lo previsto antes de agregar el malware.

«Este es el punto donde el ataque pasa de ‘la cuenta comprometida publica malware’ a ‘el malware compromete más cuentas y se publica a sí mismo’», dijo Eriksen. «Cada desarrollador o canal de CI que instala este paquete y tiene un token npm accesible se convierte en un vector de propagación involuntario. Sus paquetes se infectan, sus usuarios intermedios los instalan y, si alguno de ellos tiene tokens, el ciclo se repite».

(Esta es una historia en desarrollo. Vuelva a consultarla para obtener más detalles).