Una guía sobre OAuth

Ipomonea OAuth es un conjunto de especificaciones para delegar la autentificación y autorización en un tercero. Tiene algunas ventajas notables, como la de permitir que alguien pueda actuar en nuestro nombre sin cederle nuestras credenciales. O que ese ‘alguien’ sea ‘algo’ que utilizamos y donde no queremos (o alguien no quiere) que se almacenen las credenciales, sino un sistema alternativo que permite realizar determinadas operaciones.

En The Modern Guide to OAuth una buena guía que nos puede ayudar a comprender mejor la cosa, sus posiblidades y qué podemos hacer con ello.

Es bastante larga, así que no vamos a extaer apartados ni contenido y simpelmente haremos una invitación a la lectura.

¿Corre riesgo Python de quedar como un lenguaje marginal?

Libro. Practical Programming. An introduction to CS using Python Python es uno de mis lenguajes favoritos, y lo uso con frecuencia para algunas tareas. Sin embargo, hay en otras en las que no es lo más adecuado y de este tema hablan en el artículo que traemos hoy.

En Programming language Python is a big hit for machine learning. But now it needs to change hay algunas ideas interesantes sobre lo que Python debería ser en el futuro.

Desde luego, está claro que es un gran éxito en los temas relacionados con la inteligencia artificial y aprendizaje autómatico y se ha convertido en un lenguaje muy popular.

Sin embargo, nos dicen, no se puede ejecutar en el navegador, y tampoco en el teléfono móvil. Y tampoco hacen juegos con él.

Python is the top language according to IEEE Spectrum’s electrical engineering audience, yet you can’t run Python in a browser and you can’t easily run it on a smartphone. Plus no one builds games in Python these days.

Otra limitación, es la de la dificultad para construir y distribuir aplicaciones de escritorio, sobre todo si tienen interfaces gráficas.

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

Mucho del problema tiene que ver con la dificultad de cambiar el lenguaje sin causar problemas en algunos de los módulos más populares como numPy. Y por lo tanto, enfadar a mucha gente.

Ronacher says Python has been “stuck like this for many years”. Time and again, efforts to “kill the global interpreter lock” fail because it would cause troubles for extensions like NumPy.

Interesante.

Las URLs y los programas de escritorio. Otro problema de seguridad.

Nasas Si nuestra aplicación tiene que procesar datos de los usuarios, tenemos un problema: tradicionalmente ha sido una vía de ataque que ha tenido muchos éxitos.

En Allow arbitrary URLs, expect arbitrary code execution nos cuentan el caso de vulnerabilidades en aplicaciones de escritorio por no validar suficientemente los datos de entrada, que son interpretados como URLs y manejados por el sistema operativo.

In this post, we show code execution vulnerabilities in numerous desktop applications, all with the same root cause: insufficient validation of user input that is later treated as a URL and opened with the help of the operating system.

Esto puede llevarnos a ejecución de código, fundamentalmente por dos caminos: atacar el comportamiento del sistema operativo ante determinados esquemas y extensiones de ficheros; y explotando vulnerabilidades de aplicaciones de terceros que gestionan algunas de estas peticiones.

Con estas premisas en el artículo se hace un repaso de varios fallos de seguridad en el manejo de estas URLs, en aplicaciones como el cliente de Nexcloud, Telegram, VLC y otras aplicaciones.

Termina con algunos consejos para los desarrolladores, tanto de sistemas operativos (no montar directorios remotos, por ejemplo), entornos y aplicaciones (validar las URLs, y ser cuidadosos cuando registremos nuestra aplicación como gestor de URLs o extensiones).

Interesante.

Estás desarrollando tu propia criptografía. Y (¿no?) lo sabes.

Enigma Uno de los consejos que siempre se da con respecto a la criptografía es no meterse en ese negociado sin experiencia (“don’t roll your own crypto”).

De este tema se habla en Actually, You Are Rolling Your Own Crypto.

Así que solemos preocuparnos por los algoritmos y, sin embargo, lo cierto es que solo son una parte del tema. Luego hay que tener en cuenta más aspectos, que podrían tener consecuencias nefastas.

What they might not realize is that the algorithms themselves are the first in a series of traps, each of which can have catastrophic effects on the outcomes of cryptography use.

