Un fallo en la base de datos SQLite afecta a millones de apps y a los sistemas de Apple

Un fallo en la base de datos SQLite afecta a millones de apps y a los sistemas de Apple

SQLite, la base de datos más utilizada en apps tanto de movilidad como de escritorio, ha sido comprometida a nivel de seguridad. Según informaron el pasado viernes en TheHackerNews, un fallo encontrado en el motor de la misma requerirá la actualización de millones de apps en el App Store, Google Play, apps de escritorio e incluso supondrá el lanzamiento de una nueva versión de todos los sistemas de Apple y el resto de compañías.

El fallo, conocido como Magellan, es un problema en el software que permitiría a un atacante ejecutar código arbitrario (código no firmado que no tiene que ver con la app que se ejecuta) y malicioso, así como acceder a la memoria de la app o hacer que esta se cierre inesperadamente.

El fallo ha sido descubierto por la compañía china Tencent, a través de su equipo de seguridad llamado Blade

Es un fallo bastante importante, que ya ha sido arreglado y donde el grupo que ha localizado el mismo, no ha querido hacer públicos los detalles para evitar que nadie explote este. Solo ha informado a los responsables de SQLite para que solucionen el problema y ya lo han solventado, momento en que lo han hecho público. E incluso se han lanzado algunas actualizaciones derivadas de ese cambio, como la última de Google Chrome para todos los sistemas, donde su motor Chromium se ha visto afectado por usar SQLite para su uso interno.

De hecho en Chrome, permite ser explotado de forma remota pues usa una librería llamada Web SQL API, que usa esta base de datos para la gestión de las propias webs. Y esto permitiría que con un simple acceso a una página web inocua, pudieran explotar este fallo y acceder a nuestros equipos a través de Chrome (en Mac o cualquier otro sistema que use este navegador). Incluso afecta a algunos dispositivos como Google Home.

 ¿Qué es SQLite y cómo afecta a Apple?

Una base de datos es una estructura que permite almacenar datos en base a estructuras conocidas como tablas o entidades. Creamos estas con campos y podemos crear registros (o filas) que almacenen los datos, donde podemos recuperarlos más adelante consultando. Es la base de la gran mayoría de apps, sistemas, entornos... en el caso de SQLite hablamos de una implementación muy ligera en carga de proceso para el sistema y que está basada en un simple archivo. Una implementación que frente a otras soluciones como MySQL, no necesita un proceso de servidor que conecte a los ficheros de base de datos.

Diagrama de las diferencias entre MySQL y SQLite Diagrama de las diferencias entre MySQL y SQLite

Para que nos hagamos una idea, SQLite es ampliamente usado en iOS o macOS (como, por ejemplo, la cartera de certificados y claves), en muchas apps (como Whatsapp, Dropbox, Firefox, Chrome y muchas más que usamos en el día a día) y como librería en el famoso Core Data que usa también SQLite por defecto. Esto hace que afecte de forma indirecta incluso a apps del sistema como Notas, por citar solo un pequeño ejemplo.

SQLite es una implementación de base de datos muy ligera para cualquier sistema, basada en un fichero, y que es ampliamente usada por casi cada sistema o app. Millones de apps en el App Store la usan, así como los propios sistemas iOS, macOS, watchOS y tvOS, tanto el propio sistema en algunos componentes como algunas de las apps nativas

Al ser una implementación que solo requiere la librería y un fichero de la propia base de datos, cualquier sistema operativo de escritorio o móvil usa SQLite pues es bastante competente y ligera. Apple incluye el controlador de esta librería por defecto en su librería de desarrollo para crear apps para todos sus sistemas, tanto móviles como de escritorio.

Así que estamos hablando de un fallo que afecta la implementación de probablemente, no solo todos los sistemas operativos en mayor o menor medida, también de millones de apps en el App Store, Google Play o incluso de descarga directa para nuestros escritorios.

¿Qué pasará ahora?

