Bases de datos SQLite maliciosas utilizadas para comprometer aplicaciones

Las bases de datos, que están diseñadas para facilitar el almacenamiento y el acceso a los datos, utilizan una estructura establecida para el almacenamiento de datos, y el lenguaje de consulta estructurado (SQL) permite al usuario consultar la base de datos y extraer información de ella.

Y SQL es un lenguaje muy poderoso. De hecho, es Turing completo, lo que significa que cualquier programa informático podría implementarse potencialmente en SQL. Sin embargo, el poder del lenguaje SQL y su acceso a información potencialmente sensible lo convierten en un objetivo común de ataque.

Los ataques de inyección SQL son una forma de apuntar a bases de datos a través de SQL. Las consultas SQL comúnmente entremezclan comandos con la entrada proporcionada por el usuario. Los ataques de inyección SQL aprovechan esto al proporcionar una entrada que se formatea deliberadamente para que los datos se interpreten como comandos SQL. Una charla reciente en la conferencia de ciberseguridad DEF CON demuestra otra forma en que se puede abusar de las bases de datos SQL.

Mediante el uso de una base de datos SQLite maliciosa, un pirata informático puede realizar una variedad de acciones diferentes, incluso comprometer las aplicaciones legítimas que dependen de estas bases de datos.

Introducción a SQLite

Existen varias implementaciones de bases de datos compatibles con el lenguaje SQL. Sin embargo, SQLite es extremadamente popular debido a su “ligereza”. A diferencia de la mayoría de las bases de datos SQL, las bases de datos SQLite son completamente autónomas en un solo archivo en el disco. SQLite se implementa como una biblioteca C y hace muy bien su trabajo. Como resultado, está integrado en muchas aplicaciones diferentes, incluidos todos los teléfonos móviles y muchos tipos diferentes de computadoras. La gran dependencia de las aplicaciones de los datos almacenados en las bases de datos SQLite las convierte en un objetivo prometedor para los piratas informáticos.

Explotación de aplicaciones a través de SQLite

Si bien existen ataques de inyección SQL, algunas aplicaciones pueden asumir que los datos de una base de datos son válidos. Sin embargo, esta suposición los hace vulnerables a los ataques.

En su charla DEF CON, Omer Gull proporcionó un par de estudios de casos sobre cómo una base de datos SQL maliciosa podría usarse para comprometer aplicaciones. Un ejemplo se refirió al hecho de que SQLite está integrado en todos los teléfonos móviles y es comúnmente utilizado por las aplicaciones de iOS.

Apple es conocida por su estricto modelo de seguridad cuando se trata de aplicaciones. Para ejecutarse en un dispositivo iOS, una aplicación debe estar firmada digitalmente. Sin embargo, no ocurre lo mismo con todos los archivos en iOS. Las bases de datos SQLite, que son utilizadas por una variedad de aplicaciones diferentes, no requieren firmas digitales.

Gull aprovechó esto modificando la base de datos de Contactos en iOS para contener código malicioso. Cuando el proceso de Contactos intenta consultar la base de datos SQL, ejecuta el código inyectado por el atacante.

Esta capacidad de ejecutar código malicioso en el dispositivo tiene varias aplicaciones diferentes para un hacker. Más allá de la capacidad de robar datos confidenciales del dispositivo (el código está presente en una base de datos), el código puede usarse para agregar persistencia al malware o incluso para elevar sus privilegios. Si el usuario identificó y eliminó el malware que se estaba ejecutando en el dispositivo, el código SQL malicioso podría reinstalarlo.

La escalada de privilegios puede ocurrir ya que varios procesos utilizan la base de datos de Contactos y tienen diferentes niveles de privilegios. Por ejemplo, un atacante puede lograr modificar la base de datos mediante el acceso a la aplicación Contactos. Sin embargo, Facetime y WhatsApp también utilizan esta base de datos. Cuando consultan la base de datos y ejecutan el código malicioso, es posible que el atacante acceda a la cámara y al
micrófono del dispositivo .

Protección de aplicaciones de bases de datos maliciosas

Las bases de datos SQLite son una característica común en muchas plataformas y aplicaciones: tanto iOS como Android las usan, así como una gran cantidad de aplicaciones de escritorio diferentes. Como lo demostró Gull, los contactos de iOS, WhatsApp, FaceTime, Springboard y Telegram dependen de una sola base de datos y podrían ser el objetivo de este ataque.

El uso de una base de datos SQL maliciosa para comprometer aplicaciones legítimas es un problema de seguridad importante. La prueba de concepto creada por Omer Gull demostró claramente que un atacante podría eludir las protecciones de seguridad implementadas por Apple para proteger los productos iOS. Si bien Apple ha solucionado los problemas identificados por Gull, no es necesariamente cierto lo mismo para una variedad de productos de software diferentes.

Las aplicaciones que dependen de bases de datos SQLite deben tener la capacidad de monitorear estas bases de datos y asegurarse de que no hayan sido dañadas por piratas informáticos. Lograr esto es un componente importante de una solución de seguridad de datos. Al monitorear el acceso a la base de datos y escanear en busca de entradas anómalas, la solución puede alertar a la organización si se ha realizado un intento de corromper una base de datos SQLite (mediante inyección SQL u otros medios).

Las organizaciones también pueden querer considerar el uso de la autoprotección de aplicaciones en tiempo de ejecución (RASP) para la protección de aplicaciones que dependen de fuentes externas de datos (como bases de datos SQLite). RASP está diseñado para brindar protección individualizada de una aplicación, monitoreando sus entradas, salidas y comportamiento con el fin de identificar cualquier anomalía que pueda ser un indicador de un ataque. La entrada maliciosa almacenada en bases de datos SQLite y utilizada en este ataque definitivamente sería anómala y podría prevenirse utilizando una solución RASP.

Las bases de datos se han convertido en un componente central de muchas aplicaciones, y el poder del lenguaje SQL y la confianza depositada en estas bases de datos a menudo se pasan por alto desde una perspectiva de seguridad. Las nuevas técnicas descritas por Gull son solo una muestra de lo que es posible cuando se hace un mal uso de SQL, y las organizaciones deben tomar las medidas adecuadas para proteger su software y sistemas contra estos nuevos tipos de ataques.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *