SQL Injection (I)

SQL Injection (SQLi) es una vulnerabilidad que afecta las aplicaciones y servicios Web que hacen uso de servicios de Bases de Datos (consultas, creación/modificación de registros) a través de datos de entrada (parámetros, headers, cookies) que son incluidos o utilizados para ejecutar sentencias o comandos, los cuales se pueden manipular para ejecutar acciones no autorizadas sobre la Base de Datos.

De acuerdo a OWASP Top 10 2017, SQL Injection ocupa el primer lugar dentro de las vulnerabilidades que afectan las aplicaciones y servicios Web, por lo que es importante su identificación, así como el diseño de controles para prevenir su explotación.

El impacto que puede ocasionar este ataque depende principalmente del tipo de dato que almacena la Base de Datos (datos personales, financieros, privados), así como los privilegios que tiene el usuario que utiliza la aplicación para ejecutar acciones sobre la Base de Datos, los cuales van a permitir acceder a diferentes recursos del sistema.

En un ataque exitoso esta vulnerabilidad permite ejecutar sentencias y comandos de manera no autorizada sobre la Base de Datos, diferentes a las que estaban previstas por el programador del sistema.

Aunque actualmente existen diferentes arquitecturas Web (MVC, REST, etc.) podríamos definir los siguientes componentes en una aplicación Web.

enter image description here

El ataque de SQLi se ejecuta desde la capa de aplicación, por lo que si no existen controles de seguridad en las distintas capas del sistema, un atacante podrá ejecutar acciones no autorizadas sobre los recursos de la Base de Datos.

El proceso general para identificar este tipo de vulnerabilidades es el siguiente:

enter image description here


Author: Rodolfo López

rodolfo.lopez@grcbit.com