Un ejemplo de uso del OAuth de Google con Node.js

Puerta de Famagusta Esta vez traemos un articulito de los de ‘manos en la masa’. Se trata de Google OAuth with Node.js y habla justamente de eso.

Oauth es un estándar abierto para la delegación de acceso sin proporcionar la contraseña. En muchos casos se utiliza para no tener que construir nuestro propio sistema de gestión de accesos, confiando esa parte a un tercero (como Google) que se ocupa de identificar al usuario y dejarnos realizar nuestro trabajo sin entrar en esos detalles.

JavaScript es un lenguaje de programación muy popular y en el artículo nos dan las pistas necesarias para trabajar generar las credenciales y poder utilizarlo.

¿Necesita evolucionar Python para mejorar?

Expo. Desfile Python es un lenguaje de programación cuyo uso ha crecido mucho en los últimos años. Uno de los motivos es su utilización en aprendizaje automático y otras técnicas de inteligencia artificial.

En Programming language Python is a big hit for machine learning. But now it needs to change hablan de esto y de algunas limitaciones que podrían estar impidiendo que avance en otros campos.

But 35-year-old Python does have its weaknesses. Not necessarily for the data-science and machine-learning communities built around Python extensions like NumPy and SciPy, but as a general programming language.

Por ejemplo, en el ámbito de la web, o en de las aplicaciones móviles.

To build browser applications, developers tend to go for JavaScript, Microsoft’s type-safety take on it, TypeScript, Google-made Go, or even old but trusty PHP. On mobile, why would application developers use Python when there’s Java, Java-compatible Kotlin, Apple’s Swift, or Google’s Dart?

Otro problema, dicen, son las aplicaciones de escritorio con interfaz gráfica.

“It’s an embarrassing admission, but it’s incredibly awkward to use Python to build and distribute any applications that have actual graphical user interfaces,” he tells ZDNet.

Y aún van más allá, hablando de la distribución (entrega) de aplicaciones desarrolladas en este lenguaje.

The Python community realizes that app distribution is its Achilles heel, but Ronacher doesn’t see a way forward without fracturing the Python community.

Interesante.

Ataques a través de fallos en códigos de terceros

2013-10-11-facebook Cuando deseamos atacar una aplicación, un tema al que no siempre se presta adecuada atención es a la ‘cadena de suministro’; esto es, otras bibliotecas y aplicaciones que nuestra aplicación utiliza.

En #InstaHack: how researchers were able to take over the Instagram App using a malicious image habla de Instagram, el conocido servicio para compartir imágenes y cómo encontraron una vulnerabilidad que permitía atacar una cuenta simplemente enviándole una imagen maliciosa.

Por un lado, tenemos una aplicación que ‘necesita’ un conjunto de permisos muy amplio en nuestro sistema.

But what happens when we`re talking about an application that has extensive permissions on your device? If the application is hacked, the hacker will have easy access to your GPS data, camera, microphone, contacts, and more.

Se trata, como casi todas, de una aplicación que utiliza ampliamente código de terceros.

Instead, they use 3rd party libraries to handle common (and often complicated) tasks such as image processing, sound processing, network connectivity, and so on.

Y, en este caso, utilizaban código de un proyecto que tenía algún fallo y que permitía que cuando se le enviaba la imagen y esta se almacenaba en el dispositvo, se podía producir un ataque al abrir la aplicación.

In the attack scenario we describe in our research, an attacker can simply send an image to their target victim via email, WhatsApp or another media exchange platform. The target user saves the image on their handset, and when they open the Instagram app, the exploitation takes place, allowing the attacker full access to any resource in the phone that is pre-allowed by Instagram.

Con esto era posible acceder a los datos o provocar una denegación de servicio, dejando inutilizada la aplicación.

Al informar a Facebook (el propietario de Instagram) sobre el tema descubrieron que el problema era un desbordamiento de enteros (los grandes olvidados en los ya de por sí olvidados desbordamientos) y lo arregló con rapidez.

We have responsibly disclosed our findings to Facebook and the Instagram team. Facebook’s advisory was very responsive and helpful, they have described this vulnerability as an “Integer Overflow leading to Heap Buffer Overflow” and issued a patch to remediate the issue on the newer versions of the Instagram application on all platform.

Interesante.

Algunos hallazgos sobre la seguridad de un marcapasos.

Teruel. Corazones En la comunidad de investigadores es frecuente investigar con lo que se tiene más a mano que son los dispositivos caseros. Este es el caso de Marie Moe, que tiene implantado un marcapasos y se ha dedicado a analizar su seguridad, Hacking Yourself: Marie Moe and Pacemaker Security.

Hace unos años inició su trabajo sobre la seguridad de los marcapasos y encontró cosas interesantes ICS Medical Advisory (ICSMA-20-170-05). Fundamentalmente, problemas de:

  • Autentificación incorrecta.
  • Transmisión en texto claro de credenciales.
  • Reutilización de credenciales.
  • Almacenamiento de datos médicos en claro.
  • Almacenamiento incorrecto de contraseñas en el dispositivo.

Es cierto que, aparentemente, no hay ataques conocidos públicos que saquen partido de estas vulnerabilidades y tampoco pueden usarse para cambiar la programación del dispositivo.

Note for the record that so far, “no known public exploits specifically target these vulnerabilities,” the Advisory says. Also note that these vulnerabilities can’t be used to directly reprogram a pacemaker or hack someone’s heart.

Aleatoriedad en sistemas informáticos. Una introducción breve.

Los dados del r5 La generación de números aleatorios en sistemas informáticos es un tema que tratamos por aquí de vez en cuando. Por eso me gustó How Do Computers Generate Random Numbers donde dan algunos detalles.

Siempre decimos que un computador es un sistema determinista y, por lo tanto, con muchos parámetros predecibles, lo que hace difícil resolver el problema de generar datos impredecibles.

Anyone with any programming experience understands that computers are deterministic machines. If you provide the same input, you’ll always get the same output. That’s why having computers generate something by chance is trickier than it may seem.

Luego habla de posibbles fuentes de entropia (aleatoriedad), como pueden ser los movimientos del ratón, el ruido del ventilador, la presión atmosférica y otros, como semilla de los algoritmos generadores.

We just need to pick a seed that an attacker wouldn’t be able to predict. This seed value will then be passed into an algorithm, similar to PRNGs, that will generate a random number to use.

Finalmente, muestra algunos de los algoritmos y sus implementaciones.

Interesante.