Desde que en 2007 Amazon lanzara el Kindle, su pequeño eBook ha ido pasando, año tras año, a monopolizar el mercado de los libros electrónicos. En 2011, el 73% de los dispositivos que se vendían eran de la marca de Jeff Bezos. No es de extrañar entonces que Amazon vendiera 20 millones de unidades en 2013 y ganase cuatro millones de dólares en aquel ejercicio. Desde su zona de venta oficial, diariamente se descargan algo más de un millón de libros electrónicos de pago (solo en EEUU), que generan un beneficio para la empresa de Bezos que ronda los 140 millones de dólares.
Los eBook vinieron a sustituir al libro tradicional, pero todavía no lo han conseguido. Aunque entre 2008 y 2010 las ventas se dispararon en un 1.260%, el año pasado, el mercado español creció un 10%, cifra que dista mucho de ese mismo valor en EEUU, que ronda el 30%.
Los datos son tan solo una aproximación a la magnitud del descubrimiento que ha hecho Craig Arendt, un cazabugs que se ha topado con una vulnerabilidad que afecta a todos los lectores de libros electrónicos que leen formato epub, que por cierto es código abierto. Arendt ha publicado en qué consiste y cómo llegó a la falla de seguridad en el blog Signal Chaos.
Cuando en 2010 Steve Jobs presentó el primer iPad, alabó las bondades del formato epub diciendo que era “el más abierto y popular del mundo”. Siete años después Arendt ha descubierto en EpubCheck, Adobe Digital Editions, Amazon KDP, Apple Transporter, Google Play Books y otras plataformas de conversión una vulnerabilidad que permite ejecutar un ataque XXE (XML External Entity) sobre una aplicación que utilice lenguaje XML, como las mencionadas.
Vulnerable uno, vulnerable todos
Primero: un libro electrónico está compuesto por varios archivos de otros formatos (CSS, XML, XHTML, contenido web, etc.) que, al compilarse, resultan en un archivo epub. El IDPF (International Digital Publishing Forum - El Foro Internacional de Publicaciones Digitales) es quien da soporte y vela por que el estándar de la industria de libros electrónicos utilice este tipo de archivos para distribuir las publicaciones.
“Cuando empecé a mirarlo por primera vez, supe acerca de una herramienta/librería en Java llamada EpubCheck (que provee la IDPF) y que se usa para validar los libros en formato ePub”, escribe el experto en seguridad. Según Arendt, todos los softwares que ha analizado son vulnerables a un ataque XXE, que en última instancia permite al atacante acceder a archivos protegidos y desprotegerlos accediendo a través de Internet.
La cuestión no acaba ahí: si en el exploit ese atacante introduce alguna línea de código destinada a robar nuestros datos, como el email, nuestro nombre o la dirección que tengamos guardada en el libro electrónico, podrá hacerse con ellos. También podría entrar a través del wifi al que esté conectado el dispositivo. De igual forma, la vulnerabilidad podría ser utilizada en webs que admiten la subida de archivos en formato epub e infectarla así.
La mayoría de estos programas son utilizados por los editores y la gente que publica sus libros electrónicos para comprobar que, tras compilar el libro a ePub, verdaderamente han conseguido ese archivo y que su uso se adapta a los estándares del IDPF.
EpubCheck “era vulnerable a un XXE, así que cualquier aplicación que confíe en una versión vulnerable para comprobar la validez de un libro será susceptible a este tipo de ataque”, confirma Arendt.
Google, Adobe y Apple también
El software de la IDPF no ha sido el único afectado. Arendt tiró del hilo y descubrió que Amazon KDP, una herramienta que permite a los usuarios subir sus propios libros, tenía una falla de seguridad parecida al convertirlos para su posterior lectura en Kindle.
En Adobe Digital Editions y Apple Transporter, más de lo mismo: “Cuando un usuario abre un libro, esto podría ocasionar que los archivos sean robados de su sistema”, continúa el experto en seguridad.
Google Play Books es la única herramienta inmune al ataque XXE, “pero es vulnerable a un ataque billion laughs [miles de millones de risas]”. Es un DDoS (ataque de denegación de servicio) cuyo objetivo son las estructuras que convierten la gramática común a lenguaje de programación de los archivos XML.