El protocolo de la web: HTTP

Puente y cuerdas

Seguimos con recursos formativos/informativos. Hoy sobre el protocolo que subyace debajo de la publicación de las páginas web The HTTP crash course nobody asked for.

No es una lectura entretenida, pero seguro que sirve de recurso para tener a mano cuando nos preguntemos por algunos detalles de las herramientas que utilizamos en nuestro día a día.

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.