Un fallo en SQLite relacionado con la representación de valores

Teatro

Cualquier observador atento (o cualquiera que se pase por aquí de vez en cuando) sabe que no hay programas seguros. No sólo eso, programas con una larga trayectoria y con una buena comunidad de usuarios detrás se encuentran con problemas (que suelen llevar tiempo allí) de vez en cuando.

Hoy traemos Stranger Strings: An exploitable flaw in SQLite que es un fallo en el API de la biblioteca SQLite. Tiene mucho interés porque este gestor de bases de datos está implantado en los sistemas más diversos que podamos imaginar. No sólo eso, también tiene un buen historial de seguridad.

SQLite is used in nearly everything, from naval warships to smartphones to other programming languages. The open-source database engine has a long history of being very secure…

El fallo tiene que ver con la longitud de una cadena de caracteres representada en 64 bits que se transformaba en un entero con signo de 32 bits cuando se pasaba como argumento en una función (dentro de un programa escrito en PHP).

The blog’s bug manifested when a 64-bit unsigned integer string length was implicitly converted into a 32-bit signed integer when passed as an argument to a function.

Explorando el problema los autores descubrieron que en una función que se utilizaba para proteger (escape) comillas (quote characters) en uno de los módulos podía haber problemas.

a function used for properly escaping quote characters in the PHP PDO SQLite module.

No vamos a entrar en ese nivel de detalle, pero esta es la línea en la que se pasa un entero largo sin signo (2*ZSTR_LEN(unquoted) + 3) a una función sqlite3_snprintf, que espera recibir un entero con signo:

 sqlite3_snprintf(2*ZSTR_LEN(unquoted) + 3, quoted, "'%q'", ZSTR_VAL(unquoted));

Sí que vale la pena destacar que SQLite tiene sus propias implementaciones de funciones alternativas a las peligrosas de la familia printf, que permiten sanear las cadenas que contienen instrucciones SQL.

Las personas interesadas deberían leerse la entrada completa (que está muy bien explicada y escrita) pero nos encontramos lo de siempre: la entrada/salida en C (SQLite está escrito en C) es delicada. Incluso cuando tratas de hacer las cosas bien, e incluso mejorarlas, puedes tener problemas.

Por si nos consuela, en las conclusiones nos dicen que las entradas necesarias para conseguir el ataque son muy grandes (y por eso los programas típicos de fuzzing no habrían detectado el problema).

For one, the inputs required to reach the bug condition are very large, which makes it difficult for traditional fuzzers to reach, and so techniques like static and manual analysis were required to find it.

Además, es un error que en el momento de escribirlo seguramente no se habría considerado como tal, porque entonces las arquitecturas eran primordialmente de 32 bits.

For another, it’s a bug that may not have seemed like an error at the time that it was written (dating back to 2000 in the SQLite source code) when systems were primarily 32-bit architectures

Finalmente, el ataque era más sencillo gracias a las representaciones divergentes (divergent representations) de la misma variable (algunas optimizaciones del compilador ocasionan que se puedan leer valores diferentes en función de si se ven de una forma o de otra).

its exploitation was made easier by the discovered “divergent representations” of the same source variable, which we explore further in a separate blog post.

Sobre esto han escrito otra entrada, que no he leído aún: Look out! Divergent representations are everywhere!.

Algunas tendencias sobre ciberseguridad en empresas

Castillo de Trasmoz

Se ha publicado Announcing the 2022 Accelerate State of DevOps Report: A deep dive into security.

En Data security trends: 7 statistics you need to know justamente lo que promete el título, 7 tendencias sobre ciberseguridad a las que deberíamos prestar atención.

  1. Los correos de Phishing están aumentando y también los empleados que pinchan en los enlaces.
  1. Phishing emails are on the rise, and so are the employees clicking the links
  1. Para evitarlo, las empresas están enviando todavía más pruebas de Phishing.
  1. To fight back, businesses are implementing more phishing tests
  1. El doble factor de autentificación está ampliamente extendido. Ahora que los malos están encontrando formas de saltarlo.
  1. Two-factor authentication is finally ubiquitous—just as attackers find new ways to defeat it
  1. Las empresas dan a sus empleados casi siempre más acceso a los datos de lo necesario.
  1. Businesses often give employees more access to data than necessary
  1. Las empresas nuevas son más vulnerables a los ataques.
  1. Newer companies are more vulnerable to attacks
  1. Los ataques de secuestro de datos se han duplicado, pero menos empresas están pagando el rescate.
  1. Ransomware attacks have doubled, but fewer companies are paying the ransom
  1. La mayoría de las empresas han aumentado el presupuesto de seguridad y los esfuerzos de concienciación.
  1. Most companies have increased security budgets and awareness training

DevOps y la ciberseguridad según un informe de Google

Mesa y sillas Se ha publicado Announcing the 2022 Accelerate State of DevOps Report: A deep dive into security.

Hemos hablado alguna vez de DevOps, de pasadada, la idea de ese conjunto de prácticas que aúnan el desarrollo de programas (Dev) y las operaciones relacionadas con ellos (Ops) con el objetivo de reducir el ciclo de ciclo de vida de los desarrollos informáticos.

