Viene con un regalo: no todo es lo que parece

Tornillos

Siempre se había dicho que había que tener cuidado con lo que había en la definición de los sitios donde nuestro sistema busca los ejecutables por defecto (el PATH). La cuestión es que la superficie de exposición y dónde puede haber elementos peligrosos se va ampliando con el tiempo. En This New Supply Chain Attack Technique Can Trojanize All Your CLI Commands nos dan idea sobre elllo.

Primero nos habla de los ‘puntos de entrada’ (entry points) que es un mecanismo que permite que algunas funcionalidades estén disponibles a través de la línea de instrucciones sin necesidad de que el usuario conozca la estructura de un paquete; esto es, no sólo tenemos una biblioteca (librería) o un programa, sino que podemos tener otras formas de ejecutar algunas partes que puedan ser interesantes por algún motivo.

Entry points are a powerful feature of the packaging system that allows developers to expose specific functionality as a cli command without requiring users to know the exact import path or structure of the package.

¿El truco? Los malos pueden insertar en paquetes de apariencia normal sustitutos de algunas instrucciones habituales y utilizar estos puntos de entrada para ejecutar sus programas.

Malicious packages can use entry points to masquerade as widely-used third-party tools. This tactic is particularly effective against developers who frequently use these tools in their workflows.

En casos como estos podría ser bastante fácil darse cuenta de que algo va mal, así que una solución puede ser utilizar el nombre para hacer un programa que tiene el efecto esperado, además de los efectos maliciosos.

In addition to silently executing the attacker’s malicious code, it calls the original, legitimate command with all the user’s arguments.

La clave aquí (y la dificultad) es que el usuario ejecutará una instrucción, recibirá el resultado esperado y puede que a la vez esté sufriendo algún tipo de ataque (robo, borrado, ejecución de otras cosas,…).

Otro motivo para tener mucho cuidado con lo que se instala, dónde y cómo lo ejecutamos.

Confundiendo a los usuarios usando sitios habituales de alojamiento de información

Puerta del Perdón

En File hosting services misused for identity phishing hablan del uso de los sitios de alojamiento de ficheros para realizar ataques: se comprometen las credenciales (o algún sistema de acceso) de un usuario, se sube un fichero al servicio y se comparte con la organización objetivo del ataque. El ataque tiene éxito porque la gente confía en estos servicios de alojamiento (estamos acostumbrados a usarlos, recibir compartidos, …)

The attack typically begins with the compromise of a user within a trusted vendor. After compromising the trusted vendor, the threat actor hosts a file on the vendor’s file hosting service, which is then shared with a target organization. This misuse of legitimate file hosting services is particularly effective because recipients are more likely to trust emails from known vendors, allowing threat actors to bypass security measures and compromise identities

Una vez que se ha compartido el fichero el servicio enviará un enlace a las víctimas. No es un mensaje falso, sino uno de los que generan este tipo de servicios habitualemente.

Once the threat actor shares the files on the file hosting service with the intended users, the file hosting service sends the target user an automated email notification with a link to access the file securely.

Cuando el usuario accede al enlace se le pide que se identifique (con posible uso de medidas adicionales de seguridad del servicio)

When the targeted user accesses the shared file, the user is prompted to verify their identity by providing their email address:

Finalmente, el usuario puede ver el documento que, típicamente, invita a pinchar en algún enlace (ahora ya sí, malicioso)

the user is successfully authorized and can view a document, often masquerading as a preview, with a malicious link, which is another lure to make the targeted user click the “View my message” access link.

Ahora este enlace redirige al usuario a una página de phishing que emula el procedimiento de acceso habitual y allí ya le roban sus credenciales.

This link redirects the user to an adversary-in-the-middle (AiTM) phishing page, where the user is prompted to provide the password and complete multifactor authentication (MFA). The compromised token can then be leveraged by the threat actor to perform the second stage BEC attack and continue the campaign.

Estamos tan acostumbrados a identificarnos, reidentificarnos y volvernos a identificar en estas plataformas con este tipo de flujos de trabajo que, aparentemente, los usuarios caen sin darle muchas vueltas.

Atención.

Las extensiones de los navegadores y algunos consejos sobre su seguridad

Libro. There is a cat con the internet!

En Attacking browser extensions un nuevo recordatorio de que las extensiones del navegador son programas externos que ejecutamos en nuestra máquina y que deberíamos prestarles atención.

Una extensión del navegador es un conjunto de ficheros HTML, CSS, y JavaScript que realizan conjuntamente algún tipo de transformación para ‘mejorar’ nuestra navegación.

A browser extension is a group of HTML, CSS, and JavaScript files that work together to enhance the browsing experience.

También tienen un fichero de configuración manifest.json donde se pueden especificar algunas cuestiones como el contexto de ejecución (contenido, ventanas emergentes -popup-, y de fondo).

In the manifest.json file, we can specify the context that a file will run. The three major contexts are the webpage/content script, the popup and the background.

El contexto de fondo es el más potente, porque permite el acceso a la mayoría de APIs de extensiones del navegador, dándole control sobre la experiencia de navegación, con muchas capacidades.

The Extension APIs give an extension a lot of control of the user’s browsing experience, with the ability to arbitrarily control tabs, read from the websites, or modify and read cookies, to name a few.

También hay un sistema de permisos, que permite limitar este control.

Luckily, these abilities are each locked behind permissions, requested in the manifest.json file under the “permissions” key.

