Seguridad

«Deadlock in the Lockers» por un bug de UX en el mundo físico

Siempre he sido un mal tester. Cuando me han dado a probar los productos, he tenido la suerte, el acierto o la desgracia, de tocar donde nadie esperaba que se hiciera o en el orden que nadie pensó que alguien lo hiciera. Ha sido un don toda mi vida. Me dan algo a probar, y no me funciona. Quizá porque soy más torpe, o porque me gusta probar qué pasaría si….Supongo que por eso acabé buscando bugs en el software, es una habilidad natural innata qué, a veces, me juega malas pasadas.

Figura 1: «Deadlock in the Lockers» por un bug de UX en el mundo físico 

Este «súper poder» me llevó el otro día, cuando tenía lugar el GP F1 en Madrid, a terminar en un Deadlock con los Lockers, por culpa de un fallo de UX en el sistema físico de la apertura y cierre de los mismos. Os lo cuento, por si algún día es vuestra primera vez, para que no caigáis en el mismo problema que forcé yo a la primera. Para no alargar la historía, os diré que tenía entradas para la F1 de Madrid y la carrera comenzaba a las 15:00. Yo aterrizaba en Madrid viniendo de México a las 13:15, y tenía el tiempo justo para ir hasta  un Hotel de Valdebebas y dejar mi equipaje en los Lockers para luego correr hacia la entrada del circuito y ver la carrera. Todo planificado.

Figura 2: Los Lockers

Cuando llegué a la recepción del hotel pregunté por los lockers, y una chica muy amable me dijo que estaban abajo, en el parking, pero que con la carrera no sabía si quedaría ninguno libre. Esto metió nerviosismo en mi plan, y baje un poco acelerado para ver si tenía uno disponible. No había utilizado nunca el sistema, y mi preocupación era si aceptarían tarjeta de crédito, que venía pelado, pero ahora tenía que encontrar alguno vacío para poder utilizarlo. Nervios++
Cuando llegué, me topé con todos los lockers cerrado, y mi nerviosismo empezó a crecer, pero de repente, mi ojo captó una puerta abierta de un locker, y me sentí aliviado. Corrí hacia ese locker, y puse mis cosas dentro. Me quedé con el número de la taquilla, lo cerré, y me fui hacia la pantalla para pagar el alquiler de ese locker y asegurarme que se quedaba cerrado.
Suena bien, ¿verdad?
Lo cierto es que cuando llegué a la pantalla del pago, me encontré con un menú con dos opciones. Una para alquilar un locker, y la otra para abrir un locker. Tiene sentido, pensé. Vamos a alquilar un locker, y cuando le di a esa opción, me esperaba un interfaz para poner el número de mi taquilla, pero lo que me encontré fue una lista de números de taquillas, entre las que no estaba el mío…. What? 
Seleccioné un número de los disponibles y pagué, viendo cómo se abría automáticamente el locker con ese número. Aquí iría una onomatopeya de cerebro pensando sobre qué ha pasado, pero lo cierto es que pensé: «Bueno, si la otra no la puedo cerrar, cambio las cosas y listo«. Así que me fui a la taquilla donde había metido mis cosas para abrirla, pero… oh, oh… estaba cerrada y no se abría. Deadlock total.
¿Cómo era esto posible?
El tiempo corría en mi contra, así que me fui corriendo a la recepción subiendo los escalones en tiempo de record de vuelta del circuito, y le conté a la chica lo que me había pasado recortando los espacios entre las palabras. Ella me miró con cara de no entiendo nada y dijo… «¿Es un problema con los lockers?» 
«Sí, sí, sí, sí..» respondí, al tiempo que agitaba mi cabeza en vertical a 200 rpms. Y ella dijo que para los lockers, al responsable de los lockers, que precisamente venía por el hall del hotel. Gracias, gracias, gracias. Así que le asalté, y mejorando mi tiempo anterior, le conté otra vez toda la historia. Y me miró con cara de «… What?» 
Le expliqué que sí, que había un locker abierto, que yo pensé que primero elegías taquilla, luego la pagabas, y se cerraba, pero que no, que luego vi que el sistema es distinto, que primero pagas, eliges taquilla, ésta se abre, pones las cosas dentro y luego se cierra, pero que tus cosas estaban en una taquilla abierta, que alguien había pagado para cerrar, pero que se había ido y la había dejado abierto y… el resto ya os o he contado.
La persona no entendía nada, pero uso su clave de administrador de los Lockers (Modo God Locker) y me preguntó antes de abrir la taquilla por todas mis cosas, que yo le describí minuciosamente: «Un libro de Isaac Asimov, tres calzoncillos usados, una mochila de Cloudflare, unos dulces mexicanos, ….y cosas».  En el momento de comprobar que era mi equipaje, a pesar de saber que lo acababa de poner allí, estaba nervioso pensando… ¿Te imaginas que ahora hay otra cosa y es una broma de cámara oculta?

