Ir al contenido principal

C# (.NET) · SAST

SAST C# / .NET que se ejecuta totalmente sin conexión

Audite ASP.NET Core, Entity Framework, Dapper y NHibernate contra vulnerabilidades OWASP Top 10, gadgets de deserialización y deriva de configuración — sin salir de su máquina.

Frameworks y librerías escaneados

Probamos la cobertura mediante fixtures en estos frameworks. Se añaden nuevos patrones en cada release de reglas integradas.

ASP.NET Core ASP.NET MVC Entity Framework Core Dapper NHibernate Razor Blazor SignalR IdentityServer NewtonsoftJson System.Text.Json BouncyCastle.NetCore Polly AutoMapper

Principales clases CWE detectadas

Estas clases CWE aparecen con mayor frecuencia en bases de código modernas de este lenguaje. StaticCodeAudit incluye reglas dedicadas para cada una, mapeadas a OWASP Top 10 / ISO 27001 / ASVS cuando es pertinente.

CWE-89

Inyección SQL

Concatenación de strings en SqlCommand.CommandText, Dapper Execute($"..."), EF Core FromSqlRaw con interpolación, NHibernate HQL con concat.

Detectado por la regla SCA: sql_injection_concat_csharp

CWE-78

Inyección de comando OS

Process.Start(new ProcessStartInfo { FileName = "cmd", Arguments = userInput }) con parsing shell. UseShellExecute = true aumenta la superficie de ataque.

Detectado por la regla SCA: command_injection_csharp

CWE-502

Deserialización insegura

BinaryFormatter.Deserialize (obsoleto desde .NET 5 pero aún se encuentra), NetDataContractSerializer, SoapFormatter sobre streams no confiables.

Detectado por la regla SCA: unsafe_deserialization

CWE-79

Cross-Site Scripting (XSS)

Razor @Html.Raw(model.Bio) con datos no confiables, MVC HttpUtility.HtmlEncode bypaseado, Blazor MarkupString sobre entrada user.

Detectado por la regla SCA: xss_raw_html

CWE-798

Credenciales hardcoded

Cadenas de conexión en appsettings.json commiteado, clave firma JWT como const string, secretos Azure en web.config.

Detectado por la regla SCA: hardcoded_secret

CWE-352

CSRF

[ValidateAntiForgeryToken] faltante en acciones POST, options.SuppressXFrameOptionsHeader = true en Startup.

Detectado por la regla SCA: csrf_missing_aspnet

Vulnerable vs. seguro — tres ejemplos rápidos

CWE-89 Detectado por la regla SCA: sql_injection_concat_csharp
❌ Vulnerable
// Vulnerable — SqlCommand concat
var cmd = new SqlCommand(
    $"SELECT * FROM users WHERE name = \'{name}\'", conn);
var reader = cmd.ExecuteReader();
✅ Seguro
// Seguro — parámetros
var cmd = new SqlCommand(
    "SELECT * FROM users WHERE name = @name", conn);
cmd.Parameters.AddWithValue("@name", name);
var reader = cmd.ExecuteReader();
CWE-502 Detectado por la regla SCA: unsafe_deserialization
❌ Vulnerable
// Vulnerable — BinaryFormatter sobre stream no confiable
var bf = new BinaryFormatter();
var obj = bf.Deserialize(networkStream);
✅ Seguro
// Seguro — System.Text.Json con schema conocido
var obj = JsonSerializer.Deserialize<UserDto>(
    networkStream,
    new JsonSerializerOptions { PropertyNameCaseInsensitive = true });
CWE-79 Detectado por la regla SCA: xss_raw_html
❌ Vulnerable
// Vulnerable — Razor @Html.Raw sobre datos user
@Html.Raw(Model.Bio)
✅ Seguro
// Seguro — salida codificada por defecto
@Model.Bio

Qué detecta StaticCodeAudit (este lenguaje)

  • Inyección SQL en SqlCommand concat, Dapper interpolación, EF Core FromSqlRaw, NHibernate HQL concat
  • XSS en Razor @Html.Raw, Blazor MarkupString, MVC bypass de codificación manual
  • Inyección de comando en Process.Start con parsing shell
  • Deserialización BinaryFormatter sobre streams no confiables (aún presente a pesar de deprecación .NET)
  • Secretos hardcoded en appsettings.json, web.config commiteados
  • CSRF: [ValidateAntiForgeryToken] faltante en acciones POST
  • Cookies inseguras (CookieOptions.Secure, HttpOnly, SameSite off)
  • Path traversal en File.ReadAllBytes, Path.Combine con rutas user
  • XXE en XmlDocument, XmlReaderSettings.DtdProcessing = Parse
  • Cripto insegura (MD5/SHA1 seguridad, modo ECB, claves hardcoded)
  • JWT algoritmo none, secreto HS256 hardcoded, sin claim de expiración
  • Open redirect vía Redirect(Request.Query["url"])
  • APIs deprecadas (BinaryFormatter, NetDataContractSerializer, SHA1Managed)
  • Misconfiguraciones CI/CD (.gitlab-ci, GitHub Actions, feed NuGet inseguro)

Audite su código

Audite ASP.NET Core, Entity Framework, Dapper y NHibernate contra vulnerabilidades OWASP Top 10, gadgets de deserialización y deriva de configuración — sin salir de su máquina.

Descargar el binario demo Reservar una demo guiada