El pasado verano, el experto de ciberseguridad David Schütz volvía a casa después de un largo día de carretera con su smartphone Google Pixel 6 casi descargado, cuando por fin llegó le quedaba un 1 % de batería, por lo que se apagó en mitad de un mensaje. Schütz conectó el teléfono al cargador y lo encendió, pero no pudo seguir con su conversación, tenía que introducir el código PIN que, agotado por el viaje, introdujo mal hasta tres veces. Cuando esto sucede, necesitas el código secreto: el PUK. Después, David tuvo que desbloquear el teléfono con su huella, pero, tras reconocerla, se quedó congelado.
Cualquier otro hubiera achacado estos acontecimientos a un simple fallo de software y habría reiniciado el teléfono de nuevo y seguido con su vida. Pero David, un investigador con un buen olfato para el comportamiento extraño en software y dispositivos, decidió llegar al fondo de la cuestión y descubrir por qué su teléfono ya no solicitaba el código de desbloqueo después de reiniciar.
Tras varios intentos sin éxito, David se dio cuenta de que ni siquiera hacía falta reiniciar el teléfono. Por ejemplo, si coges un smartphone bloqueado, retiras la tarjeta SIM, vuelves a ponerla, introduces el código PIN tres veces y después el código PUK, verás que no aparece la pantalla que solicita tu código de desbloqueo.
Schütz compartió este descubrimiento con todo detalle en su blog, pero no pienses que Google lo solucionó de inmediato. Este enorme agujero de seguridad ha estado amenazando a un gran número de smartphones con Android (versiones de la 11 a la 13) durante casi medio año, ¡desde junio a noviembre!
Demostración práctica de cómo evitar la pantalla de bloqueo con la tarjeta SIM:
¿Cómo?
En resumen, la vulnerabilidad permite evitar la pantalla de bloqueo y el acceso a todos los datos del teléfono sin necesidad de conocer el código secreto. No hace falta ningún mecanismo de ataque sofisticado, ni conectar ningún dispositivo externo al smartphone o buscar nuevas vulnerabilidades en el software.
Solo tienes que sacar y volver a meter la tarjeta SIM (el atacante puede usar la suya propia), introducir el código PIN tres veces, después el PUK, cambiar el PIN y ya tienes acceso al teléfono. La única condición es que el teléfono esté encendido y que lo haya desbloqueado previamente su propietario al menos una vez.
Esta vulnerabilidad se encuentra en la parte de distribución gratuita de Android, donde cualquiera puede ver el código fuente. Esto nos permite descubrir cómo pudo aparecer un error tan simple. Lo cierto es que los smartphones Android presentan varias pantallas de bloqueo: la pantalla para introducir el código secreto, la solicitud para escanear tu huella y la ventana para el código PIN de la SIM.
Cuando consigues pasar con éxito una de las verificaciones, activas la siguiente pantalla de bloqueo, sin importar cuál. Este sistema parecía funcionar correctamente, excepto por la pantalla de bloqueo del código PUK. Cuando se introducía el código PUK, la función “descartar pantalla de bloqueo” aparecía dos veces. Este problema se resolvió con una serie de modificaciones bastante importantes del código de Android, que dieron como resultado que cada pantalla de bloqueo se controlara de forma independiente.
Burocracia vs. seguridad
Pero ¿cómo pudieron tardar casi seis meses en eliminar esta vulnerabilidad tan grave? Schütz envió una descripción de la vulnerabilidad al servicio bug bounty de Google y, de acuerdo con las normas de este programa, el descubrimiento de una vulnerabilidad que permite esquivar la pantalla de bloqueo en múltiples (o incluso todos los) dispositivos podría suponer una recompensa de unos 100000 dólares. Pero David no recibió el dinero, tampoco una respuesta, al menos hasta varias semanas cuando rechazaron su informe por considerar que estaba duplicado: otra persona ya había informado a Google sobre esta vulnerabilidad.
David se resignó a perder la jugosa indemnización. Mientras, llegó septiembre (3 meses después de su informe) y estaba convencido de que la vulnerabilidad se solucionaría en los próximos paquetes de parches, pero no pasó. Con la actualización de septiembre instalada, su teléfono seguía permitiendo esquivar la pantalla de bloqueo con el truco de la tarjeta SIM. Pero casualmente, ese mismo mes había un evento de Google para investigadores de seguridad, por lo que David aprovechó la oportunidad para compartir el error con los desarrolladores de la compañía. Por fin, la vulnerabilidad se parcheó con el paquete de actualizaciones de noviembre.
Por tanto, Google no cerró la vulnerabilidad hasta el cara a cara con sus desarrolladores; no reaccionó ni al informe previo, si existió, ni al mensaje de David en junio del 2022. Al final, Schütz recibió un pago de 70000 dólares por sus esfuerzos.
El precio de la seguridad
Como usuarios de smartphones, esperamos como mínimo que los desarrolladores den prioridad a los errores graves y las solucionen de inmediato. Pero esta historia sobre la pantalla de bloqueo que no aparece en los smartphones Android ha demostrado que esto no siempre es así.
En este caso, todo ha ido bien: afortunadamente, ha sido un investigador de sombrero blanco el que ha descubierto la vulnerabilidad y no la ha vendido en la darknet, donde podrían haberla usado con fines maliciosos; en su lugar, el experto ha informado a la compañía. Todo lo que tenía que hacer Google era cerrar esta vulnerabilidad pronto, pero ahí es donde comenzó el problema. Surge por tanto una pregunta con las organizaciones que colaboran con expertos de seguridad externos a través de programas de recompensas: ¿se asignan suficientes recursos internamente para corregir los errores a tiempo?