Se cierra una grave vulnerabilidad en Android casi 6 meses después

Uno de los errores más curiosos y amenazantes en los smartphones Android y los problemas que su cierre conllevó.

El verano pasado, David Schütz, experto en ciberseguridad, volvía a casa tras 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 enchufó el teléfono al cargador y lo encendió, pero no pudo seguir con su conversación, debía introducir el código PIN, el cual introdujo mal hasta tres veces por el cansancio del viaje. Cuando esto pasa, 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.

Tras reiniciar el teléfono, no se suele pedir la huella, lo normal sueles ser el código de desbloqueo. Fuente.

Cualquier otro hubiera achacado estos acontecimientos a un simple error de software, reiniciado su teléfono y seguido con su vida. Pero David, un investigador con buen olfato para el comportamiento extraño en software y dispositivos, decidió llegar al fondo del asunto y descubrir por qué su teléfono ya no le pedía el código de desbloqueo después de reiniciar. David se dio cuenta, tras varios intentos sin éxito,  de que ni siquiera era necesario reiniciar el teléfono. Por ejemplo, si tomas 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 la pantalla que te pide el código de desbloqueo no aparece. Schütz compartió este descubrimiento con lujo de detalle en su blog, pero no creas que Google lo arregló de inmediato. Este enorme agujero de seguridad ha amenazado 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 eludir la pantalla de bloqueo y acceder a todos los datos del teléfono sin necesidad de saber el código secreto. No hace falta ningún mecanismo de ataque sofisticado, ni conectar al smartphone algún dispositivo externo o buscar nuevas vulnerabilidades en el software. Solo debes 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 el acceso al teléfono está listo. La única condición es que el teléfono esté encendido y que su propietario lo haya desbloqueado antes al menos una vez.

Esta vulnerabilidad se encuentra en la parte de distribución gratuita de Android, donde quien sea puede ver el código fuente. Esto nos permitió descubrir cómo pudo aparecer un error tan simple. La verdad es que los smartphones Android tienen distintas 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 pasas exitosamente una de las verificaciones, activas la siguiente pantalla de bloqueo, no importa cuál. Este sistema parecía funcionar correctamente, excepto por la pantalla de bloqueo del código PUK. Al introducir el código PUK, la función “descartar pantalla de bloqueo” aparece dos veces. Este problema se resolvió con una serie de modificaciones bastante importantes del código de Android, que resultaron en que todas las pantallas de bloqueo se controlaran de manera independiente.

Burocracia vs. seguridad

Pero ¿cómo es que tardaron casi seis meses en eliminar una vulnerabilidad tan grave? Schütz envió una descripción de la vulnerabilidad al servicio bug bounty de Google y, según las normas de dicho 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 100,000 dólares. Sin embargo, David no recibió el dinero, ni 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 tan 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 siguientes paquetes de parches, pero no pasó. Cuando instaló la actualización de septiembre, su teléfono todavía permitía 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. La vulnerabilidad, por fin, se parcheó con el paquete de actualizaciones de noviembre.

Por tanto, Google no cerró la vulnerabilidad hasta el encuentro 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 70,000 dólares por sus esfuerzos.

El precio de la seguridad

Como usuarios de smartphone, lo mínimo que esperamos es que los desarrolladores den prioridad a los errores graves y los solucionen cuanto antes. Pero esta historia sobre la pantalla de bloqueo que no aparece en los smartphones Android demuestra que no siempre pasa así. En este caso, todo ha salido bien: por fortuna, un investigador de sombrero blanco descubrió la vulnerabilidad y no la vendió en la darknet, donde podrían haberla usado con fines maliciosos; en su lugar, el experto avisó a la compañía. Todo lo que tenía que hacer Google era cerrar esta vulnerabilidad cuanto antes, pero ahí es donde el problema comenzó. Por tanto, surge una pregunta para las organizaciones que colaboran con expertos de seguridad externos mediante programas de recompensas: ¿se asignan suficientes recursos en interno para corregir los errores a tiempo?

Consejos