CA2139: Métodos transparentes podem não usar o atributo HandleProcessCorruptingExceptions
Item | Valor |
---|---|
RuleId | CA2139 |
Categoria | Microsoft.Security |
Alteração da falha | Quebra |
Causa
Um método transparente é marcado com o atributo HandleProcessCorruptedStateExceptionsAttribute.
Observação
Esta regra foi preterida. Para obter mais informações, confira Regras preteridas.
Descrição da regra
Esta regra é acionada por qualquer método que seja transparente e tenta tratar uma exceção de corrupção de processo usando o atributo HandleProcessCorruptedStateExceptionsAttribute. Uma exceção de corrupção de processo é uma classificação de exceção do CLR versão 4.0, como AccessViolationException. O atributo HandleProcessCorruptedStateExceptionsAttribute só pode ser usado por métodos de segurança crítica e será ignorado se for aplicado a um método transparente. Para lidar com exceções de corrupção de processo, esse método deve se tornar crítico para segurança ou crítico para segurança e disponível no código transparente.
Como corrigir violações
Para corrigir uma violação dessa regra, remova o atributo HandleProcessCorruptedStateExceptionsAttribute ou marque o método com o atributo SecurityCriticalAttribute ou SecuritySafeCriticalAttribute.
Quando suprimir avisos
Não suprima um aviso nessa regra.
Exemplo
Neste exemplo, um método transparente é marcado com o atributo HandleProcessCorruptedStateExceptionsAttribute e falhará na regra. O método também deve ser marcado com o atributo SecurityCriticalAttribute ou SecuritySafeCriticalAttribute.
using System;
using System.Runtime.InteropServices;
using System.Runtime.ExceptionServices;
using System.Security;
namespace TransparencyWarningsDemo
{
public class HandleProcessCorruptedStateExceptionClass
{
[DllImport("SomeModule.dll")]
private static extern void NativeCode();
// CA2139 violation - transparent method attempting to handle a process corrupting exception
[HandleProcessCorruptedStateExceptions]
public void HandleCorruptingExceptions()
{
try
{
NativeCode();
}
catch (AccessViolationException) { }
}
}
}
Comentários
https://aka.ms/ContentUserFeedback.
Brevemente: Ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja:Submeter e ver comentários