Seguridad web/ Web security

ciberseguridad en el mundo actual

AutorLic. Yuri La Rosa Martínez / yuri.larosa@mtz.jovenclub.cu

Resumen: El constante crecimiento de Internet tiene influencias directas en la seguridad de la información que se maneja a diario en los sitios web. Sitios de comercio electrónico, servicios, bancos, redes sociales entre otros contienen información tan importante que no pocos intentan apoderarse de esta para fines algo turbios. Los servidores web, herramientas con la que se interactúa constantemente por parte de los usuarios son un punto neurálgico si de seguridad web se trata, comúnmente se escucha hablar sobre fallas en los sistemas de protección de los servidores más frecuentemente utilizados, o en los lenguajes de programación en que son escritas las aplicaciones. Sin embargo, la mayoría de los problemas detectados en servicios web no son provocados por fallas de ninguna de estas partes, si no que los problemas se generan por malas prácticas en cuanto a seguridad.

 Palabras claves: Internet, servidores WEB, servicios WEB, sistemas de protección, seguridad WEB, seguridad, tipos de ataque, ataque pirata, contraseña, protección de datos

 Abstract: The steady growth of internet has direct influence on the security of information handled daily on websites. E-commerce sites, services, banks, social networks among others contain important information not just trying to take over this for some shady purposes. Web servers, tools with which it constantly interacts by users are a focal point if web security is commonly heard talk about failures in protection systems most frequently used servers, or languages programming applications that are written. However, most of the problems detected by web services are not caused by failures of any of these, if no problems are generated by bad practices in safety.

 Key words: Internet, WEB, WEB services, protection systems, Web security, types of attack, pirate attack, password, data protection servers

 Introducción:

Actualmente en la web se realizan todo tipo de transacciones, y cada vez en mayor proporción. Detalles de cuentas bancarias, tarjetas de crédito y todo tipo de información confidencial y de valor circulan en enormes cantidades y continuamente. Es por ende lógico que la mayoría de los esfuerzos de hackers y demás atacantes se centre en vulnerar estas aplicaciones.

Programar aplicaciones web seguras no es tan simple como parece, ya que requiere por parte del programador, no sólo cumplir con el objetivo funcional básico de la aplicación, sino una concepción general de los riesgos que puede correr la información procesada por el sistema, es decir, el programador debe lograr alcanzar el delicado balance entre seguridad y funcionalidad.

Primero se debe conocer a que problemas, peligros y amenazas a la seguridad de un sitio web se enfrenta y que puede hacer que este sea un blanco atractivo y vulnerable.

Por muy pequeño que sea este proyecto, no se puede pensar que no va hacer objeto de ataques a la seguridad. Todos los emprendimientos en línea se enfrentan a una variedad de peligros y amenazas que deben comprenderse y evaluarse.

Desarrollo:

Reconociendo las amenazas

Las amenazas a la seguridad evolucionan tan rápido como la tecnología que intentan comprometer. Existen 59.000 amenazas conocidas que atentan contra la seguridad de la información, y una búsqueda en la base de datos de apache devuelve una lista de más de 500 vulnerabilidades conocidas.

Por otra parte las técnicas usadas para acceder a datos y modificar código varían considerablemente, por lo general una infracción de seguridad tiene uno de los siguientes cuatro objetivos:

  • Acceso a bases de datos y robo o corrupción de datos personales o confidenciales.
  • Modificar el código de un sitio web con el fin de cambiar lo que los usuarios ven.
  • Interceptar datos personales y confidenciales.
  • Ataques de denegación de servicio (DoS) que deshabilitan la disponibilidad de los servicios.

Clasificando los ataques

Ataques URL de tipo semántico

Este tipo de ataques involucran a un usuario modificando la URL a modo de descubrir acciones a realizar que originalmente no están planeadas para ser manejadas correctamente por el servidor. La implementación de cualquier formulario debe contemplar validaciones necesarias y se deben realizar adecuaciones de acuerdo a las entradas.

Figura 1. Formulario con envio de datos por metodo GET
Figura 1. Formulario con envio de datos por metodo GET

 

Los parámetros que son enviados con el método GET, se agregan directamente en la URL, lo que produce que los atacantes puedan utilizarlos, ya que son solo un poco más fáciles de capturar y modificar que los enviados de forma oculta desde el navegador (POST).

