Libreboot en un Thinkpad X60

libreboot_x60Es posible que en los últimos días se haya publicado en diversos sitios web bastante información sobre los problemas de seguridad/privacidad relacionados con el Intel ME, pues esta característica de las CPUs de Intel ofrece la posibilidad de poder acceder al ordenador de forma remota. La intención de Intel al introducir esta característica era la de dar la posibilidad de administrar los equipos de forma remota, como menciono anteriormente, sobre todo aquellos que forman parte de una red corporativa, pues suelen ser muy numerosos. Con una característica como ésta, se facilitaría el acceso a todos esos equipos, a la vez que se agilizaría. Pero esta es la teoría, puesto que la realidad ha puesto de manifiesto que es posible utilizar esta característica en contra de la seguridad/privacidad del usuario, como se ha demostrado en varias pruebas de concepto.

 

EL PROBLEMA:

El hecho de que el Intel ME tenga alguna deficiencia/inconveniente en su aplicación no constituiría por sí mismo un problema, ya que se podría deshabilitar esta característica en la CPU del ordenador y asunto solucionado, ¿no?. ¡Pues no!. Y este es realmente el verdadero problema. Intel ME no puede ser deshabilitado en la CPU de ninguna forma, y además, es una característica presente en todas las CPUs fabricadas desde 2008-2009 en adelante, ¡EN TODAS!.

Y si pensabas cambiarte a AMD, olvídate, pues también está presente, aunque se llama de otra manera (Platform Security Processor). Pero es que, para agravar más el tema, el código fuente del software que controla esta característica es cerrado, de manera que nadie, excepto unos pocos ingenieros en Intel, tienen acceso a él para corregir errores (¡que los tiene!) y parchear las diferentes versiones. En definitiva, un problema enorme de primer orden que no parece tener solución. O quizá sí…

Conscientes de esta situación, varias personas por todo el mundo iniciaron un proyecto orientado a reemplazar el software de control de arranque de los ordenadores. Este proyecto ha evolucionado en el tiempo, tanto que hasta ha cambiado de nombre y actualmente se llama Coreboot. A día de hoy, tiene soporte para más de doscientos modelos de ordenadores (placas base/chipsets). Pero Coreboot no es el único proyecto en marcha. Proyectos como Libreboot, Heads, LinuxBoot y otros más tratan de abarcar más rango del que Coreboot puede abarcar por sí mismo. En el caso concreto de Libreboot (que está basado en Coreboot), el rango de aplicación está focalizado en los sistemas anteriores a 2008-2009, es decir, aquellos que utilizan los chipsets i945 o el GM45.

A diferencia de Coreboot, Libreboot puede deshabilitar por completo el Intel ME, dejando el ordenador libre de los problemas relacionados con la seguridad/privacidad mencionados anteriormente. El motivo por el que puede hacer esto es principalmente porque el Intel ME no está físicamente alojado en el Northbridge del chipset, que a su vez, se encuentra alojado en la misma pastilla de la CPU. En este enlace se encuentra una explicación más detallada del por qué esto es así.

En esta entrada del blog se describe el proceso de flasheado de un potátil IBM Thinkpad X60 con Libreboot. El proceso no salió con éxito al primer intento, por lo que tuve que seguir otros caminos alternativos hasta alcanzar mi objetivo. En esta entrada del blog dejo indicados los pasos que seguí, tanto con los errores como con los aciertos, por si alguien quiere seguirlos/evitarlos.

LA SOLUCION:

El primer intento de grabar el BIOS de mi portátil Thinkpad X60 con Libreboot release 20160907 resultó fallido. El proceso que seguí es el mismo que se describe en la página de instalación de Libreboot vía software. Es el que recomiendo a quien quiera probar, pues la indicaciones de la página de Libreboot son claras y precisas, por lo que no tienen pérdida. Además hay varios tutoriales en Youtube en los que usuarios sin apenas conocimientos, actualizan sus BIOS sin problema alguno. Es el método más limpio y directo, pues no hay que desmontar el ordenador para realizar la actualización. A modo de resumen, cito a continuación los pasos a seguir:

  1. Descargar la última versión de Libreboot desde su página web (el fichero acabado en *_util.tar.gz).
  2. Descargar la ROM correspondiente a tu ordenador (en este caso libreboot_r20160907_grub_x60.tar.xz)
  3. Extraer/descomprimir los contenidos de ambos ficheros en un par de carpetas de tu elección.
  4. Copiar la ROM adecuada a tu configuración de teclado en la carpeta donde está extraido el fichero *_util.tar.gz anterior.
  5. Realizar un primer flasheado con la ROM recién copiada, según se indica en la web de Libreboot.
  6. Reiniciar el sistema y realizar el segundo flasheado para dejar el ordenador completamente actualizado.