Habría que fijarse en permisos como el de pestaña activa (activeTab), que puede ser bastante peligroso.

This activeTab is interesting for exploitation and malicious extensions alike due to its immense power.

Por su parte. los permisos relacionados con el contenido pueden afectar porque interactúan con el DOM (modelo de objetos de la página), escuchar las interacciones del usuario, y reaccionar ante ellas.

The frontend of an extension is just as important as the backend when extensions want to interact with the DOM of the pages visited by the user

The content script may also listen for user interaction on the current page, allowing an action to be taken based on the user interaction.

Finalmente el contexto de las ventanas emergentes tiene que ver con la ejecución de JavaScript que interactuará con la extensión, permitiendo cambios en la configuración, realización de peticiones…

… the popup will let the user directly interact with the functionality of the extension, usually allowing them to change settings and make requests to backend servers that are tied to the extension.

Naturalmente, con acceso a las APIs de extensiones, con las correspondientes consecuencias.

Like the background script, the JavaScript running in the popup page can use all the Extensions APIs that the extension has permissions for and any JavaScript runs in the domain of the extension.

Por lo tanto, las extensiones pueden ser la causa de:

  1. Aceptar contenido proporcionado por un atacante y utilizarlo de forma insegura.

The extension takes attacker-supplied input from the website and uses it in some unsafe way.

  1. Otra extensión o un sitio web envían un mensaje a la extensión y ésta la utiliza de forma peligrosa.

Another extension or a website sends a message to the extension and the extension uses that input in a dangerous way.

  1. La extensión utiliza algunos de los parámetros de la URL cuando se carga y los utilizar para realizar alguna operación con privilegio para realizar acciones peligrosas. Para que esto sea posible debería haber algún problema en la configuración.

The extension takes in URL parameters when it is loaded, and those parameters are used to do a privileged operation. This requires a vulnerable configuration.

La primera consecuencia es que pueden ocurrir cosas malas pero que, en general, no es tan fácil.

why browser extensions are generally pretty secure, because it often requires multiple points of failure in order to introduce an exploitable vulnerability

Sobre las posibles vulnerabilidades que podrían ocurrir son las esperables: cross-site scripting, server-side request forgery e inyección en el API de extensiones (Extension API injection).

Entre las mitigaciones, los navegadores implementan aleatorización de los identificadores (UUID randomization) de forma que un ataque en el HTML tenga menos posibilidades de éxito.

Firstly, many browsers have randomized the ID of the extension, so that attacking exposed HTML files is no longer a threat, unless a leak of the internal ID, called the UUID, can be found.

Modelado con herramientas como CodeQL (proporcionado por GitHub, de cuyo blog es el artículo), que permiten detectar comportamientos maliciosos de algunos flujos de ejecución.

CodeQL’s code injection query gets a RemoteFlowSource (any Javascript APIs that potentially take in data from an external system or user) and looks for flow into Javascript code injection sinks such as eval.

Interesante. Los ‘malos’ sólo tienen que encontrar una de todas las vías de entrada que existen.

Los generadores de números seudoaleatorios y la seguridad

Los dados del r5

Esta es la edición de final de año del recordatorio de que los números aleatorios y las computadoras no se llevan bien. En esta ocasión de la mano de John D. Cook, y RNG, PRNG, CSPRNG.

Empieza recordándonos que la mayoría de generadores de números aleatorios son generadores de números seudoaleatorios (pseudorandom number generators PRNGs).

Most random number generators are pseudorandom number generators (PRNGs). The distinction may be pedantic or crucial, depending on context. In the context of cryptography, it’s critical.

Y la vuelta de tuerca es que para la criptografía (y seguridad en general) no nos basta con estos números (que sería suficientes para simulaciones, integración numérica, juegos, …) sino que necesitamos los llamados generadores criptogr´ficos seguros de números seudoaleatorios (cryptographically secure pseudorandom number generator, CSPRNG).

A PRNG may be suitable for many uses—Monte Carlo simulation, numerical integration, game development, etc.—but not be suitable for cryptography. A PNRG which is suitable for cryptography is called a CSPRNG (cryptographically secure pseudorandom number generator).

¿La razón? Hay técnicas de análisis criptográfico muy pontentes, que pueden ayudar si hay sesgos o la calidad de los números generados no es buena por algún motivo.

If a PRNG fails statistical tests, it has some sort of regularity that potentially could be exploited by cryptanalysis.

Los generadores de números seudoaleatorios tienen buenas propiedades desde el punto de vista de la estadística, pero no tienen por qué ser seguros.

A PRNG may have excellent statistical properties, and pass standard test suites for random number generators, and yet be insecure.

Un generador de números aleatorios físico, con buenas propiedades estadísticas podría tener, sin embargo, buenas propiedades desde el punto de vista de la seguridad. Nombra el conocido caso de las lámparas de lava de Cloudflare (How do lava lamps help with Internet encryption?)

I suspect that a physical RNG with good statistical properties will have good cryptographic properties as well, contrary to the usual case. Cloudflare famously uses lava lamps to generate random bits for TLS keys.

Pero también puede ocurrir que los sistemas generadores físicos fallen las pruebas estadísticas (por ejemplo, que aparezcan sesgos).

A physical RNG might fail statistical tests. For example, maybe the physical process is truly random but biased.

¿Alguien de estadística en la sala?