¿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.

Formas alternativas de conocer mejor a nuestros atacantes.

Tanque Ante un incidente de segurida la respuesta tradicional es utilizar el registro de actividad (los logs) pero esta no es la única alternativa y en Using API’s to Track Attackers nos dan algunas ideas sobre el tema.

Un atacante utiliza el API de Dropbox para conseguir algunos datos interesantes.

The attackers reused exactly the same piece of coded (link above) to decrypt the master key - hey, why reinvent the wheel? To exfiltrate data, they decided to use Dropbox. The well-known file sharing service provides indeed a nice Python interface to its API[3] which is very easy to use…

De paso, nos hablan un poco de instrospección en Python:

When you don’t have experience with Python library objects, your first reflex must be to search for the available methods via dir()

Y, en este caso, sobre la obtención de información del atacante.

The very first interesting method to use is users_get_current_account() to get information about the account. Now, we know more information about the attackers.

Nunca se sabe dónde podemos conseguir la mejor información.