No obstante, el proceso no está exento de riesgo, y puede ocurrir que el flasheado no se realice correctamente. Si después del primer flasheado el sistema no arranca, nuestro chip BIOS se ha quedado «pillado» y ha dejado el ordenador bloqueado (bricked). En esta situación no queda más remedio que utilizar el método de actualización mediante hardware. En mi caso usé el miniprogramador CH341a, un dispositivo que se puede encontrar en cualquier tienda web a muy bajo precio. En Ebay se puede encontrar sin problemas por muy poco dinero, yo compré el mío en Amazon muy barato, menos de 9 euros, creo recordar. El aspecto del programador puede variar dependiendo del fabricante que lo comercialice. En este enlace hay información abundante sobre el programador. El proceso con este grabador es muy rápido, ya que en menos de 1 minuto podemos leer o escribir el chip BIOS completamente.

ch341a-up

Fig.1. El programador CH341A usado en el proceso.

Si no puedes conseguir un programador CH341a pero tienes una Raspberry Pi o una BleagleBone, también podrás reflasear el BIOS de tu ordenador. Incluso, he visto documentación en la que se describe el mismo proceso realizado, incluso, con un Arduino Uno, aunque esto no es recomendable debido al excesivo tiempo que lleva la actualización del chip BIOS (en torno a 10 minutos por cada Mb de datos a grabar).

Como software de control para el programador, yo utilicé flashrom en su versión 0.9.9. En sistemas GNU/Linux se encuentra disponible en los repositorios, aunque dependiendo de tu distribución, podría ser una versión algo antigua. Para evitar esto es mejor descargarlo y complilarlo directamente de github.

El siguiente paso es desmontar la placa base del portátil. No voy a entrar en detalles sobre el proceso completo, puesto que hay vídeos en Youtube en los que se muestra muy bien cómo hacerlo. En la página web de Libreboot, también se muestra el proceso con imágenes paso a paso (ver apartado instalación vía hardware). Otra fuente de información es el manual de reparaciones del portátil, dejo el enlace más abajo. De forma resumida, el proceso comprende los siguientes pasos:

  1. Retirar la batería del portátil para evitar cortocircuitos durante su manipulación.
  2. Retira el disco duro. Si quieres, puedes retirar también los módulos de memoria, aunque no es imprescindible.
  3. Retira los tornillos M2.5 de color negro que hay en la base inferior del portátil (son al menos 11, pero se pueden quitar también los 4 que sujetan las bisagras de la pantalla. No quites los dos de la tapa de la memoria, no es necesario, si es que no has retirado los módulos ya).
  4. Retira el teclado, empujándolo hacia la pantalla y levantando por abajo. Cuidado con el cable de bus que tiene conectado, es muy delicado.
  5. Retira el reposamuñecas para dejar la placa al descubierto. Ten cuidado también, pues podría partirse al ser de plástico. Si dudas, no fuerces.
  6. Desconecta los cables de la tarjeta wifi, el del modem, el del conector del disco duro y el de la pantalla. Para éste último tendrás que quitar los tornillos plateados que lo mantienen firmemente a la placa.
  7. Retira el tornillo que está en la rejilla del conector de tarjetas PCMCIA, en la parte inferior izquierda del portátil. Sólo el inferior, el otro sujeta al disipador de la CPU y no es necesario quitarlo.
  8. Retira el tornillo que sujeta la pletina plateada que está por encima del conector de la pantalla. Está justo encima del conector de la pantalla y hacia la derecha. Es el tornillo más largo de todos los que hay que quitar. Con éste, deberías tener 6 tornillos plateados retirados: 2 del conector del disco duro, 2 del conector de la pantalla, 1 de la rejilla de la tarjeta PCMCIA y éste último largo.
  9. Si levantas ligeramente la placa base por abajo y tiras de ella suavemente hacia ti, debería salir sin dificultad.

Con la placa base retirada del portátil, la programación del chip es bastante simple pero no está exenta de riesgo. El peligro más importante es la colocación de los cables de alimentación del chip de forma errónea. Para evitar esto, la mejor opción es descargar la hoja de características (datasheet) del chip flash que usa el Thinkpad X60. En este caso, se trata del SST25VF016B, en la imagen siguiente se indican las conexiones de los pines del chip y sus correspondientes en el programador (sólo en caso de que no se haya desoldado el chip de la placa).

datasheet_updated

Fig.2. Conexiones de los pines del chip flash SST25VF016B respecto del programador.

Insisto, de nuevo, en que el punto principal de atención se debe poner en los pines de alimentación del chip, concretamente en sumministrar el voltaje de 3,3v con la polaridad adecuada. De no ser así, se podría dañar de forma irreversible el chip, con la consecuente pérdida del firmware (BIOS original) que se había cargado en la fábrica.

El hecho de insistir tanto en las conexiones del chip viene dado por el incidente que tuve durante el proceso de programación. Y es que, a pesar, de tener el esquema de conexiones delante, accidentalmente conecté la alimentación del revés, es decir con la polaridad cambiada. Sobra decir que el chip de memoria quedó frito inmediatamente (D’oh!!!).

