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:

catnet

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:

catnet2

Ejecutamos y esperamos los resultados:

catnet3

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…

catnet4

Seguiré investigando y a partir de ahora utilizaré esta herramienta para auditar mí código.

Esto es todo!!!

Published 10/2/2009 15:52 por Luis Ruiz Pavón
Comparte este post:
http://geeks.ms/blogs/lruiz/archive/2009/02/10/microsoft-code-analysis-tool-net-cat-net-v1-ctp.aspx