El caso es que Google anda investigando estas prácticas, a través de encuestas para conocer las capacidades y prácticas alrededor de este concepto.

Over the past eight years, more than 33,000 professionals around the world have taken part in the Accelerate State of DevOps survey, making it the largest and longest-running research of its kind. Year after year, Accelerate State of DevOps Reports provide data-driven industry insights that examine the capabilities and practices that drive software delivery, as well as operational and organizational performance.

Pero hoy en día nadie habla en serio de desarrollo sin tener en cuenta la seguridad (que también sería una componente importante en el DevOps), y en la edición de este año profundizan en la cadena de suministro que ya lleva una temporada siendo un problema crítico.

To analyze the relationship between security and DevOps, we explored the topic of software supply chain security, which the survey only touched upon lightly in previous years.

Parece que el resultado es bueno, adoptando buenas prácticas, al menos de manera parcial.

Overall, we found surprisingly broad adoption of emerging security practices, with a majority of respondents reporting at least partial adoption of every practice we asked about.

Y, como suele pasar, los mejores suelen estar en ambientes con una cultura sana: confianza, y no penalizar los errores.

One thing we found surprising was that the biggest predictor of an organization’s software security practices was cultural, not technical: high-trust, low-blame cultures.

Con algunas ventajas añadidas como es reducir el estrés y fatiga de los desarrolladores y convertirse en lugares más atractivos para otras personas.

Not only that, survey results indicate that teams who focus on establishing these security practices have reduced developer burnout and are more likely to recommend their team to someone else.

Extrayendo información de un teclado que aún conserva algo de calor

Teclado flexible Ya hemos contado muchos métodos para extraer información de equipos aprovechando la propia actividad de los mismos. En esa línea, pero sin sacar más información que las contraseñas, traemos hoy Recovering Passwords by Measuring Residual Heat.

Se trata de obtener imágenes térmicas de teclados y ver lo que se tecleó allí, en particular, las contraseñas.

Our first study shows that ThermoSecure successfully attacks 6-symbol, 8-symbol, 12-symbol, and 16-symbol passwords with an average accuracy of 92%, 80%, 71%, and 55% respectively, and even higher accuracy when thermal images are taken within 30 seconds.

En este caso el tiempo es importante, porque los teclados van perdiendo ese calor residual. Como dice Schneier, si alguien puede entrenar una cámara con nuestro teclado, seguramente tenemos problemas más graves.

Curioso.

¿2FA ya no es suficiente? Pues vamos a por el tercer factor

Puerta Hoy traemos un tema algo menos técnico. Por cierto, que me parece que el sitio del que lo traemos últimamente ha bajado mucho el nivel de los artículos y ha perdido parte del interés que tenía. Pero aún podemos sacar alguna noticia. Podríamos decir que vivimos en una época de escalada ‘armamentística’: se van añadiendo recursos y herramientas a los que ya teníamos para tratar de aligerar el problema del fraude, donde los ‘malos’ son cada vez más eficientes buscando las debilidades y los defensores hacen lo que pueden, teniendo en cuenta que tienen en su lado al eslabón más débil de la cadena, que es el usuario en la mayoría de las ocasiones.

En 2FA is over. Long live 3FA! se hacen eco del creciente número de ataques y mecanismos que se están utilizando para atacar a los usuarios y los sistemas de identificación de doble factor (ya saben, además de la consabida contraseña, algo más que ayude a aligerar el problema de la autentificación. Ahora que ya casi estábamos convencidos de que era el camino a seguir.

In the past few months, we’ve seen an unprecedented number of identity theft attacks targeting accounts protected by two-factor authentication (2FA), challenging the perception that existing 2FA solutions provide adequate protection against identity theft attacks.

El problema, claro, es que casi siempre el segundo factor utiliza mecanismos que no son mucho más fuertes que la contraseña, y eso es un problema.

he problem with this type of second factor is that it is not necessarily stronger than a password; it is only timelier.

Esencialmente se utilizan dos tipos de ataques:

  • Por un lado, mecanismos de ‘adversario en medio’ adversary-in-the-middle (AiTM), que tratan de obtener esos segundos factores iniciando ellos la actividad en nombre del usuario y haciéndole creer que ese código deben ponerlo en un sitio controlado por el atacante.

AiTM is a technique used by attackers for doing phishing attacks via a proxy. Rather than harvesting passwords and trying to use them later, the attackers proxy the attempted login of the user, including the second authentication factor (whether it is an OTP or MFA push), and create a new session for the attacker, in real time, that is then used for future access.

  • Por el otro, lo que llaman fatiga multifactor, que trata de hacer llegar tantas peticiones de validación del segundo factor que el usuario baje la guardia y sea más fácil hacerle aceptar alguna de las que reciba.

The attacker then starts attempting to log in with the stolen credentials. Every time the attacker does so, the user gets a push notification on their app asking them to verify the authentication.

La propuesta sería añadir un factor más, fuera del alcance de un posible atacante, y típicamente ligados a dispositivos concretos.

The solution is to embrace MFA more broadly, moving to three-factor authentication (3FA) by adding an additional factor, but this time one that cannot be used by the attacker to authenticate from a foreign device. This can be done by tying the user authentication to a specific device or hardware token.

No sé yo…