Por suerte… (ya ves tú qué suerte) estaban mis cosas, y pude cambiarlas y cerrar la taquilla para irme a la carrera. Llegué, como podéis ver en el vídeo. Pero me pasé toda la carrera sin entender qué había pasado, así que cuando volví a recoger mis pertenencias vine con el modo Debug ON.
Al llegar, para abrir la taquilla, había dos opciones: «Abrir una vez» o «Abrir y terminar el alquiler«. Pensé… «¿Qué opción de estas ha llevado al Deadlock en el que me quedé?» Pues parece a priori  que ninguna, o que podían ser las dos. En cualquiera de los dos casos el problema parecía el mismo. Si el usuario que termina el alquiler y se va, deja la taquilla abierta, no hay un mecanismo de cierre automático retardado para evitar que alguien, por error, o por no conocer el proceso como era mi caso, ponga sus cosas dentro. Si alguien pone algo dentro y se cierra, se acabó, ¿o no?

Figura 4: Mientras pensaba en eso, me perdí y acabé
a pie de pista sacándole una foto a mi colega Max.
Pues no, en este caso, la solución al misterio del problema era «Abrir una vez» sin terminar la sesión. Si hubiera elegido al opción de «Abrir y terminar el alquiler» cuando yo fui a pagar, esa taquilla aparecería como disponible, pero no estaba, así que la persona abrió la taquilla sin terminar la sesión y me dejo en un Deadlock. Es decir:
  • Un usuario alquila una taquilla por 8 horas y le pone el código 2345
  • El usuario vuelve a la hora para irse, pero abre la taquilla sin cerrar el alquiler.
  • Deja la taquilla abierta.
  • Un nuevo usuario que no conoce el sistema pone sus cosas dentro pensando que está disponible.
  • Cierra la taquilla
  • La taquilla sigue alquilada aún por 7 horas y no está disponible.
  • El nuevo usuario se ha quedado sin sus cosas.
La solución, además de poner el cierre retardado automático – caro -, sería poner información contextual directamente en la taquilla: «Antes de poner sus cosas dentro asegúrese de haber pagado» o «No ponga cosas dentro de la taquilla si no la ha abierto con el panel de control» … o cualquier otro mensaje para el usuario que no ha visto aún el proceso de pago.

Figura 5: Con la ayuda de Megatorpe

El bug es pequeño, pero como podéis ver, existe, y me acordé de los libros de ANAYA de Informática para Torpes, donde MegaTorpe hacía todo lo que nadie esperaba que hiciera. Sí, yo fui MegaTorpe, pero el issue existe, y alguien tendrá que pensar cómo subsanarlo, o delegar ese caso de uso «Corner Case» en el Modo God del Locker Admin.
¡Saludos Malignos!
Autor: Chema Alonso (Contactar con Chema Alonso)  

Powered by WPeMatico

Gustavo Genez

Informático de corazón y apasionado por la tecnología. La misión de este blog es llegar a los usuarios y profesionales con información y trucos acerca de la Seguridad Informática.