Microsoft Code Analysis Tool .NET (CAT.NET) v1 CTP
CAT.NET es un Add-in para Visual Studio, qué también podemos utilizar a través de la línea de comandos, para analizar el código de nuestras aplicaciones y detectar vulnerabilidades ya conocidas como Cross Site Scripting, SQL Injection, Process Command Injection, File Canonicalization, Exception Information, LDAP Injection, XPATH Injection y Redirection to User Controlled Site.
Lo he instalado y he decido probarlo con un mini-cutre web site:
La página UserInfo.aspx es vulnerable a SQL Injection:
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
User user = new User();
string _userid = Request.QueryString["userid"];
using (SqlConnection conexion = new SqlConnection(""))
{
conexion.Open();
///Pruebas SQL Injection CAT.NET
SqlCommand comando = new SqlCommand();
comando.CommandText = "SELECT Name, Surname FROM Users WHERE Id = '" + _userid + "'";
comando.Connection = conexion;
IDataReader reader = comando.ExecuteReader();
if (reader.Read())
{
user.Id = _userid;
user.Name = reader.GetString(0);
user.Surname = reader.GetString(1);
}
}
}
}
Y en el Handler File.aspx he puesto el código de la famosa vulnerabilidad de canonicalización de BlogEngine para ver sí también lo detecta:
public void ProcessRequest(HttpContext context)
{
if (!string.IsNullOrEmpty(context.Request.QueryString["file"]))
{
string fileName = context.Request.QueryString["file"];
string folder = "/files/";
if (System.IO.File.Exists(context.Server.MapPath(folder) + fileName))
{
context.Response.AppendHeader("Content-Disposition", "attachment; filename=" + context.Server.UrlEncode(fileName));
context.Response.Cache.SetCacheability(HttpCacheability.NoCache);
context.Server.Transfer(folder + fileName, false);
}
else
{
context.Response.Status = "404 Bad Request";
}
}
}
Arrancamos CAT.NET:
Ejecutamos y esperamos los resultados:
Como se puede observar, ha detectado la vulnerabilidad de SQL Injection, indicando las líneas donde se encuentran dichas vulnerabilidades aunque la del Handler no.
Podemos acceder a los ficheros de Reglas de CAT.NET, añadir nuevas reglas, modificar las existentes, habilitarlas/deshabilitarlas…
Seguiré investigando y a partir de ahora utilizaré esta herramienta para auditar mí código.
Esto es todo!!!