Como mencionamos anteriormente, publicaremos semanalmente información relacionada con el TOP 10 OWASP, con el fin de promover y difundir los conceptos de desarrollo seguro. En esta primera publicación, se revisará el primer punto de listado: A1 Inyección. Por lo general se relaciona Inyección o Injection con vulnerabilidades asociadas a SQL Injection, sin embargo, este ítem […]
Como mencionamos anteriormente, publicaremos semanalmente información relacionada con el TOP 10 OWASP, con el fin de promover y difundir los conceptos de desarrollo seguro. En esta primera publicación, se revisará el primer punto de listado: A1 Inyección.
Por lo general se relaciona Inyección o Injection con vulnerabilidades asociadas a SQL Injection, sin embargo, este ítem hace referencia a distintos tipos de inyección, como por ejmeplo consultas LDAP, comandos de sistema operativo, entidades XML, etc.
Antes que todo, se debe entender que cualquier fuente de información o parámetros de entrada puede ser manipulada, por lo tanto se debe entender que los parámetros de entrada pueden ser mediante las cabeceras, URL o el cuerpo de una petición HTTP, correspondiente a los Headers, GET y POST respectivamente.
Es importante que todos los parámetros de entrada sean correctamente validados y filtrados de acuerdo a distintos criterios. El tratamiento de estos datos puede ser:
Debemos entender la diferencia que existe entre estos distintos métodos, ya que se debe adaptar al funcionamiento de la aplicación. Por ejemplo, si tenemos un editor de texto enriquecido, mediante el cual se permite al usuario manipular código HTML, en este caso no deberíamos optar por la opción de escapar los caracteres, ya que al momento de mostrar la información el navegador no lo interpretará y lo mostrará como texto.
Para entender como funcionan cada uno de estos metodos, creamos la siguiente tabla:
En el input de ejemplo se puede ver un script javascript, el cual gatilla una alerta en el navegador. Dependiendo el tipo de método que apliquemos sobre los parámetros de entrada, podemos ver el output que deberíamos obtener.
Estos filtros se pueden aplicar a nivel de motor HTTP como por ejemplo nginx, Apache, Microsoft IIS, Tomcat, etc. En el siguiente ejmeplo, podemos ver como se envia un Payload SQL Injection y se filtra desde el motor HTTP.
El filtro detectó que existen caracteres especiales los cuales no están permitidos, por lo tanto no permite la operación y retorna un 403 Forbidden.
Desde el punto de vista de aplicación, para poder filtrar los parametros de entrada existen diversas funciones o métodos, dependiendo del lenguaje o bien del framework que estemos utilizando.
Es importante que los datos sean tratados antes de almacenarse en la base de datos y como recomendación adicional, también al momento de ser desplegados. Los ataques más comunes son cuando no se implementa un correcto tratamiento de los datos se realizan mediante variables GET, datos POST o cabeceras como Cookie y User-Agent.
De acuerdo a un estudio global que realiza el equipo de seguridad de IBM, y el Instituto Ponemon, se descubrió que el costo promedio producido por un data breach aumentó en 6,4% respecto del año pasado, generando, cada una, un costo de $3.86 millones de dólares.
El pasado viernes 3 de agosto fue designado como Asesor Presidencial en Ciberseguridad, Jorge Atton Palma, quien posee una vasta carrera en la industria de las telecomunicaciones, tanto en el sector público como privado. De acuerdo al comunicado de prensa “desde el Ministerio del Interior y Seguridad Pública, Jorge Atton tendrá la tarea de coordinar […]