Un fallo de autentificación en MySQL

En MySQL o cómo es posible dar por válida una contraseña incorrecta una entrada de esas que nos gustan por aquí donde se muestra como una codificación poco cuidadosa combinada con el uso de los tipos de datos (0 y ‘no 0’, u otros valores) nos llevan a un problema de seguridad.

De la documentación en sql/password.c:
RETURN VALUE
0 password is correct
!0 password is invalid

El problema es que “memcmp” no va a devolver ‘0’ o no ‘0’, sino un valor entero (int). Dicho entero es convertido al valor que retorna “check_scramble” que es del tipo “my_bool”

La solución en este caso pasa por asegurarse de que, efectivamente, se
devuelve el valor esperado:

return test(memcmp(hash_stage2, hash_stage2_reassured, SHA1_HASH_SIZE));

La diferencia es la aplicación de “test” sobre el resultado devuelto por “memcmp”. Dicha macro está definida en include/my_global.h:

#define test(a) ((a) ? 1 : 0)

En Security vulnerability in MySQL/MariaDB sql/password.c está el aviso del fallo.

Anuncios

¿Autentificación de dos factores? ¡Cuidado!

Nos lo contaban hace algunas semanas en Fraudsters beat two-factor authentication, steal $45k.

Las compañías están obligadas a hacer las portabilidades rápido:

Well, as it turns out, they took advantage of the mobile phone number portability option offered by telecommunication companies and mandated by the Australian government so that the companies could not lock in customers, and employed social engineering skills to gather the information needed for such a move.

La portabilidad ocasiona problemillas técnicos:

… requested his account to be “ported” to a pre-paid account with an alternative provider. Once the move was completed, they sent the businessman a message supposedly coming from his provider (Vodafone), notifying him that he will likely experience problems with the reception in the next 24 hours, so that he would not become suspicious about the fact that he would not be receiving any calls or messages.

En resumen, el ataque se basa en portar un número temporalmente, hacer operaciones con él y devolvérselo al usuario casi sin que se de cuenta de que ha sido suplantado.

A veces, hay buenos motivos para no hacer algunas cosas demasiado rápido.

La autenticación y las aplicaciones

En User Authentication: It Doesn’t Belong In Your Application un comentario con buenos motivos sobre el tema. Las cosas que hay que tener en cuenta si montamos nuestro propio sistema de identificación y autentificación, y las ventajas que tiene si utilizamos el sistema de autentificación de un tercero.

Vemos últimamente muchas aplicaciones a las que se puede acceder a través de servicios de terceros (Google, Facebook, …). Como dice el autor, eso puede aligerarnos bastante peso en el desarrollo pero, como todo, hay que tener cuidado. No será la primera vez que a alguien le cancelan la cuenta en uno de estos servicios tan bonitos y baratos y, de pronto, se queda también sin acceso a nuestro servicio. Igual que dice en la primera parte lo de Don’t Forget the Forgotten Passwords añadiría yo lo de no te olvides de que algo puede ir mal en los otros servicios (y no ser culpa tuya).

Interesante lectura, en todo caso.

“Guías sobre biometría del INTECO”

Me entero de una noticia de (más o menos) actualidad, para variar. INTECO presenta el Estudio y la Guía sobre tecnologías biométricas aplicadas a la seguridad.

Se pueden descargar tanto el estudio como la guía y pueden ser un buen
resumen sobre estos temas.

Dicha investigación se centra en los usos, beneficios, riesgos y buenas prácticas recomendadas en el uso de la biometría aplicadas al control de identidades y control de accesos. El objetivo es dar a conocer a las empresas y los usuarios el nivel de desarrollo y confianza de las tecnologías biométricas y asegurar que su implantación se realice respetando plenamente la seguridad de la información y la privacidad de los ciudadanos.

Yo, por completar, añadiría estos enlaces (seguramente están comentadas estas ideas en los informes, no los he leído aún):

Y un par de vídeos:

¿Soy contrario a la biometría? No, pero hay que hacer estas cosas con cuidado. A veces, entran más bien en el Security Theater.

Pistas sobre autentificación en aplicaciones web

Ya hemos hablado de algunas hojas de pistas sobre diversos temas: Las claves y ‘Chuleta’ para la prevención de ‘Cross Site Scripting’.

Otra recomendación: Authentication Cheat Sheet, sobre los temas de autentificación.

En general la serie de Cheat Sheets es muy interesante, y va acompañada de algunas explicaciones en los OWASP Podcast que todavía las hace más valiosas.

Verificado por Visa y MasterCard: cómo no hacer las cosas

No conocía el programa MasterCard SecureCode o Verified by Visa.

Pero me parece interesante la lectura de Verified by Visa and MasterCard SecureCode: or, How Not to Design Authentication (pdf) donde cuenta un buen número de cosas que pueden hacerse (y se han hecho) mal. También el debate eterno de la seguridad y la economía (en el sentido de dónde se ponen los incentivos).

La web sin cookies de sesión

En Weaning the Web off of Session Cookies Making Digest Authentication Viable proponen prestarle más atención a la utilización de la autentificación basada en el ‘HTTP digest’ como alternativa a las ‘cookies’. Cuentan las limitaciones de uno y otro método, las principales barreras de uno y otro método y por qué deberíamos prestarle más atención al sistema que proporciona el protocolo http.

A un nivel mucho más básico recuerdo ahora el Web Based Session Management. Best practices in managing HTTP-based client sessions que tal vez le sea de utilidad a alguien.

La efectividad del Phishing

No me gusta mucho el sistema pero es lo que hay: dándoles algunos datos la empresa Trusteer nos permite leer su informe, Measuring the Effectiveness of In-the-Wild Phishing Attacks donde se dan algunas cifras propias sobre la efectividad de los ataques.

Sobre la autentificación de usuarios

En User Authentication: It Doesn’t Belong In Your Application un articulito sobre el tema de la autentificación de usuarios con algunas pinceladas sobre los temas más importantes que tenemos que considerar y una pequeña panorámica de la oferta de terceros sobre el tema, esencialmente OpenID y SAML.