enum em c# - enum em c# - enum em c sharp - enums de flags

Uso indevido de enumerações em C#: como flags simples causam grandes problemas de segurança

Quando uma simples enumeração em C# se torna um risco de segurança

AC # Enum geralmente parece inofensivo, mas pode facilmente criar falhas de privilégio se os valores se sobrepuserem ou se a validação estiver ausente.
Muitos desenvolvedores dependem de enums em C# ou enums de flags para controle de permissões, mas se você não impuser valores únicos e validados, a lógica falhará silenciosamente. Exemplo inseguro, apenas para fins educacionais.

⚠️Exemplo inseguro, apenas para fins educacionais. Não use em produção.

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

				
			

Versão segura:

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


				
			

Nota educacional: Mesmo um enum simples em C# como este pode expor endpoints críticos se valores não verificados passarem pelas camadas de validação.

Vulnerabilidades comuns em enumerações de flags e na lógica de enumeração em C#

A maioria dos problemas de segurança decorre de enumerações de flags ou da conversão insegura de dados de enumeração em C#.

Conversão inválida

⚠️Exemplo inseguro, apenas para fins educacionais:

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


				
			

Os atacantes podem enviar números inteiros indefinidos para acionar caminhos lógicos inesperados.

Versão segura:

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

				
			

Nota educativa: Sempre valide os valores analisados ​​para enums e flags em C#.

Flag C# Enums que deram errado

⚠️Exemplo inseguro, apenas para fins educacionais:

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


				
			

Versão segura:

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

				
			

Nota didática: Defina enumerações de flags usando potências distintas de dois.

Enumerações de flags definidas incorretamente são uma das maneiras mais fáceis de causar escalonamento de privilégios na lógica de enumeração em C#.

Armadilhas de serialização no tratamento de enumerações em C#

A serialização frouxa de valores de enumeração em C# pode expor seu aplicativo a estados inconsistentes ou ataques de desserialização.

⚠️Exemplo inseguro, apenas para fins educacionais:

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

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

				
			

Versão segura:

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



				
			

Nota educacional: Nunca permita a desserialização de enumerações numéricas a partir de entradas não confiáveis.

Prevenindo erros de lógica de enumeração em C# no DevSecOps Pipelines

As equipes de DevSecOps devem automatizar a validação. para cada definição de Enum em C#, Enum em C sharp e Enum de flags para evitar estados inconsistentes.

Exemplo, seguro pipeline integração:

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

				
			

Nota educativa: A análise estática pode detectar enumerações de flags sobrepostas, desserialização insegura e casos de switch ausentes, tudo antes da implantação.

Detecção de problemas com enum e flags no Xygeni

Xygeni Segurança de Código Detecta automaticamente valores de enumeração de sinalizadores sobrepostos ou inconsistentes, análise insegura de enumerações e validação ausente na lógica de autorização em C#.

Xygeni detecta:

  • Valores de enumeração de sinalizadores sobrepostos ou desalinhados
  • Lógica de análise sintática de enumerações insegura em C#
  • Falhas de desserialização no uso de enum C#
  • Ausência de validação ou casos padrão na lógica de autorização

Exemplo:

				
					xygeni scan --detect enums
				
			

Nota educacional: Utilize o Xygeni para garantir a integridade dos enums e proteger os enums de flags.

Xygeni valida definições de enumeração, detecta valores sobrepostos ou inconsistentes e aplica medidas automáticas em CI/CD pipelines através de:

				
					xygeni validate --rules enums

				
			

Uma lógica robusta exige tipagem e validação robustas.

Se usando standard Em C#, enums ou enums de flags complexos exigem que cada valor seja explícito, validado e testado. Números inteiros não verificados ou flags sobrepostas podem levar à escalada de privilégios, alterações de estado inseguras e inconsistências lógicas. Com o Xygeni, as equipes automatizam a detecção e validação de definições de enumeração, garantindo tipagem forte, lógica previsível e comportamento seguro desde o desenvolvimento até a implantação.

sca-tools-software-composição-análise-ferramentas
Priorize, corrija e proteja seus riscos de software
Crie sua conta gratuita.
Nenhum cartão de crédito é necessário.

Garanta o desenvolvimento e a entrega do seu software.

com o Suíte de Produtos da Xygeni