Aller au contenu principal

C# (.NET) · SAST

SAST C# / .NET qui tourne entièrement hors-ligne

Auditez ASP.NET Core, Entity Framework, Dapper et NHibernate contre les vulnérabilités OWASP Top 10, gadgets de désérialisation et dérive de configuration — sans quitter votre machine.

Frameworks & bibliothèques scannés

Nous testons la couverture sur ces frameworks via fixtures. De nouveaux patterns sont ajoutés à chaque release de règles builtin.

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

Principales classes CWE détectées

Ces classes CWE apparaissent le plus souvent dans les codebases modernes de ce langage. StaticCodeAudit livre des règles dédiées pour chacune, mappées à OWASP Top 10 / ISO 27001 / ASVS quand pertinent.

CWE-89

Injection SQL

Concaténation de strings dans SqlCommand.CommandText, Dapper Execute($"..."), EF Core FromSqlRaw avec interpolation, NHibernate HQL avec concat.

Détecté par la règle SCA : sql_injection_concat_csharp

CWE-78

Injection de commande OS

Process.Start(new ProcessStartInfo { FileName = "cmd", Arguments = userInput }) avec parsing shell. UseShellExecute = true augmente la surface d'attaque.

Détecté par la règle SCA : command_injection_csharp

CWE-502

Désérialisation non sécurisée

BinaryFormatter.Deserialize (obsolète depuis .NET 5 mais encore trouvé), NetDataContractSerializer, SoapFormatter sur streams non fiables.

Détecté par la règle SCA : unsafe_deserialization

CWE-79

Cross-Site Scripting (XSS)

Razor @Html.Raw(model.Bio) avec données non fiables, MVC HttpUtility.HtmlEncode bypassé, Blazor MarkupString sur entrée user.

Détecté par la règle SCA : xss_raw_html

CWE-798

Identifiants en dur

Chaînes de connexion dans appsettings.json committé, clé de signature JWT en const string, secrets Azure dans web.config.

Détecté par la règle SCA : hardcoded_secret

CWE-352

CSRF

[ValidateAntiForgeryToken] manquant sur actions POST, options.SuppressXFrameOptionsHeader = true dans Startup.

Détecté par la règle SCA : csrf_missing_aspnet

Vulnérable vs. sain — trois exemples rapides

CWE-89 Détecté par la règle SCA : sql_injection_concat_csharp
❌ Vulnérable
// Vulnérable — SqlCommand concat
var cmd = new SqlCommand(
    $"SELECT * FROM users WHERE name = \'{name}\'", conn);
var reader = cmd.ExecuteReader();
✅ Sain
// Sain — paramètres
var cmd = new SqlCommand(
    "SELECT * FROM users WHERE name = @name", conn);
cmd.Parameters.AddWithValue("@name", name);
var reader = cmd.ExecuteReader();
CWE-502 Détecté par la règle SCA : unsafe_deserialization
❌ Vulnérable
// Vulnérable — BinaryFormatter sur stream non fiable
var bf = new BinaryFormatter();
var obj = bf.Deserialize(networkStream);
✅ Sain
// Sain — System.Text.Json avec schéma connu
var obj = JsonSerializer.Deserialize<UserDto>(
    networkStream,
    new JsonSerializerOptions { PropertyNameCaseInsensitive = true });
CWE-79 Détecté par la règle SCA : xss_raw_html
❌ Vulnérable
// Vulnérable — Razor @Html.Raw sur données user
@Html.Raw(Model.Bio)
✅ Sain
// Sain — sortie encodée par défaut
@Model.Bio

Ce que StaticCodeAudit détecte (ce langage)

  • Injection SQL dans SqlCommand concat, Dapper interpolation, EF Core FromSqlRaw, NHibernate HQL concat
  • XSS dans Razor @Html.Raw, Blazor MarkupString, MVC bypass d'encodage manuel
  • Injection de commande dans Process.Start avec parsing shell
  • Désérialisation BinaryFormatter sur streams non fiables (encore présent malgré la dépréciation .NET)
  • Secrets en dur dans appsettings.json, web.config committés
  • CSRF : [ValidateAntiForgeryToken] manquant sur actions POST
  • Cookies non sécurisés (CookieOptions.Secure, HttpOnly, SameSite off)
  • Path traversal dans File.ReadAllBytes, Path.Combine avec chemins user
  • XXE dans XmlDocument, XmlReaderSettings.DtdProcessing = Parse
  • Crypto non sécurisée (MD5/SHA1 sécurité, mode ECB, clés en dur)
  • JWT algorithme none, secret HS256 en dur, pas de claim d'expiration
  • Open redirect via Redirect(Request.Query["url"])
  • APIs dépréciées (BinaryFormatter, NetDataContractSerializer, SHA1Managed)
  • Misconfigurations CI/CD (.gitlab-ci, GitHub Actions, feed NuGet non sécurisé)

Auditez votre code

Auditez ASP.NET Core, Entity Framework, Dapper et NHibernate contre les vulnérabilités OWASP Top 10, gadgets de désérialisation et dérive de configuration — sans quitter votre machine.

Télécharger le binaire démo Réserver une démo guidée