C#-Enumeration – C#-Enumeration – C Sharp-Enumeration – Flag-Enumerationen

Missbrauch von C#-Enumerationen: Wie einfache Flags große Sicherheitsprobleme verursachen

Wenn eine einfache C#-Enumeration zu einem Sicherheitsrisiko wird

AC # Enum sieht oft harmlos aus, kann aber leicht zu Berechtigungslücken führen, wenn sich Werte überschneiden oder eine Validierung fehlt.
Viele Entwickler verwenden in C# Enums oder Flag-Enums zur Berechtigungssteuerung. Werden jedoch keine eindeutigen, validierten Werte erzwungen, führt dies unbemerkt zu Fehlern. Unsicheres Beispiel, nur zu Lehrzwecken.

⚠️Unsicheres Beispiel, nur für Bildungszwecke. Nicht in der Produktion verwenden.

public enum UserRole
{
    None = 0,
    User = 1,
    Admin = 2,
    SuperAdmin = 3 // ❌ Overlaps with Admin
}

Sichere Version:

public enum UserRole
{
    None = 0,
    User = 1,
    Admin = 2,
    SuperAdmin = 4
}
// # Educational note: Always assign unique power-of-two values for flag enums.

Pädagogischer Hinweis: Selbst ein einfaches C#-Enum wie dieses kann kritische Schwachstellen aufdecken, wenn ungeprüfte Werte die Validierungsschichten passieren.

Häufige Schwachstellen in Flag-Enumerationen und der C#-Enum-Logik

Die meisten Sicherheitsprobleme entstehen durch Flag-Enumerationen oder unsichere Typumwandlungen von C#-Enumerationsdaten.

Ungültige Typumwandlung

⚠️Unsicheres Beispiel, nur zu Bildungszwecken:

var role = (UserRole)Enum.Parse(typeof(UserRole), input);

Angreifer können undefinierte Ganzzahlen senden, um unerwartete Logikpfade auszulösen.

Sichere Version:

if (!Enum.TryParse(input, out UserRole role) || !Enum.IsDefined(typeof(UserRole), role))
    throw new InvalidOperationException("Invalid role value");

Hinweis für Lehrende: Überprüfen Sie immer die geparsten Werte für C#-Enumerationen und Flag-Enumerationen.

Fehlerhafte Flag-C#-Enums.

⚠️Unsicheres Beispiel, nur zu Bildungszwecken:

[Flags]
public enum Permissions
{
    None = 0,
    Read = 1,
    Write = 2,
    Admin = 3 // ❌ Overlaps with Read + Write
}

Sichere Version:

[Flags]
public enum Permissions
{
    None = 0,
    Read = 1,
    Write = 2,
    Delete = 4,
    Admin = 8
}

Pädagogischer Hinweis: Definieren Sie Flag-Enumerationen mithilfe von unterschiedlichen Zweierpotenzen.

Falsch definierte Flag-Enumerationen sind eine der einfachsten Möglichkeiten, eine Rechteausweitung in der C#-Enumerationslogik zu verursachen.

Serialisierungsfallen bei der C#-Enum-Verarbeitung

Eine ungenaue Serialisierung von C#-Enum-Werten kann Ihre Anwendung inkonsistenten Zuständen aussetzen oder Deserialisierungsangriffe.

⚠️Unsicheres Beispiel, nur zu Bildungszwecken:

var data = JsonSerializer.Deserialize<User>(payload);

If payload contains "Role": 99, it maps to an invalid c# enum enum value.

Sichere Version:

var opts = new JsonSerializerOptions
{
    Converters = { new JsonStringEnumConverter(JsonNamingPolicy.CamelCase, allowIntegerValues: false) }
};
var data = JsonSerializer.Deserialize<User>(payload, opts);


Pädagogischer Hinweis: Die Deserialisierung numerischer Aufzählungen aus nicht vertrauenswürdigen Eingaben darf niemals zugelassen werden.

Vermeidung von C#-Enum-Logikfehlern in DevSecOps Pipelines

DevSecOps-Teams sollten die Validierung automatisieren. für jede C # Enum, C sharp enum und flag enum Definition, um inkonsistente Zustände zu verhindern.

Beispiel: sicher pipeline Integration:

- name: Validate enum definitions
  run: |
    dotnet test --filter Category=EnumValidation
    xygeni validate --rules enums
# Never expose real tokens or internal URLs in pipelines

Hinweis für Pädagogen: Durch statische Analyse lassen sich überlappende Flag-Enumerationen, unsichere Deserialisierung und fehlende Switch-Anweisungen erkennen – und das alles vor der Bereitstellung.

Erkennung von Enum- und Flag-Problemen mit Xygeni

Xygeni Code Security Erkennt automatisch überlappende oder inkonsistente Flag-Enum-Werte, unsicheres Enum-Parsing und fehlende Validierung in der C#-Autorisierungslogik.

Xygeni erkennt:

  • Überlappende oder nicht ausgerichtete Flag-Enum-Werte
  • Unsichere Enum-Parsing-Logik in C#
  • Deserialisierungsfehler bei der Verwendung von C#-Enums
  • Fehlende Validierungs- oder Standardfälle in der Autorisierungslogik

Ejemplo:

xygeni scan --detect enums

Pädagogischer Hinweis: Verwenden Sie Xygeni, um die Integrität von Enumerationen zu erzwingen und Flag-Enumerationen zu sichern.

Xygeni validiert Enum-Definitionen, erkennt sich überschneidende oder inkonsistente Werte und wendet automatische Durchsetzung an. CI/CD pipelines durch:

xygeni validate --rules enums

Starke Logik erfordert starke Typisierung und Validierung.

Ob mit standard Bei C#-Enumerationen oder komplexen Flag-Enumerationen muss jeder Wert explizit angegeben, validiert und getestet werden. Ungeprüfte Ganzzahlen oder sich überschneidende Flags können zu Rechteausweitung, unsicheren Zustandsänderungen und logischen Inkonsistenzen führen. Mit Xygeni automatisieren Teams die Erkennung und Validierung von Enum-Definitionen und gewährleisten so eine starke Typisierung, vorhersehbare Logik und sicheres Verhalten von der Entwicklung bis zum Deployment.

SCA-Tools-Software-Zusammensetzungs-Analyse-Tools
Priorisieren, beheben und sichern Sie Ihre Softwarerisiken
7-Tage kostenlose Testversion
Keine Kreditkarte erforderlich

Sichern Sie Ihre Softwareentwicklung und -bereitstellung

mit der Xygeni-Produktsuite