59332583021
Blog AVG Signal Seguridad Amenazas ¿Qué es la inyección de SQL?
Signal-What-is-SQL-injection-Hero

Escrito por Domenic Molinaro
Fecha de publicación June 4, 2021

¿Qué es exactamente la inyección de SQL?

La inyección de SQL es un ciberataque que engaña a una base de datos para permitir que los piratas informáticos accedan a ella. Una inyección de SQL obliga a una base de datos desprotegida a ejecutar comandos no seguros mediante la inserción de código malicioso en el lenguaje de consulta estructurada (SQL) de una base de datos, el lenguaje usado más comúnmente para la gestión de bases de datos.

Este artículo contiene:

    Aunque la inyección de SQL (SQLi) existe desde hace décadas, es una amenaza persistente y representa dos tercios de los ataques a aplicaciones web en la actualidad. OWASP, una organización sin ánimo de lucro líder en la concienciación sobre la seguridad en la web, sitúa las inyecciones en lo más alto de su lista de riesgos para la seguridad de las aplicaciones web.

    Las vulnerabilidades de inyección de SQL suelen deberse a una API (interfaz de programación de aplicaciones) mal escrita. Los desarrolladores de aplicaciones web a veces tienen dificultades para ver sus errores hasta que alguien los descubre, por lo que los nuevos productos suelen ser presa fácil de los ataques de inyección de SQL de día cero.

    Y cuando no se están sirviendo de sus datos, los ciberdelincuentes hábiles suelen venderlos a corredores de datos. Los ataques SQL son una fuente principal de ingresos para muchos grupos de hackers al ser potencialmente lucrativos y relativamente fáciles de llevar a cabo con las habilidades y la experiencia adecuadas.

    ¿Qué es SQL?

    El término SQL, o «lenguaje de consultas estructuradas», se refiere al lenguaje que se emplea en la administración de bases de datos. Cuando se comunica con una base de datos o se consulta para solicitar información, SQL es el lenguaje más utilizado para acceder a esos datos.

    Piense en una base de datos como el almacén de una aplicación web. Una base de datos está llena de tablas, que son como cajas que contienen datos como la información de los clientes, los artículos en venta o las credenciales de acceso. Cuando se introduce información en una aplicación web, SQL permite que la base de datos procese la petición y devuelva la información solicitada.

    Por su intuitiva sintaxis, basada en la lengua inglesa, SQL se ha convertido en el lenguaje de gestión de bases de datos por excelencia para muchos programadores de APIs. Si una base de datos es el almacén de una aplicación web, una API sería un elegante escaparate. Es con lo que se interactúa realmente cuando se navega por un sitio web y se realizan solicitudes a través de un campo de entrada o formulario (como la búsqueda de un artículo).

    SQL se encuentra justo en la trastienda, donde toma sus peticiones y las convierte en código para la base de datos. Desgraciadamente, la capacidad de SQL para interpretar las entradas del usuario también lo convierte en un blanco fácil para los ataques informáticos.

    Por si se lo pregunta, puede pronunciar SQL como «sequel» o «ese-cu-ele». Consulte nuestro curso intensivo sobre otros términos de ciberseguridad si está un poco confuso.

    ¿Cómo se lleva a cabo un ataque de inyección de SQL?

    Los piratas informáticos realizan un ataque de inyección de SQL a través de un campo de entrada, como un portal de acceso, un campo de formulario o una barra de búsqueda, en una API web. Mediante la alteración de los datos de entrada con un fragmento de código malicioso conocido como «exploit», un ciberdelincuente puede engañar a una base de datos no segura para que interprete los datos como un comando.

    Los hackers ejecutan ataques de inyección de SQL a través de los campos de entrada del sitio web que se comunican directamente con las APIs. Los sitios web con campos de entrada no seguros pueden ser vulnerables a los ataques SQLi.

    Reiteradas inyecciones de SQL dan a los hackers una buena idea del grado de vulnerabilidad de un software. A continuación se muestra un ejemplo de cómo se realiza un ataque de inyección de SQL:

    1. Está intentando acceder a sus datos de usuario en un sitio web, por lo que introduce su nombre de usuario: AVGMola17.

    2. SQL hace que su entrada sea inteligible para la base de datos. Es decir, SQL convierte su entrada en algo como: «Busca al usuario AVGMola17 y dame sus datos». Solo tiene que teclear «AVGMola17», pero SQL traduce la petición en un código que indica a la base de datos lo que debe hacer. Podría ser algo así:

    SELECT * FROM users WHERE userID = AVGMola17;

    El asterisco anterior significa «todos los detalles», posiblemente incluidos su nombre real y su contraseña.

    En lugar de filtrar por un usuario específico, una inyección de SQL de, por ejemplo, OR 1=1 en una barra de búsqueda, un portal de acceso u otro campo de entrada puede forzar al SQL a consultar la base de datos en busca de todos los detalles de CADA usuario. ¿Cómo? La base de datos recibe:

    SELECT * FROM users WHERE userID = AVGMola17 OR 1=1;

    La base de datos interpreta esto como una orden para buscar entre los datos de cada usuario y entregarlos todos si el ID coincide con AVGMola17 o si 1 es igual a 1, lo que, por supuesto, siempre ocurre.

    Las inyecciones de SQL pueden cambiar, insertar y eliminar elementos de una base de datos o sentar las bases para un ataque de denegación de servicio. Los piratas informáticos también pueden instalar puertas traseras que les den acceso a un servidor de forma indefinida.

    Los comandos comunes de inyección de SQL permiten a los piratas informáticos manipular, robar o destruir datos, suplantar o robar identidades o cambiar los permisos de las bases de datos. En casos extremos, una inyección de SQL puede entregar el control completo de una base de datos a un atacante.

    ¿Cómo funcionan con tanta facilidad los ataques de inyección de SQL? En realidad, no deberían. Las vulnerabilidades de inyección de SQL suelen ser el resultado de una programación deficiente por parte de un desarrollador web. Las empresas suelen contratar a desarrolladores con poca experiencia o conocimientos, y, además, una seguridad adecuada requiere más tiempo de programación. Los plazos ajustados pueden llevar a muchas empresas a restarle prioridad a la seguridad.

    Sin embargo, no todo son necedades humanas. Como la lógica es tan simple, los ataques SQLi son fácilmente automatizables. Ni siquiera los mejores programadores son rivales para un ejército de bots.

    Ejemplos de inyección de SQL en el mundo real

    En 2008, el procesador de pagos Heartland Payment Systems sufrió un ataque mediante inyección de SQL que le ocasionó pérdidas de más de 130 millones de dólares. Los atacantes robaron la friolera de 130 millones de números de tarjetas de crédito en una de las mayores violaciones de datos de tarjetas de crédito de la historia.

    En 2014, una banda de piratas informáticos recopiló más de 1200 millones de combinaciones únicas de IDS y contraseñas de más de 420 000 sitios web de todo Internet. El grupo de piratas informáticos rusos usó inyecciones de SQL para ordenar a las bases de datos que revelaran y volcaran su contenido.

    El gigante de las telecomunicaciones del Reino Unido, TalkTalk, fue objeto de críticas en 2015 por una débil seguridad en la web que comprometió la información personal de cientos de miles de clientes. A pesar de que los riesgos de seguridad de SQL eran bien conocidos en ese momento, la empresa no pudo hacer nada contra el ataque.

    Para un ejemplo de inyección de SQL que concierne a los jugadores cotidianos, Epic Games sufrió un ataque a sus foros en 2016, y se filtraron 800 000 cuentas de usuarios. Las inyecciones de SQL tenían como objetivo el popular software de tableros de mensajes en línea vBulletin, que se ha hecho infame por su vulnerabilidad a los exploits de SQL. En general, los ataques de inyección de SQL se están extendiendo por la industria del videojuego como la pólvora.

    Nadie está a salvo de los ataques SQLi, ya sea una gran empresa, el propietario de un sitio web o el usuario medio de Internet. La comodidad de SQL prácticamente garantiza que los ataques SQLi seguirán siendo un vector de ataque muy extendido.

    La mejor manera de mantener sus datos a salvo es usar un software de seguridad en tiempo real que proteja contra los ataques de phishing y las intrusiones en la red. AVG Antivirus FREE le defiende contra las vulnerabilidades de seguridad, el phishing y las filtraciones de contraseñas, así como contra toda la gama de malware.

    Tipos de inyección de SQL

    Los tres tipos principales de inyección de SQL son SQLi en banda, SQLi fuera de banda y SQLi inferencial. Una inyección de SQL se clasifica en diferentes categorías en función de su frecuencia, del método de ataque empleado y del daño potencial infligido.

    ¿Qué es la inyección de SQL en banda?

    La SQLi en banda es el tipo más básico de inyección de SQL. Con los ataques SQL en banda, los piratas informáticos pueden lanzar un ataque y recuperar los resultados en el mismo servidor. La inyección de SQL en banda se usa habitualmente porque es sencilla de realizar.

    ¿Qué es la inyección de SQL fuera de banda?

    Los ataques SQLi fuera de banda tratan de extraer el contenido de una base de datos a un servidor diferente y requieren que la base de datos pueda hacer peticiones DNS o HTTP. Las SQLis fuera de banda son menos comunes, pero también más graves.

    ¿Qué es la inyección de SQL inferencial (ciega)?

    Una inyección de SQL inferencial (ciega) plantea declaraciones verdaderas o falsas a una base de datos para intentar inferir su estructura. Al examinar las respuestas recibidas, un pirata informático puede empezar a identificar las posibles vulnerabilidades de una base de datos.

    Cómo identificar las vulnerabilidades de inyección de SQL

    La mejor manera de identificar las vulnerabilidades de inyección de SQL en su base de datos es ponerla a prueba. A continuación, le mostramos varias de las herramientas de comprobación de inyecciones de SQL más populares.

    • sqlmap es un «comprobador de penetración» de código abierto que puede analizar un sistema en busca de vulnerabilidades de seguridad. sqlmap puede volcar todo el contenido de una base de datos, pero esto significa que los piratas informáticos también pueden usarlo.

    • suIP.biz es un escáner en línea impulsado por sqlmap y puede comprobar la inyección de SQL en sistemas de gestión de bases de datos populares como MySQL, Oracle o Microsoft SQL Server.

    • Hacker Target analiza las vulnerabilidades centradas en las inyecciones ciegas y basadas en errores contra las solicitudes HTTP GET (un determinado tipo de URL). También está impulsado por sqlmap.

    • Vega analiza las inyecciones de SQL y un tipo de ataque similar llamado inyecciones de Cross-Site Scripting (XSS). De código abierto y fácil de usar, Vega funciona en Linux, macOS y Windows.

    Cómo evitar los ataques de inyección de SQL

    Los desarrolladores web pueden prevenir los ataques de inyección de SQL con una buena higiene en su código. Pero también hay muchas cosas que puede hacer para proteger sus datos confidenciales contra los ataques SQLi.

    • Compruebe si un sitio web es seguro antes de introducir sus datos, y siga la actualidad tecnológica en materia de seguridad para poder cambiar su contraseña en caso de que un sitio web que use sea vulnerado. AVG BreachGuard puede ayudarle a evitar que sus datos se filtren en una vulneración.

    • Practique hábitos de contraseñas fuertes, como usar contraseñas únicas con al menos 12 caracteres, y guárdelas de forma segura con un buen gestor de contraseñas.

    • Compruebe si alguna de sus cuentas ha sufrido una filtración como resultado de un ataque SQLi o de otra vulneración con Avast Hack Check. Si ha sido víctima de un ataque, cambie su contraseña inmediatamente.

    Los desarrolladores web y los propietarios de empresas pueden asegurar sus bases de datos contra los ataques SQLi con los siguientes consejos.

    Consultas parametrizadas y entradas saneadas

    La prevención de los ataques SQLi comienza con el saneamiento de las entradas, es decir, con la «limpieza» del código de la aplicación mediante el establecimiento de parámetros que permitan distinguir entre los datos de entrada (información legítima) y los comandos (información de los piratas informáticos). El saneamiento adecuado de las entradas es un problema tan extendido que un webcómic de xkcd sobre la inyección de SQL en forma de tabla se hizo viral.

    Cortafuegos de aplicaciones web (WAF)

    Un cortafuegos de aplicaciones web (WAF) es una barrera que filtra el software malicioso y el tráfico entre una aplicación web e Internet. Los cortafuegos de aplicaciones web pueden configurarse para protegerle de diferentes tipos de inyecciones de SQL y otras amenazas de seguridad.

    Listas blancas en lugar de listas negras

    Las listas negras evitan que los usuarios introduzcan caracteres potencialmente problemáticos, como signos de igualdad, puntos y comillas. Dado que las listas blancas únicamente aprueban ciertos caracteres, son más restrictivas y tienen un mayor impacto. Los piratas informáticos han encontrado formas creativas de eludir las listas negras, pero las listas blancas dejan poco margen de maniobra.

    Cifrado de datos

    El cifrado de datos mantiene sus datos bajo llave hasta que los recupere. Al cifrar los datos en la base de datos, los piratas informáticos no pueden acceder a los datos reales a menos que puedan desbloquearlos.

    Utilice software de seguridad

    Por muy vigilante que sea, es difícil bloquear a millones de piratas informáticos que intentan colarse. El software de seguridad para empresas actual puede aplicar parches automáticamente para ayudar a protegerse contra las amenazas de inyección de SQL en evolución.

    Protéjase contra las amenazas y vulnerabilidades con AVG Antivirus

    No hay mucho que hacer si su sitio web favorito se ve afectado por la inyección de SQL, pero no tiene por qué tolerar una seguridad deficiente en sus propios dispositivos.

    El software de seguridad patentado de AVG patrulla en busca de amenazas las 24 horas del día. Analice su dispositivo en un instante para tapar cualquier agujero de seguridad o vulnerabilidad Wi-Fi. Proteja su correo electrónico de los fisgones y bloquee las descargas maliciosas, los enlaces inseguros y los intentos de phishing.

    Cubra las amenazas en línea desde cualquier ángulo, ya sea asegurando su red, eliminando el software obsoleto o deshaciéndose del malware. Pruebe AVG Antivirus FREE hoy mismo.

    Proteja su iPhone de amenazas con AVG Mobile Security

    Instalación gratis

    Proteja su dispositivo Android de amenazas con AVG AntiVirus

    Instalación gratis
    Amenazas
    Seguridad
    Domenic Molinaro
    4-06-2021