viernes, 30 de octubre de 2009

El Kindle Internacional ya ha sido hackeado

No es el primero que se ha dado cuenta de que no ha podido instalar los parches habituales en la versión internacional del K. Básicamente han dejado de funcionar todos, como suele ocurrir en estos temas.

Pero como dice mi madre, puesta la ley, puesta la trampa, y un par de hackers de los buenos le han metido mano de la forma más curiosa del mundo.

Es posible, mediante comandos, copiar el registro del log al disco USB. Tan sólo hay que picar ";debugOn" y luego ";dumpMessages". El truco es viejo y viene estando disponible desde la primera versión del Kindle.

Después hay que mirar dicho registro, y ver que la actualización está fallando por un tema de verificación de firmas:

091024:105149 EXT3 FS on mmcblk0p1, internal journal

091024:105150 system: I _otaupexec:def:processing update /mnt/us/update_test-k2i.bin

091024:105150 system: I _otaupexec:def:version is "FC02"

091024:105150 system: I _otaupexec:def:update image checksum OK

091024:105150 system: E _otaupexec:def:signature does not exist for "install.sh"

091024:105150 system: E _otaupexec:def:signature verification failed

Ahora nos falta ver qué firmas son esas, por lo que hay que ser creativos. ¿Cómo? Pues aprovechando una "feature" del programa de compresión que se utiliza. Personalmente lo considero un fallo de seguridad, pero parece ser que no es así como está catalogado.

¿Y qué tal si en lugar de mirar sólo las firmas no sacamos una copia de todo lo que hay dentro del Kindle? Pues eso es lo que vamos a hacer. Vamos a aprovechar dicha feature para hacer una imagen completa de tu Kindle en la unidad externa.

No me preguntéis cómo porque mis conocimientos de Linux no llegan a esos niveles, pero podéis verlo explicado -scripts incluídos- aquí: http://www.mobileread.com/forums/showthread.php?t=60627.

Más o menos el tema está en aprovechar la descompresión para inyectar un script malo maloso que hará un volcado de disco mediante el comando dd. Para que luego digan que Linux es seguro, si el hecho de descomprimir algo tiene el riesgo de que alguien ejecute código.

Una vez que uno tiene todo el contenido de su Kindle, es cuestión de analizar cómo funcionan las actualizaciones. Una bicoca, vamos. Cosa de un par de ratos. Léase con tono irónico.

Pues bien, el amigo Jean-Yves Avenard lo ha hecho, y ha visto que ahora las actualizaciones vienen firmadas con una clave criptográfica almacenada en la ROM del Kindle. No nos dice si es la misma clave para todos o única por cada aparato, pero apenas importa, porque lo que ha hecho ha sido añadir una nueva clave a la lista interna de las mismas de modo que, cuando se inicie la actualización de un paquete no oficial, éste venga firmado con ella.

Original un carro.

Ahora cómo proceder

Lo primero que hay que hacer es instalar, de alguna manera, la nueva clave. Esto se hace con el paquete update_freekindle.bin, pero no hay que seguir los pasos habituales, porque si lo hacemos, enladrillaremos nuestro Kindle y tendremos que aplicar la técnica descrita aquí.

Nos vamos a HOME (la biblioteca), Menu -> Settings. Luego Menu -> Update your Kindle, pero no elegimos "Restart" ya que si lo hacemos nuestro K se quedará reiniciándose eternamente. De todos modos lo podemos sacar de ese estado siguiendo los pasos descritos aquí.

Aprovechando, de nuevo, la feature, hemos insertado nuestra nueva clave.

Este paso sólo hay que hacerlo una vez, después ya podremos instalar los demás hacks convenientemente empaquetados y firmados para el Kindle Internacional. Evidentemente, los de versiones anteriores no valen.

Aquí se explica cómo crear paquetes para el iK. Aquí tenemos el del salvapantallas. Y finalmente aquí, el origen de todo el tema.

El autor irá añadiendo en la siguiente URL los paquetes que vaya actualizando: http://www.avenard.org/kindle2/, aunque supongo que pronto irán proliferando por más sitios.