La elección de los algoritmos, su uso y su inclusión en otros procesos (protocolos) también tienen sus dificultades.

Algorithm selection, algorithm use, and protocol creation are all potential pitfalls that await once you’ve decided not to create your own algorithm.

En cuanto a la selección de algoritmos, podemos empezar por la diferencia entre criptografía simétrica y asimétrica, y dentro de ellas las distintas opciones disponibles.

There are a massive number of existing algorithms that do a wide range of things. The encryption space, for example, can first be broken down into symmetric and asymmetric. Each of those categories has a number of usable algorithms, and many of those algorithms have some other number of usable modes.

No sólo eso, no hay que olvidar que esos algoritmos pueden quedarse obsoletos con el tiempo (y por eso no comentaremos nada aquí sobre ellos).

En cuanto al uso, comenta que hay que tener cuidado con las opciones, como se inicializan… sin olvidar que hay que tener en cuenta nuestro contexto y luego elegir las implementaciones.

So you’ve chosen a secure algorithm in a secure mode that fits your operational environment. Now you need an implementation, no problem!…

Y ahora, hay que usarlos dentro de un proceso que permite algún tipo de comunicación segura: un protocolo. Es posible que no haya ninguno que se adapte bien a nuestro caso y entonces comienzan nuestros problemas.

your crypto is probably going to be deployed inside a protocol scheme that enables secure communication. When it comes to protocols, there is rarely an off-the-shelf solution. As a result, developers are often forced to implement their own protocols, even though they understand it is risky.

Muchas veces serán modificaciones de otros conocidos, pero que necesitamos adaptar a nuestras necesidades. Y aquí podríamos estar introduciendo debilidades, o suponiendo propiedades que no se cumplirán en el nuevo contexto.

They frequently need to be modified to meet the constraints of a particular operating environment. What’s often overlooked is that even small deviations to the designs can completely invalidate a security argument. What’s more, the threat model under which the original protocol was designed may not be valid for the environment in which it is deployed.

El consejo sería utilizar los bloques predefinidos más grandes posibles que se adapten a nuestras necesidades. Primitivas de alto nivel, protocolos ya desarrollados y, en general, algo que sea de uso amplio y que no tenga muchas opciones para configurarlo.

always use the biggest pre-built building blocks possible that meet your needs. For primitives, you can consider using the highest level interfaces of a library such as NaCl. For protocols, see if something such as an existing TLS implementation will meet your needs. In general, something widely used and with fewer configuration choices will be harder to misuse than something highly configurable.

Interesante.

El ecosistema del cibercrimen: algunos actores, distribución de tareas y sus conexiones

Mercado medieval. Equilibrista Si hay algo que tenemos claro en ciberseguridad es que ahora existe una industria y que se ha profesionalizado de manera notable. En This chart shows the connections between cybercrime groups.

Se habla del ecosistema del cibercrimen y sus conexiones:

… the cybercrime ecosystem is much smaller and far more interconnected than the layperson might realize.

Establece tres grandes categorías de lo que serían tecnologías disponibles para usar por teceros, servicios, distribución y monetización.

According to cybersecurity firm CrowdStrike, these third-party technologies can be classified into three categories: services, distribution, and monetization.

Y cada una de ellas incluye, a su vez, diferentes herramientas. Por ejemplo, en la de servicios habría intermediarios de gestión de accesos, herramientas de denegación de servicio, servicios de anonimato y cifrado, y unas cuantas más.

En los aspectos de distribución estaríamos hablando de las campañas de spam y redes sociales, compra-venta de tráfico, paquetes de explotación de vulnerabilidades…

Finalmente, en el apartado de monetización habría servicios como los de las ‘mulas’ (la gente que tiene que hacer las transacciones económicas ‘reales’), servicios de lavado de dinero, pagos de secuestros y extorsiones, recolección y venta de tarjetas, etc.

Es difícil, nos dice, conocer las conexiones entre todos estos grupos pero parece haber evidencias de su cooperación.

However, in the realm of malware attacks, some signs of cooperation can be observed by the way the malware moves from attackers to infected hosts.

E incluso ofrecen un índice de adversarios en este negocio: Crowdstrike adversary universe

Interesante.