Todos los sistemas o apps tienen que actualizarse, porque cualquiera que use SQLite con una versión de motor anterior a la 3.26.0 es susceptible de permitir esta explotación que pondría en peligro nuestros sistemas y apps (y los datos que hay en ella). El pasado 1 de diciembre ya se lanzó esta actualización que soluciona el fallo y de hecho, la pasada semana, Google lanzó Chrome 71 que soluciona este problema en su motor Chromium.

Magellan

Pero el fallo supone que no solo Apple debe actualizar sus herramientas de desarrollo para que usen la nueva versión de la librería, también ha de crear una nueva versión de todos sus sistemas y las apps nativas que usen SQLite, y publicarla como actualización de seguridad en la próxima versión que se publique al público. Así mismo, todas las apps de terceros que lo usen deberán igualmente actualizarse, también los motores de desarrollos e IDEs como Xcode.

En el caso que tengamos una app nativa para Apple y usemos SQLite (o Core Data), nuestra app estará afectada y tendremos que esperar a que Apple saque una nueva versión de Xcode con la librería actualizada. Una vez suceda esto, solo tendremos que generar una nueva versión de nuestro mismo código que ya esté en el App Store o distribuido por otro canal si no es iOS. Bastará volver a compilar para que se actualice la librería: a nivel de código no hay que hacer nada.

Apple incluirá una actualización de esta librería en próximas versiones de sus sistemas y apps, y los desarrolladores que usen SQLite solo necesitarán re-generar sus apps con la nueva versión y subirlo al App Store o al medio de distribución que usen

Aquí el problema son los miles, cientos de miles y puede que incluso millones de apps que jamás se actualizarán porque están en obsolescencia o abandonadas, o porque cambiarles la versión podría suponerles demasiado trabajo y tarden mucho o prefieran no actualizar. Es responsabilidad de los desarrolladores hacer este trabajo y comprometerse con la seguridad de sus usuarios.

Agujeros de seguridad, el gran peligro

Un agujero de seguridad es un gran peligro para cualquier app o sistema. Es un fallo en el software provocado por una mala implementación que permite, sabiendo cómo, explotar un fallo y conseguir cosas en un sistema que no deberían hacerse. Por ejemplo ejecutar un código malicioso u obtener acceso a la memoria de una app.

Un fallo así no es un virus ni un troyano ni nada parecido. Y no hay ni un sólo sistema, app o dispositivo que se libre de ellos. Afectan a todos por igual y en el buen trabajo de cada compañía responsable de cada componente está nuestra seguridad. Lo único que podemos hacer contra ellos es que cuando se publiquen actualizaciones que arreglen estos problemas, instalarlos lo antes posible. De hecho, las actualizaciones son más importantes por los fallos de seguridad que arreglan que porque nos ofrezcan tal o cual funcionalidad nueva.

Lo verdaderamente importante de una actualización de un sistema no son sus nuevas funcionalidades: es la solución de las decenas o cientos de fallos de seguridad que puede cubrir en cada nueva actualización

Así que nunca dejéis de actualizar una app o un sistema, pues es esencial para corregir estos problemas que, como digo, nadie puede prevenirnos de ellos y afectan a todo. Otro día, si os interesa, hablaremos sobre la base de estos errores y por qué nadie se libra de ellos.

También te recomendamos

La Térmica, Cervezas Alhambra y Boa Mistura, unidos por las celosías de una espectacular pieza

La edición de video en iOS es posible: equipo y primeros pasos

Apple apoya la Semana de la Programación en Europa con sesiones gratuitas en sus tiendas Apple Store

-
La noticia Un fallo en la base de datos SQLite afecta a millones de apps y a los sistemas de Apple fue publicada originalmente en Applesfera por Julio César Fernández .




Fuente: Applesfera
Enlace: Un fallo en la base de datos SQLite afecta a millones de apps y a los sistemas de Apple

Comentarios