Algunos artículos sobre pruebas

Bugs Suelo echarle un vistazo a la revista CrossTalk. Como ya comentábamos hace algún tiempo en Desarrollo ágil y algunos problemas que aparecen a veces se ttrta de una revista sobre ingeniería del software militar), donde tratan temas actuales con un punto de vista de gestión. Suelen ser articulitos cortos que se leen fácil y aportan puntos de vista interesantes a veces.

En el último número hablan sobre Test and Diagnostics y a mi me han interesado especialmente:

Hemos hablado bastante de fuzzing (ver (tag fuzzing)[https://mbpfernand0.wordpress.com/tag/fuzzing/] en el blog antiguo) y Coches y ataques en este mismo blog.

Bugs con una larga historia. El caso de LZO

Bugs En Raising Lazarus - The 20 Year Old Bug that Went to Mars otra historia de esas que nos recuerda que hacer software seguro (o bien) es difícil. En este caso es una fallo sutil que ha escapado durante años a las revisiones que se hayan podido hacer (si es que se hicieron, que es otro de los temas que aparecen de vez en cuando relacionadas con el desarrollo de programas).

En esta ocasión se trata de diversos desbordamientos de enteros a la hora de ir almacenando valores y contabilizando el espacio que ocupan.

En este caso, además, se añade el interés de que hay varias implementacionesd el algoritmo LZO (Lempel-Ziv-Oberhumer) que comparten algunas partes de su código.

Ya habíamos hablado de El mito de los miles de ojos y más fallos con historial largo: Un fallo de 17 años, Alguien puso un troyano en mi servidor de IRC y Diaspora: lecciones de seguridad.

OAUTH y seguridad

Identificación Últimamente es raro el sitio que no permite identificarse con nuestra cuenta de Google, Facebook, Twitter u otras. La ventaja para el desarrollador está clara: desde un punto de vista de usuarios que re-utilizan contraseñas y que no son muy fiables a la hora de gestionar correctamente sus credenciales, delegamos ese trabajo en empresas más pontentes y que seguramente lo harán mejor que nosotros. Aunque puede que no sea una ventaja completa porque queramos tener un sistema de acceso para todas aquellas personas que no quieran utilizar este tipo de mezclas. Desde el punto de vista del usuario también está clara la ventaja: no tenemos que andar dándonos de alta en montones de sitios, con contraseñas (idealmente) diferentes y cofiando en administradores de plataformas que apenas conocemos.

Del tema de delegar la gestión de cuentas en otros se hablaba en Introducing the “Secure Account Management Fundamentals” course on Pluralsight que enlazamos en su momento desde Fundamentos de gestión de cuentas.

Para estas cosas se utiliza, entre otros OAuth que es un protocolo bastante completo y que permite cosas más sofisticadas. Nosotros lo hemos visto de pasada cuando hemos hablado de Publicar en Facebook las entradas de este sitio usando Python, Publicar en Twitter las entradas de este sitio usando Python, porque estos sitios no permiten que utilicemos la contraseña directamente, sino que prefieren que nos identifiquemos a través de OAuth.

Esencialmente se basa en que nos autentificamos una vez en el sitio proveedor (o más, si fuera necesario en el tiempo) y este nos proporciona unos tokens de acceso que permiten realizar ciertas operaciones en el propio sitio o, simplemenete nos reconoce como usuarios y eso le basta al sitio de origen como identificación.

El historial de seguridad de este protocolo ha tenido sus incidentes y por eso me gustó encontrar OAuth Security Cheatsheet que nos da las ideas principales sobre el flujo de datos y las precacuciones que debemos tomar a la hora de implementarlo/utilizarlo.

Los nombres y las cosas

Cerrado Una fuente frecuente de problemas de seguridad son los nombres: cuando esperamos que algo se llame de una determinada forma y también se puede referenciar con nombres alternativos (que no tuvimos en cuenta) es posible que se produzcan problemas: eso incluye la utilización de paths, diversas codificaciones, …

En la propia historia dicen que es un rumor (o algo que se dice) pero sirve como un ejemplo de lo que podría haber pasado (sin saber si es cierto o no): Windows 9 Reportedly Skipped as Name Would Have Created Code Bugs: la idea sería que en algunos casos se habrían utilizado búsquedas del nombre para identificar el sistema Operativo del estilo de ‘if(version,startswith(“windows 9”) que inevitablemente producirían confusiones en el caso de que se hubiera lanzado un hipotético Windows 9.

Sea cierta o no, una buena historia para un sábado. Y un recordatorio para los casos en que, efectivamente, los nombres han sido un problema.

Seguridad y principio del mínimo privilegio

Cerrado El principio del mínimo privilegio consiste esencialmente en conceder a las aplicaciones y usuarios los permisos necesarios para realizar las acciones que tengan que llevar a cabo, pero no más. Esto durante el tiempo necesario.

En Improving security through least-privilege practices hablan del tema introduciendo las ideas generales y la motivación.

Me quedo con esta frase:

A tip I often give my clients is to not see accounts as privilege but see privilege as accounts. What I mean by this is an account that is used for backup administration, or an account that is used to create users on a domain should be used as such and not for anything else. If your user’s accounts have these privileges then you have lost control of your network, data and systems and any malicious user or application will eventually exploit this vulnerability.