Asegurando nuestras aplicaciones ASP .NET

Algo que debemos considerar principalmente al momento de desarrollar una aplicación ASP .NET es la seguridad que podemos brindar a nuestro desarrollo. Con esto no me refiero a los tipos de autenticación que podríamos utilizar, sino a protegerse de los ataques Cross Site Scripting, SQL Injection entre otros.

Ataques Cross Site Scripting o XSS

Los ataques XSS básicamente lo que hacen es inyectar código javascript en nuestra página haciendo que esta se comporte de una manera errónea. Tomemos por ejemplo un formulario donde un usuario ingresa comentarios o sugerencias a un sitio Web

blg1

Si un usuario mal intencionado escribe en el campo Email (o cualquier otro campo) lo siguiente: “<script type=’text/javascript’>alert(‘Hola mundo’);</script>”, este es el resultado que obtendríamos:

 

blg2

blg3

 

Si bien este ejemplo lo único que hace es mostrar un alert javascript, las cosas que se podrían hacer con este tipo de ataque son muy variadas. Para mayor información acerca de los ataques XSS y otros, pueden dirigirse al programa Microsoft .NET Protector, el cual enseña una serie de “misiones” en las que consisten varios tipos de ataques y como protegerse de ellos.

Contramedidas

Microsoft en su constante afán de proveernos herramientas que nos ayuden en nuestras labores diarias, ha puesto a disposición dos herramientas muy livianas:

Microsoft Anti-Cross Site Scripting Library

Esta herramienta actualmente se encuentra en su versión 1.3 la cual puede ser utilizada tanto en Visual Studio 2005 y Visual Studio 2008. Básicamente lo que hace es codificar los caracteres utilizando una técnica de “lista blanca” otorgando protección contra los ataques XSS. Este acercamiento funciona primero definiendo un set valido de caracteres, y codifica todo fuera de ese segmento (caracteres inválidos o ataques potenciales).

Una vez instalada esta librería vamos a tener una pequeña aplicación a la cual se le entrega la DLL de nuestra aplicación Web, la cual es analizada y nos da un pequeño archivo de configuración el cual nos ayuda a protegernos de algunos de los ataques XSS

blg4

blg5

blg6

Luego habilitamos un HttpModule en nuestro web.config y listo!

blg7

Teniendo como resultado:

blg8

Si bien esto corrige, las vulnerabilidades que pueden haber en un formulario .NET (estos errores no solo afectan a ASP .NET, sino a cualquier tecnología Web), falta aun corregir las que puede provocarse al modificar los parámetros pasados vía la URL de un sitio. Para lo cual basta con incluir los siguientes namespaces:

 using Microsoft.Security.Application;
using Microsoft.Security.Application.SecurityRuntimeEngine;

Luego, para obtener o utilizar uno de los valores pasados por URL, lo hacemos de la siguiente manera:

 string value = AntiXss.HtmlEncode(Request.QueryString["sname"]);

Microsoft Code Analysis Tool .NET (CAT .NET)

Es un pequeño plug-in de Visual Studio que ayuda a identificar fallas de seguridad en el código manejado (C#, VB .NET) de las aplicaciones que se está desarrollando. Esto lo hace analizando los binarios y/o los assemblies de la aplicación y rastreando el flujo de data a través de las sentencias, métodos y assemblies. El plug-in funciona leyendo un assembly y todos sus assemblies referenciados en una aplicación –módulo por módulo- y luego analizando cada uno de los métodos contenidos. Finalmente despliega todos los problemas encontrados en una lista mediante la cual tu puedes saltar directamente al lugar en el código de tu aplicación donde esos problemas fueron detectados.

Esta herramienta ayuda a prevenir los siguientes ataques:

  • Cross Site Scripting
  • SQL Injection
  • Process Command Injection
  • File Canonicalization
  • Exception Information
  • LDAP Injection
  • XPath Injection

blg9