Ataques de Cross-Site Scripting

Cross-Site Scripting (XSS) es un tipo de vulnerabilidad de seguridad informática típicamente encontrada en aplicaciones web que permiten la inyección de código por usuarios maliciosos en páginas web. Los atacantes típicamente se valen de código HTML y de scripts ejecutados en el cliente.

Ataques de Cross-Site Request Forgery

Permite al atacante enviar peticiones HTTP a voluntad desde la máquina de la víctima. Es difícil determinar cuándo una petición HTML se ha originado por un ataque de este tipo.

Cuando un atacante conoce el formato que debe tener una URL para lograr la ejecución de una acción en el sistema, ha logrado encontrar la posibilidad de explotar este tipo de ataques. Ahora lo que necesita el atacante es simplemente hacer que una víctima visite la URL.

Un recurso que se utiliza comúnmente para realizar este tipo de ataques suele tener embebida la petición en una imagen. En este caso el atacante sólo necesita crear alguna etiqueta HTML del siguiente tipo:

<img src=”http://misitio.com/attack.php?param=valor&param2=valor” />

Peticiones HTTP falsificadas

Complejizar un tanto los ataques puede suponer enviar peticiones falsas con el empleo de herramientas especiales.

Los atacantes emplean herramientas de línea de comandos o plugins agregados a los navegadores, con estos se pone a la escucha de los servicios web que típicamente se conectan a través del puerto 80.

En realidad un atacante puede confeccionar a gusto sus peticiones HTTP, la fortaleza de nuestro sistema será medible por su capacidad de detectar que peticiones recibidas deben ser escuchadas y procesadas de acuerdo a los parámetros y valores que se vayan a recibir.

Seguridad de las aplicaciones y su relación con las bases de datos

Las aplicaciones web en su mayoría, son usadas como un conducto entre fuentes de información y el usuario, es decir, generalmente las aplicaciones web son usadas para interactuar con una base de datos.

Muchos programadores no dan importancia al filtrado de datos provenientes de una consulta a la base de datos, debido a que consideran a esta fuente como confiable. Aunque el riesgo a primera vista parecería menor, es una práctica recomendable no confiar en la seguridad de la base de datos e implementar la seguridad a fondo y con redundancia. De esta manera, si algún dato malicioso fue inyectado a la base de datos, nuestra lógica de filtrado puede percatarse de ello.

Uno de los asuntos principales a ser cuidados cuando se utiliza una base de datos es el almacenamiento de las credenciales de acceso a ella.

Los datos de usuario y password son considerados sensibles, por lo que deben tener garantizada una atención especial. En archivos de configuración es común encontrar estos datos los cuales se encuentran como texto en claro.

La intercepción o acceso no autorizado de esta información podría comprometer los servidores de bases de datos o  gestores de contenidos en donde estén alojados. Si por alguna razón no fuera posible localizar al archivo que contiene esta información fuera del directorio raíz, es necesario configurar el servidor web para rechazar las peticiones de recursos que no deben ser accesibles.

SQL Injection

La inyección de código SQL es la vulnerabilidad número uno en el top de OWASP.

Para que exista una vulnerabilidad de SQL Injection se requieren dos fallas por parte del programador:

  1. Fallas en el filtrado de los datos.
  2. Fallas en el escapado de los datos al enviarlos a la base de datos (escapado de salida).
Figura 2. Descripción básica de SQL Injection
Figura 2. Descripción básica de SQL Injection

 

Ninguno de estos pasos cruciales debe ser omitido, y los dos pasos requieren especial atención para poder minimizar los errores. Afortunadamente los ataques de SQL Injection son fácilmente evitables, mientras filtremos y escapemos las salidas.

Datos expuestos

Una de las preocupaciones más comunes relacionadas con las bases de datos es la exposición de datos sensibles. Al almacenar números de tarjetas de crédito, por ejemplo, es preferible asegurarse que los datos almacenados en la base de datos se encuentran seguros e inaccesibles incluso para los administradores de la base.

Para asegurar que no se almacenan datos como texto en claro en la base de datos se pueden realizar procedimientos de hash a las cadenas almacenadas para que no sea entendible la información a simple vista. Se debe considerar el costo de esta implementación ya que habría que obtener el hash al insertarlo y al extraerlo realizar la operación inversa, lo que conllevaría a que la aplicación tarde un poco más en responder.

