Frameworks y librerías escaneados
Probamos la cobertura mediante fixtures en estos frameworks. Se añaden nuevos patrones en cada release de reglas integradas.
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 — SqlCommand concat
var cmd = new SqlCommand(
$"SELECT * FROM users WHERE name = \'{name}\'", conn);
var reader = cmd.ExecuteReader();
// 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 — BinaryFormatter sobre stream no confiable
var bf = new BinaryFormatter();
var obj = bf.Deserialize(networkStream);
// 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 — Razor @Html.Raw sobre datos user
@Html.Raw(Model.Bio)
// Seguro — salida codificada por defecto
@Model.Bio
Qué detecta StaticCodeAudit (este lenguaje)
- Inyección SQL en
SqlCommandconcat, Dapper interpolación, EF CoreFromSqlRaw, NHibernate HQL concat - XSS en Razor
@Html.Raw, BlazorMarkupString, MVC bypass de codificación manual - Inyección de comando en
Process.Startcon parsing shell - Deserialización
BinaryFormattersobre streams no confiables (aún presente a pesar de deprecación .NET) - Secretos hardcoded en
appsettings.json,web.configcommiteados - CSRF:
[ValidateAntiForgeryToken]faltante en acciones POST - Cookies inseguras (
CookieOptions.Secure,HttpOnly,SameSiteoff) - Path traversal en
File.ReadAllBytes,Path.Combinecon 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