Hace unos días la Generalitat de Catalunya notificó un fallo de ciberseguridad en almenos tres de sus páginas web.
Según la información proporcionada, la vulnerabilidad ha dejado expuestos hasta 5000 correos electrónicos y contraseñas de usuarios que se habían dado de alta en aplicaciones del Govern. Concretamente, esta vulnerabilidad se ha encontrado en las webs del Departamento de Infraestructuras del Govern, el de servicios territoriales del Departamento de Educación y la web del Departamento de Cultura.
La Generalitat ha sufrido un fallo de seguridad tipo SQL Injection
El servicio de IT de la Generalitat de Catalunya ha despublicado dichas páginas y ha iniciado una investigación para esclarecer lo sucedido. Se desconoce el tiempo que estos datos han estado expuestos (puede haber sido unos días, meses o, incluso años) y quieren averiguar si ha habido una explotación de dicha vulnerabilidad para sacar provecho de los datos por partes de terceros.
Según Touseef Gul, descubridor del fallo de ciberseguridad y experto en ciberseguridad, se trata de un fallo de tipo SQL Injection. Concretamente, ha sido un código insertado en las webs que estaba desactualizado.
¿Qué es un ataque por SQL Injection?
Este tipo de vulnerabilidad se puede deber a errores de diseño que son habituales en las apps y páginas web y resulta un método fácil y eficaz para que los ciberdelincuentes puedan llevar a cabo sus ataques.
Un ataque por SQL Injection consiste en utilizar los datos de entrada de la parte del cliente (el formulario a cumplimentar) para “inyectar” instrucciones SQL de forma maliciosa y malintencionada dentro del código SQL programado para manipular de la base de datos y ponerla en peligro.
Con este tipo de ataques los ciberdelincuentes buscan modificar el comportamiento de las consultas a través de parámetros no deseados, pudiendo falsificar identidades, obtener y divulgar información de la base de datos (contraseñas, datos personales, etc), borrar la base de datos… En resumen, el atacante puede convertirse en el administrador de la base de datos y hacer lo que quiera con ella.
Causas de SQL Injection
Un fallo de ciberseguridad de tipo SQL Injection suele producirse durante la construcción de páginas webs o aplicaciones donde no se tienen en cuenta las medidas de seguridad necesarias. Esto puede llevarnos a producir fallos que se transformaran en causas que ayuden a los hacker a utilizar este sistema de ataque. A continuación os dejamos algunos de estos fallos:
- Introducir caracteres de espacios incorrectamente filtrados.
- Utilizar tipos de datos que no se han manejado correctamente.
- Introducir datos sin sanar en la base de datos.
- No utilizar la codificación Unicode completa.
- Usar comillas para delimitar cadenas.
Cómo protegerse de las SQL injections
Desarrollar una aplicación o página web no es fácil y conseguir que sea una herramienta totalmente segura, tampoco. La falta de tiempo o la participación de múltiples programadores para su desarrollo son algunos de los factores que pueden jugar en contra de la seguridad.
Sin embargo, hay trucos que nos pueden ayudar a desarrollar aplicación más segura y, así, evitar sufrir un ataque por SQL Injection. Veamos algunos de ellos:
1. Programar bien
Puede parecer obvio, pero es la mejor medida para asegurarnos que no cometamos ningún fallo de ciberseguridad y no seremos víctima de este tipo de ataques.
Si decidimos construir la aplicación nosotros mismos, nos hemos de asegurar que ponemos en práctica las necesidades básicas y el interés para desarrollar la aplicación de manera segura.
Si no contamos con la capacidad para programar nuestra app o web, lo mejor es recurrir a profesionales para que hagan su “magia” y desarrollen una aplicación totalmente segura.
Además, también podemos acudir a auditorías de código para asegurarnos que no hemos dejado ningún tipo de puerta abierta a los ciberdelincuentes.
2. Supervisar las modificaciones automáticas en las aplicaciones
Comprobar y filtrar los métodos y parámetros que utilizan las aplicaciones o web para acceder a la base de datos es otra forma de prevención. Debemos asegurarnos que los datos transferidos siempre estén en el formato de datos esperado y asegurarnos que las aplicaciones no generen ningún mensaje de error externo que pueda revelar información sobre el sistema o la estructura de la base de datos que utilizamos.
Los Prepared Statements son una práctica común que puede utilizarse con muchos sistemas de gestión de bases de datos. Estas instrucciones predefinidas permiten reducir el riesgo de ataques de inyección SQL gracias a su estructura que enmascara automáticamente los caracteres especiales.
3. Verificar siempre los datos que introduce el usuario
Si en una consulta esperamos recibir un tipo de dato concreto (por ejemplo, un entero), no confiemos en que sea así. Tomemos medidas de seguridad y realicemos la comprobación que realmente se trata del tipo de dato que esperamos.
También es aconsejable comprobar la longitud de los datos para descartar técnicas de inyección SQL. Esto nos puede ayudar a detectar ataques. Por ejemplo: si esperamos un nombre como respuesta, una cadena extremadamente larga puede suponer que estén intentando atacarnos.
4. Blindar la base de datos
Del mismo modo que un sistema operativo, una base de datos debe ser actualizada de forma regular y estar libre de factores externos irrelevantes. Para ello, hemos de desactivar todos los servicios y cuentas de usuarios inactivos, y eliminar todos los procedimientos almacenados que no sean necesarios.
Para asegurarnos que estamos blindando la base de datos tanto como podamos hemos de configurar una cuenta de base de datos que este destinada únicamente para el acceso desde la web.
5. Asignar privilegios mínimos al usuario que conecta con la base de datos
Siguiendo con el consejo anterior, hemos de asegurarnos que el usuario que utilicemos para conectarnos a la base de datos tiene los privilegios justos para realizar las acciones que necesitamos nos evitará posibles sustos. Hemos de evitar utilizar usuarios root con acceso a todas las bases de datos y, así, evitar dar facilidades a los ciberdelincuentes para que puedan acceder a toda la información.
6. Proporcionar una protección completa al servidor
La seguridad del servidor en el que se ejecuta el sistema de gestión de base de datos es clave para asegurar la prevención de ataques de inyección SQL.
Una de las medidas de seguridad más importantes es endurecer el sistema operativo de acuerdo a lo siguiente:
- Instalar y activar sólo aquellas aplicaciones y servicios realmente necesarios para la base de datos.
- Eliminar todas las cuentas de usuario que no sean necesarias.
- Instalar todas las actualizaciones relevantes para el sistema y el programa.
Cuan más altos sean los requisitos de seguridad del proyecto web, mayor será la necesidad de instalar sistemas de detección de intrusiones (IDS) o sistemas de prevención de intrusiones (IPS). Estos sistemas ayudan a detectar ataques contra el servidor y alertar al administrador para que tome las medidas apropiadas.
Otra medida de protección muy recomendable es contar con una solución de ciberseguridad completa para nuestra empresa. Esto nos ayudará a protegerla de cualquier tipo de ataque externo, a detectar vulnerabilidades no previstas e, incluso, detectar ciberamenazas antes de que tengan lugar. Desde Interbel s) os aconsejamos GData, la solución más completa del mercado que cuenta con el software de seguridad y las tecnologías de inteligencia artificial más modernas.
Agenda tu demo gratuita de usecure

Por qué usecure:
- Mitiga las brechas de ciberseguridad en tu empresa
- Monitoreo de la Dark Web
- 4 productos en uno