Ataques Brute Force

Este tipo de ataque es un método de ensayo y error utilizado para obtener información de una contraseña, clave o número de identificación personal, entre otros. Funciona mediante la generación de un gran número de intentos consecutivos para el valor de los datos deseados. Un ataque de este tipo agota todas las posibilidades sin preocuparse por cuales opciones tienen mayor probabilidad de funcionar.

En los términos del control de acceso, generalmente encontramos al atacante intentando ingresar mediante un gran número de pruebas. En algunos casos el atacante puede conocer nombres de usuario válidos y la contraseña es la única parte que se trata de adivinar.

Ataques Password Sniffing

Cuando un atacante tiene los medios para analizar el tráfico entre los usuarios y el servidor de la aplicación, debemos preocuparnos por la exposición que pueden tener los datos en el trayecto, sobre todo cuando se trata de credenciales de acceso.

Anexo 3
Figura 3. Captura de tráfico HTTP con contraseña enviada en claro

 

En la actualidad debido a la información que se transmite en la web se recomienda establecer el uso del protocolo HTTPS para poder cifrar el canal de comunicación por el que enviaremos nuestra información.

Cookies o variables de sesión persistentes

Estos pequeños archivos con información contribuyen a que la Red sea un espacio más controlado y personalizado para el usuario. Sin embargo, las cookies presentan algunos riesgos para la privacidad.

Cuando un usuario permanece en el estado de registrado después de un tiempo no razonable, tenemos un problema de registros persistentes.

Este tipo de problemas disminuyen la seguridad de nuestro mecanismo de autenticación. Generalmente son causados por una cookie persistente, un ticket enviado al usuario o alguna variable de sesión establecida que no se considera como expirado jamás o que no cambia en cada nuevo registro establecido por el usuario.

Las cookies permanentes y variables de sesión ayudan a los sitios web a recordar tu información y ajustes cuando los visitas más adelante. Esto conlleva un acceso más rápido y sencillo ya que, por ejemplo, no tienes que iniciar sesión de nuevo.

El problema fundamental de las cookies para la privacidad deriva de la posibilidad de almacenar en ellas cualquier tipo de información. Este hecho, unido a que las cookies se instalan en el ordenador del usuario de forma automática, provoca que algunas organizaciones las usen con fines de espionaje y para la captación de datos personales.

Un problema aún mayor es que los propios usuarios desconocen qué es una cookie o para qué sirve. Por lo general, los usuarios no desean tener que preocuparse por las medidas de prevención necesarias ante la posible instalación de cookies en sus ordenadores.

Conclusiones:

 El desarrollo acelerado de la tecnología, logra por consiguiente una aceleración en lo sofisticado de los ataques a la información que se maneja por parte de los sitios web, debido a esto es importante la detallada aplicación de elementos de seguridad que pueden marcar la diferencia entre un verdadero éxito o un verdadero fiasco en cuanto a seguridad web, por tanto, con el conocimiento de los posibles ataques se pueden reconocer posibles vulnerabilidades y con el estudio e identificación de estas en nuestros sitios se pueden corregir y así hacer una web más segura.

 Referencias Bibliográficas:

Anónimo. (2016). What is an attack? Recuperado el 16 de abril, de https://www.owasp.org/index.php/Category:Attack

Fernandez P. (2013). “Los usuarios desconocen qué es una cookie”. Oficina de seguridad del internauta. Recuperado el 16 de abril, de https://www.osi.es/es/actualidad/blog/2013/05/14/los-usuarios-desconocen-que-es-una-cookie.html

López, S. (2006). Seguridad en desarrollo de aplicaciones Web. Monografias.com. Recuperado el 16 de abril, de http://www.monografias.com/trabajos75/seguridad-desarrollo-aplicaciones-web/seguridad-desarrollo-aplicaciones-web.shtml

Turner S. (2014). Seguridad de sitios web: problemas, peligros y amenazas. IWEB. Recuperado el 16 de abril, de http://blog.iweb.com/es/2014/02/seguridad-web-amenazas/2457.html

Impactos: 201

Share

Sé el primero en comentar

Dejar una contestacion

Tu dirección de correo electrónico no será publicada.


*