Por Luis Alberto Nuñez Reyes – Estudiante de la carrera de Ingeniería Informática

Por lo general, las aplicaciones web llevan la misma arquitectura básica y almacenan la información en bases de datos. Estas bases de datos tienen información muy importante de las aplicaciones, como usuarios y contraseñas. Los hackers logran acceder a esta información mediante la ejecución de comandos en los formularios de búsqueda o en los campos de texto, haciendo que la aplicación reaccione ante códigos maliciosos que permiten que el hacker obtenga acceso a datos restringidos.

El resultado de una inyección de código puede causar muchos problemas, ya que, por lo general, suelen ser malintencionados, con propósitos como tomar control de un nodo, alterar los datos de una base de datos, ejecutar malware en el servidor, entre otros. Entre los ataques de inyección de datos más comunes, se encuentran los de inyección de código SQL, con los cuales un hacker con experiencia en sintaxis de SQL introduce código capaz de vulnerar el sistema; por lo que, si la aplicación no cuenta con la seguridad necesaria para defenderse del ataque, será engañada por el código del hacker.

Otro ataque que sucede por la inyección de código malicioso es el ataque de inyección de XPATH, el cual es muy común en los servicios web ya que mediante este lenguaje se pueden crear métodos que procesan e interaccionan con un archivo XML que podría tener la información de cuentas de usuario o información valiosa de la empresa o del sistema vulnerado. A través de ataques de este tipo, el hacker puede descubrir y acceder a la estructura de los datos XML y tener acceso a esos datos privados. Por último, Cross Site Scripting almacenado (XSS) se asemeja mucho a estos procesos; sin embargo, tiene una metodología diferente la cual es como un cazador esperando a su presa. XSS el atacante inyecta un script en las páginas web que son vulnerables, este se almacena en los servidores de la aplicación y se recupera cuando el atacante lo solicita. Realmente, el ataque sucede cuando el usuario visita una página que ha sido vulnerada, y es esta página la que se encarga de distribuir el script al browser del usuario. Este proceso de distribución lo logra de manera muy fácil, ya que también puede usar el código para alterar la misma página web y redirigir a los usuarios a otro sitio web con el programa maligno.

Entre las maneras más eficaces para prevenir ataques de inyección de código está la encriptación de la base de datos. De esta manera se evita que engañen el sistema con códigos maliciosos. En caso de que sea una inyección xpath, al igual que con las inyecciones sql, se requiere el uso de una interfaz con validación de entradas, sistemas de análisis y prevención de tráfico como WAF (Web application firewall). Con respecto a la validación de entrada de datos, es necesario tomar en cuenta el rechazo de caracteres de doble comillas o algunos caracteres especiales (“,", *, =, {, \,., espacio).

Por otro lado, es importante tener en cuenta algunas funciones que tienen altos privilegios para acceder a datos, las cuales suelen ser utilizadas en ataques de inyección de datos; por ejemplo, la función doc() en xpath que permite el acceso a documentos con tan solo tan solo conocer su nombre o URI. Con respecto a los campos de texto es importante limitar la entrada de datos a los caracteres necesarios o solicitados por la aplicación, por ejemplo, si se solicita un ID numérico se debe limitar la entrada de este a solo números.

La tecnología nos ha llevado a una época de automatización, brindándonos múltiples ventajas. Sin embargo, de la misma manera en la que los seres humanos son imperfectos, igual pasa con los sistemas. Por ello, es importante tener en cuenta que todos estos procesos pueden ser vulnerados si no se perfeccionan a nivel de seguridad. La implementación de medidas de seguridad podría ser parte de la solución de esta gran brecha de vulnerabilidad que los sistemas presentan.

 

MOXIE es el Canal de ULACIT (www.ulacit.ac.cr), producido por y para los estudiantes universitarios, en alianza con el medio periodístico independiente Delfino.cr, con el propósito de brindarles un espacio para generar y difundir sus ideas.  Se llama Moxie - que en inglés urbano significa tener la capacidad de enfrentar las dificultades con inteligencia, audacia y valentía - en honor a nuestros alumnos, cuyo “moxie” los caracteriza.