Pero no estaba todo perdido. Ya que el chip flash alberga el BIOS del ordenador y el Intel ME, y puesto que esos dos firmwares iban a ser reemplazados por el firmware Libreboot, se me ocurrió que simplemente comprando un chip nuevo y programańdolo con Libreboot, el problema estaría resuelto. ¡¡Bingo!!.

Después de recibir los dos chips que compré (3 euros cada uno) en Ebay a un distribuidor local (ver enlace más abajo), pude finalmente programar la memoria con Libreboot. Por supuesto tuve que desoldar el chip dañado de la placa base de mi portátil, programar uno de los chips recibidos (el otro lo pedí por si acaso…), y volver a soldar el chip recién grabado en la placa. Esto es un proceso que no tiene mayor problema si ya tienes algo de experiencia con el soldador, como es mi caso. Si eres novato, sería mejor que antes eches un vistazo en Youtube sobre cómo desoldar y soldar componentes SMD en placas PCB. No te dejes intimidar por lo que pueda suponer, al final puede ser más fácil de lo que piensas. En las imágenes que siguen, muestro los chips que recibí por Ebay y el proceso de programación.

failed-chip

Fig.3. El chip original en la placa base listo para desoldar.

unsoldered-chip

Fig.4. El chip flash recién desoldado mediante el método Chip Quik.

recieved-chips

Fig.5. El chip de reserva en su encapsulado de fábrica.

programed-chip

Fig.6. El nuevo chip sobre el programador CH341A.

Antes de actualizar con Libreboot tu chip, no olvides nunca hacer una copia de seguridad del mismo para poder restaurarlo en caso de problemas. Yo no tuve oportunidad, pues no realicé la copia en su momento cuando intenté el proceso por la vía software, pero al final tuve suerte. Podría no ser tu caso. Así que, haz copia de seguridad SIEMPRE. Si la quieres hacer por vía hardware, la orden para darle al programador debería ser parecida a la que aparece a continuación:

$ sudo ./flashrom -p ch341a_spi -r factory-backup1.rom

De esta forma, flashrom leerá el contenido del chip (-r) mediante el dispositivo programador (-p) CH341a (el que yo usé), y lo guardará en el fichero factory-backup1.rom. Saca al menos, otro par de copias del contenido de fábrica del chip, para asegurarte de que no vas a perder la opotunidad de restaurarlo cuando quieras. Necesitarás privilegios para llevar acabo la programación, por lo que tendrás que ser root si trabajas desde una distribución GNU/Linux. Y otra cosa más, comprueba que las copias de los ficheros que acabas de obtener son válidas. Para ello tendrás que teclear en la consola una orden como esta:

$ sudo sha512sum factory-backup*.rom

Con esto, la sumas de comprobación que se mostrarán a continuación, deberían ser iguales. Esto nos asegura que las copias que hayas hecho de tu BIOS han salido todas idénticas, lo que nos indicaría que no ha habido problemas durante la lectura del chip.

Durante la programación del chip no se produjeron incidentes destacables. No obstante, dejo una imagen adjunta con el resultado del comando que utilicé para realizar la programación del chip. Si quieres que el resultado mostrado en pantalla tenga más información, puedes utilizar la opción -V (verbose).

libreboot-thinkpad-x60

Fig.7. Salida de flashrom después de la programación del chip flash.

Con el chip programado y soldado de nuevo a la placa, lo que queda es volver a ensamblar el portátil. Comienza por recolocar la placa base en su sitio, de forma que ajuste perfectamente en su posición original. Conecta el bus de la pantalla y los tornillos plateados en sus lugares correspondientes. Ten cuidado cuando coloques el conector del disco duro, si entra forzado podrías partirlo.

new-chip

Fig.8. El nuevo chip programado y colocado en la placa base.

Con todos los tornillos plateados en sus sitios correspondientes, recoloca y reconecta los cables que hayas tenido que soltar para sacar la placa y pon el reposa-muñecas en su lugar. Debe sonar un pequeño clac cuando lo aprietes para que ajuste bien, pero como siempre se recomienda en estos casos, no fuerces las piezas o acabarán cediendo. Después se pone el teclado, conectando el bus de datos primero.

Finaliza el re-ensamblado poniendo los tornillos negros, el disco duro y la batería en su sitio. ¡¡Y listo!! Si enciendes el ordenador a continuación, se debería ver arrancar el sistema de forma similar a como se muestra en el pequeño vídeo que he dejado en Youtube.

 

Saludos.

Enlaces Externos:

Logo Libreboot usado en la cabecera

Hardware soportado en Libreboot (inglés)

Instalar Libreboot vía software (inglés)

Instalar Libreboot vía hardware (inglés)

Chip BIOS de repuesto

Técnicas de desoldado de componentes electrónicos

Información sobre el programador CH341A (inglés)

Manual de reparaciones del Thinkpad X60, X60s, X61 y X61s

Hoja de características del chip flash SST25VF016B

IBM Thinkpad X60 arrancando con Libreboot

Qué es Intel ME y porqué es potencialmente peligroso (inglés)

 

Deja un comentario