Compartilhar via


Regras de segurança

As regras de segurança dão suporte a bibliotecas e aplicativos mais seguros. Essas regras ajudam a evitar falhas de segurança em seu programa. Se você desabilitar uma delas, deverá marcar claramente a razão no código e também informar o agente de segurança designado para o projeto de desenvolvimento.

Nesta seção

Regra Descrição
CA2100: Examinar consultas SQL em busca de vulnerabilidades de segurança Um método define a propriedade System.Data.IDbCommand.CommandText usando uma cadeia de caracteres criada com base em um argumento da cadeia de caracteres para o método. Esta regra pressupõe que o argumento da cadeia de caracteres contenha a entrada do usuário. Uma cadeia de caracteres de comando SQL criada com base na entrada do usuário é vulnerável a ataques de injeção SQL.
CA2109: Examinar manipuladores de eventos visíveis Um método público ou protegido de tratamento de eventos foi detectado. Os métodos de tratamento de eventos não devem ser expostos, a menos que seja absolutamente necessário.
CA2119: Selar métodos que atendem a interfaces particulares Um tipo público herdável fornece uma implementação de método substituível de uma interface (Friend no Visual Basic) interna. Para corrigir uma violação dessa regra, evite que o método seja substituído fora do assembly.
CA2153: evitar o tratamento de exceções de estado corrompidas As CSE (Exceções de Estado Corrompido) indicam que há corrupção de memória em seu processo. Capturá-las em vez de permitir que o processo falhe pode levar a vulnerabilidades de segurança, pois um invasor poderia colocar um exploit na região da memória corrompida.
CA2300: Não usar o desserializador BinaryFormatter não seguro Desserializadores não seguros são vulneráveis ao desserializar dados não confiáveis. Um invasor pode modificar os dados serializados visando incluir tipos inesperados para injetar objetos com efeitos colaterais mal-intencionados.
CA2301: Não chamar BinaryFormatter.Deserialize sem antes definir BinaryFormatter.Binder Desserializadores não seguros são vulneráveis ao desserializar dados não confiáveis. Um invasor pode modificar os dados serializados visando incluir tipos inesperados para injetar objetos com efeitos colaterais mal-intencionados.
CA2302: Verificar se o BinaryFormatter.Binder está definido antes de chamar BinaryFormatter.Deserialize Desserializadores não seguros são vulneráveis ao desserializar dados não confiáveis. Um invasor pode modificar os dados serializados visando incluir tipos inesperados para injetar objetos com efeitos colaterais mal-intencionados.
CA2305: Não usar o desserializador inseguro LosFormatter Desserializadores não seguros são vulneráveis ao desserializar dados não confiáveis. Um invasor pode modificar os dados serializados visando incluir tipos inesperados para injetar objetos com efeitos colaterais mal-intencionados.
CA2310: Não usar o desserializador inseguro NetDataContractSerializer Desserializadores não seguros são vulneráveis ao desserializar dados não confiáveis. Um invasor pode modificar os dados serializados visando incluir tipos inesperados para injetar objetos com efeitos colaterais mal-intencionados.
CA2311: Não desserializar sem definir primeiro NetDataContractSerializer.Binder Desserializadores não seguros são vulneráveis ao desserializar dados não confiáveis. Um invasor pode modificar os dados serializados visando incluir tipos inesperados para injetar objetos com efeitos colaterais mal-intencionados.
CA2312: Verificar se NetDataContractSerializer.Binder foi definido antes de desserializar Desserializadores não seguros são vulneráveis ao desserializar dados não confiáveis. Um invasor pode modificar os dados serializados visando incluir tipos inesperados para injetar objetos com efeitos colaterais mal-intencionados.
CA2315: Não usar o desserializador inseguro ObjectStateFormatter Desserializadores não seguros são vulneráveis ao desserializar dados não confiáveis. Um invasor pode modificar os dados serializados visando incluir tipos inesperados para injetar objetos com efeitos colaterais mal-intencionados.
CA2321: Não desserializar com JavaScriptSerializer usando um SimpleTypeResolver Desserializadores não seguros são vulneráveis ao desserializar dados não confiáveis. Um invasor pode modificar os dados serializados visando incluir tipos inesperados para injetar objetos com efeitos colaterais mal-intencionados.
CA2322: Garantir que o JavaScriptSerializer não seja inicializado com SimpleTypeResolver antes de desserializar Desserializadores não seguros são vulneráveis ao desserializar dados não confiáveis. Um invasor pode modificar os dados serializados visando incluir tipos inesperados para injetar objetos com efeitos colaterais mal-intencionados.
CA2326: Não usar valores de TypeNameHandling diferentes de None Desserializadores não seguros são vulneráveis ao desserializar dados não confiáveis. Um invasor pode modificar os dados serializados visando incluir tipos inesperados para injetar objetos com efeitos colaterais mal-intencionados.
CA2327: Não usar JsonSerializerSettings não seguras Desserializadores não seguros são vulneráveis ao desserializar dados não confiáveis. Um invasor pode modificar os dados serializados visando incluir tipos inesperados para injetar objetos com efeitos colaterais mal-intencionados.
CA2328: Verificar se as JsonSerializerSettings são seguras Desserializadores não seguros são vulneráveis ao desserializar dados não confiáveis. Um invasor pode modificar os dados serializados visando incluir tipos inesperados para injetar objetos com efeitos colaterais mal-intencionados.
CA2329: Não desserializar com JsonSerializer usando uma configuração não segura Desserializadores não seguros são vulneráveis ao desserializar dados não confiáveis. Um invasor pode modificar os dados serializados visando incluir tipos inesperados para injetar objetos com efeitos colaterais mal-intencionados.
CA2330: Verificar se o JsonSerializer tem uma configuração segura durante a desserialização Desserializadores não seguros são vulneráveis ao desserializar dados não confiáveis. Um invasor pode modificar os dados serializados visando incluir tipos inesperados para injetar objetos com efeitos colaterais mal-intencionados.
CA2350: verifique se a entrada do DataTable.ReadXml() é confiável Quando você desserializa um DataTable com entrada não confiável, um invasor pode criar uma entrada mal-intencionada para executar um ataque de negação de serviço. Pode haver vulnerabilidades desconhecidas de execução de código remoto.
CA2351: verifique se a entrada do DataSet.ReadXml() é confiável Quando você desserializa um DataSet com entrada não confiável, um invasor pode criar uma entrada mal-intencionada para executar um ataque de negação de serviço. Pode haver vulnerabilidades desconhecidas de execução de código remoto.
CA2352: DataSet ou DataTable não seguros no tipo serializável podem ser vulneráveis a ataques de execução de código remoto Uma classe ou um struct marcado com SerializableAttribute contém um campo ou propriedade DataSet ou DataTable e não tem um GeneratedCodeAttribute.
CA2353: DataSet ou DataTable não seguros no tipo serializável Uma classe ou um struct marcado com um atributo de serialização XML ou um atributo de contrato de dados contém um campo ou propriedade DataSet ou DataTable.
CA2354: DataSet ou DataTable não seguros no grafo de objetos desserializados podem ser vulneráveis a ataques de execução de código remoto Desserialização com um System.Runtime.Serialization.IFormatter serializado, em que o grafo de objetos do tipo convertido pode incluir DataSet ou DataTable.
CA2355: DataSet ou DataTable não seguros no grafo de objetos desserializados Desserialização quando o grafo de objetos do tipo convertido ou especificado pode incluir DataSet ou DataTable.
CA2356: DataSet ou DataTable não seguro no grafo de objetos desserializados da Web Um método com System.Web.Services.WebMethodAttribute ou System.ServiceModel.OperationContractAttribute tem um parâmetro que pode referenciar DataSet ou DataTable.
CA2361: verifique se a classe gerada automaticamente que contém DataSet.ReadXml() não é usada quando os dados não são confiáveis Quando você desserializa um DataSet com entrada não confiável, um invasor pode criar uma entrada mal-intencionada para executar um ataque de negação de serviço. Pode haver vulnerabilidades desconhecidas de execução de código remoto.
CA2362: DataSet ou DataTable não seguros em um tipo serializável gerado automaticamente podem ser vulneráveis a ataques de execução remota de código Desserialização de uma entrada não confiável com BinaryFormatter, em que o grafo de objetos desserializados contém DataSet ou DataTable e um invasor pode criar um conteúdo mal-intencionado para executar um ataque de execução de código remoto.
CA3001: Examinar código quanto a vulnerabilidades de injeção de SQL Ao trabalhar com comandos SQL e de entrada não confiáveis, tenha atenção quanto a ataques de injeção de SQL. Um ataque de injeção de SQL pode executar comandos SQL mal-intencionados que comprometem a segurança e a integridade do aplicativo.
CA3002: Examinar código quanto a vulnerabilidades de XSS Ao trabalhar com entradas não confiáveis de solicitações da Web, tenha atenção quanto a ataques XSS (cross-site scripting). Um ataque XSS injeta uma entrada não confiável na saída HTML bruta, a fim de que o invasor execute scripts mal-intencionados ou modifique maliciosamente conteúdos em sua página da Web.
CA3003: Examinar código quanto a vulnerabilidades de injeção de caminho Ao trabalhar com entradas não confiáveis de solicitações da Web, lembre-se de usar a entrada controlada pelo usuário ao especificar caminhos para arquivos.
CA3004: Examinar código quanto a vulnerabilidades de divulgação de informações A divulgação de informações de exceção fornece aos invasores insights sobre a parte interna do aplicativo, o que pode ajudá-los a encontrar outras vulnerabilidades a serem exploradas.
CA3006: Examinar código quanto a vulnerabilidades de injeção de comando de processo Ao trabalhar com entradas não confiáveis, tenha atenção quanto a ataques de injeção de comando. Um ataque de injeção de comando pode executar comandos mal-intencionados no sistema operacional subjacente, comprometendo a segurança e a integridade do servidor.
CA3007: Examinar código quanto a vulnerabilidades de redirecionamento aberto Ao trabalhar com entradas não confiáveis, tenha atenção quanto a vulnerabilidades de redirecionamento aberto. Um invasor pode explorar uma vulnerabilidade de redirecionamento aberto usando seu site para dar a aparência de uma URL legítima, mas realizando o redirecionamento dos visitantes desavisados para uma página da Web de phishing ou mal-intencionada.
CA3008: Examinar código quanto a vulnerabilidades de injeção de XPath Ao trabalhar com entradas não confiáveis, tenha atenção quanto a ataques de injeção de XPath. A construção de consultas XPath com entradas não confiáveis pode permitir que um invasor manipule maliciosamente a consulta para retornar um resultado não intencional e, possivelmente, divulgar o conteúdo do XML consultado.
CA3009: Examinar código quanto a vulnerabilidades de injeção de XML Ao trabalhar com entradas não confiáveis, tenha atenção quanto a ataques de injeção de XML.
CA3010: Examinar código quanto a vulnerabilidades de injeção de XAML Ao trabalhar com entradas não confiáveis, tenha atenção quanto a ataques de injeção de XAML. XAML é uma linguagem de marcação que representa diretamente a instanciação e execução de objetos. Isso significa que os elementos criados em XAML podem interagir com recursos do sistema (por exemplo, acesso à rede e E/S do sistema de arquivos).
CA3011: Examinar código quanto a vulnerabilidades de injeção de DLL Ao trabalhar com entradas não confiáveis, tenha atenção quanto ao carregamento de códigos não confiáveis. Se o aplicativo Web carregar códigos não confiáveis, um invasor poderá injetar DLLs mal-intencionadas no processo e executar códigos prejudiciais.
CA3012: Examinar código quanto a vulnerabilidades de injeção de regex Ao trabalhar com entradas não confiáveis, tenha atenção quanto a ataques de injeção de regex. Um invasor pode usar a injeção de regex para modificar maliciosamente uma expressão regular, a fim de que ela corresponda a resultados não intencionais ou consuma CPU excessiva, resultando em um ataque de negação de serviço.
CA3061: Não adicionar esquema por URL Não use a sobrecarga não segura do método Add porque isso pode gerar referências externas perigosas.
CA3075: Processamento de DTD não seguro Se você usar instâncias de DTDProcessing inseguras ou referenciar fontes de entidade externas, o analisador poderá aceitar entradas não confiáveis e divulgar informações confidenciais a invasores.
CA3076: Execução de script XSLT não seguro Se você executar XSLT (Extensible StyleSheet Language Transformations) em aplicativos .NET de maneira não segura, o processador poderá resolver referências de URI não confiáveis que poderiam divulgar informações confidenciais a invasores, resultando em ataques entre sites e de negação de serviço.
CA3077: Processamento não seguro no design de API, no documento XML e no leitor de texto XML Ao criar uma API derivada de XMLDocument e de XMLTextReader, tenha atenção quanto a DtdProcessing. Usar instâncias de DTDProcessing não seguras ao referenciar ou resolver fontes de entidade externas ou definir valores não seguros no XML pode levar à divulgação de informações.
CA3147: Marcar manipuladores de verbo com ValidateAntiForgeryToken Ao criar um controlador MVC do ASP.NET, tenha atenção quanto a ataques CSRF (solicitação intersite forjada). Um ataque de solicitação intersite forjada pode enviar solicitações mal-intencionadas de um usuário autenticado para o controlador MVC do ASP.NET.
CA5350: Não usar algoritmos de criptografia fracos Algoritmos de criptografia fracos e funções de hash são usados hoje por vários motivos, mas não devem ser usados para garantir a confidencialidade ou integridade dos dados protegidos. Esta regra é disparada quando algoritmos TripleDES, SHA1 ou RIPEMD160 são localizados no código.
CA5351: não usar algoritmos de criptografia desfeitos Algoritmos criptográficos desfeitos não são considerados seguros e seu uso é fortemente desencorajado. Esta regra é disparada quando o algoritmo de hash MD5 ou os algoritmos de criptografia DES ou RC2 são localizados no código.
CA5358: Não usar modos de criptografia não seguros Não usar modos de criptografia não seguros
CA5359: Não desabilitar a validação de certificado Um certificado pode ajudar a autenticar a identidade do servidor. Os clientes devem validar o certificado do servidor para garantir que as solicitações sejam enviadas ao servidor desejado. Se ServerCertificateValidationCallback sempre retornar true, qualquer certificado passará pela validação.
CA5360: Não chamar métodos perigosos durante a desserialização A desserialização não segura é uma vulnerabilidade que ocorre quando dados não confiáveis são usados para abusar da lógica de um aplicativo, realizar um ataque DoS (negação de serviço) ou até mesmo executar códigos arbitrários após a desserialização. É muito provável que usuários mal-intencionados abusem desses recursos de desserialização quando o aplicativo está desserializando dados não confiáveis sob controle deles. Especificamente, a invocação de métodos perigosos no processo de desserialização. Ataques de desserialização não segura bem-sucedidos podem permitir que um invasor realize ataques DoS, bypasses de autenticação e execução de código remoto.
CA5361: não desabilitar o uso de criptografia forte do Schannel A configuração de Switch.System.Net.DontEnableSchUseStrongCrypto como true enfraquece a criptografia usada em conexões TLS (Transport Layer Security) de saída. Uma criptografia mais fraca pode comprometer a confidencialidade da comunicação entre o aplicativo e o servidor, facilitando a escuta de dados confidenciais por invasores.
CA5362: Ciclo de referência potencial no grafo de objetos desserializado Ao desserializar dados não confiáveis, qualquer código que processe o grafo de objetos desserializado precisará lidar com ciclos de referência sem entrar em loops infinitos. Isso inclui tanto o código que faz parte de um retorno de chamada de desserialização quanto aquele que processa o grafo de objetos após a conclusão da desserialização. Caso contrário, um invasor poderia executar um ataque de negação de serviço com dados mal-intencionados que contêm um ciclo de referência.
CA5363: Não desabilitar a validação de solicitação A validação de solicitação é um recurso no ASP.NET que examina solicitações HTTP e determina se elas contêm conteúdos potencialmente perigosos que podem levar a ataques de injeção, incluindo cross-site scripting.
CA5364: Não use protocolos de segurança preteridos O TLS (Transport Layer Security) protege a comunicação entre computadores, mais comumente com o HTTPS (Hypertext Transfer Protocol Secure). Versões mais antigas do protocolo TLS são menos seguras do que o TLS 1.2 e o TLS 1.3 e mais propensas a terem novas vulnerabilidades. Evite versões de protocolo mais antigas para minimizar o risco.
CA5365: Não desabilitar a verificação de cabeçalho HTTP A verificação de cabeçalho HTTP permite a codificação do retorno de carro e dos caracteres de nova linha, \r e \n, encontrados em cabeçalhos de resposta. Essa codificação pode ajudar a evitar ataques de injeção que exploram um aplicativo que ecoa dados não confiáveis contidos no cabeçalho.
CA5366: Usar XmlReader para XML da leitura do conjunto de dados O uso de DataSet para ler XML com dados não confiáveis pode carregar referências externas perigosas, que devem ser restringidas usando um XmlReader com um resolvedor seguro ou com o processamento de DTD desabilitado.
CA5367: Não serializar tipos com campos de ponteiro Esta regra verifica se há uma classe serializável com uma propriedade ou um campo de ponteiro. Os membros que não podem ser serializados podem ser um ponteiro, como membros estáticos ou campos marcados com NonSerializedAttribute.
CA5368: Definir ViewStateUserKey para as classes derivadas da página Definir a propriedade ViewStateUserKey pode ajudar a evitar ataques no aplicativo, pois permite atribuir um identificador à variável de estado de exibição para usuários individuais a fim de que invasores não possam usar a variável para gerar um ataque. Caso contrário, haverá vulnerabilidades relacionadas a solicitações intersite forjadas.
CA5369: Usar o XmlReader para desserializar O processamento de esquemas DTD e XML não confiáveis pode habilitar o carregamento de referências externas perigosas, que devem ser restringidas usando um XmlReader com um resolvedor seguro ou o processamento de esquema embutido DTD e XML desabilitado.
CA5370: Usar o XmlReader para validar o leitor O processamento de esquemas DTD e XML não confiáveis pode permitir o carregamento de referências externas perigosas. Esse carregamento perigoso pode ser restringido usando um XmlReader com um resolvedor seguro ou o processamento de esquema embutido DTD e XML desabilitado.
CA5371: Usar o XmlReader para a leitura do esquema O processamento de esquemas DTD e XML não confiáveis pode permitir o carregamento de referências externas perigosas. Usar um XmlReader com um resolvedor seguro ou o processamento de esquema embutido DTD e XML desabilitado ajuda a aplicar essa restrição.
CA5372: Usar o XmlReader para o XPathDocument O processamento de XML de dados não confiáveis pode carregar referências externas perigosas, que devem ser restringidas usando um XmlReader com um resolvedor seguro ou o processamento de DTD desabilitado.
CA5373: Não usar a função de derivação de chave obsoleta Esta regra detecta a invocação de métodos System.Security.Cryptography.PasswordDeriveBytes e Rfc2898DeriveBytes.CryptDeriveKey de derivação de chave fraca. System.Security.Cryptography.PasswordDeriveBytes usou um algoritmo fraco PBKDF1.
CA5374: Não usar XslTransform Esta regra verifica se System.Xml.Xsl.XslTransform criou uma instância no código. System.Xml.Xsl.XslTransform agora está obsoleto e não deve ser usado.
CA5375: Não usar a assinatura de acesso compartilhado da conta Uma SAS de conta pode delegar acesso a operações de leitura, gravação e exclusão em contêineres de blob, tabelas, filas e compartilhamentos de arquivos que não têm permissão com uma SAS de serviço. No entanto, ela não dá suporte a políticas em nível de contêiner e tem menos flexibilidade e controle sobre as permissões concedidas. Se ela for obtida por usuários mal-intencionados, sua conta de armazenamento será comprometida facilmente.
CA5376: Usar SharedAccessProtocol HttpsOnly A SAS é um dado confidencial que não pode ser transportado em texto sem formatação em HTTP.
CA5377: Usar política de acesso no nível de contêiner Uma política de acesso em nível de contêiner pode ser modificada ou revogada a qualquer momento. Ela fornece maior flexibilidade e controle sobre as permissões concedidas.
CA5378: Não desabilite ServicePointManagerSecurityProtocols A configuração de DisableUsingServicePointManagerSecurityProtocols como true limita as conexões TLS do WCF (Windows Communication Framework) ao uso do TLS 1.0. Essa versão do TLS será preterida.
CA5379: garantir que o algoritmo da função de derivação de chaves seja suficientemente forte A classe Rfc2898DeriveBytes usa o algoritmo SHA1 como padrão. Você deve especificar o algoritmo de hash a ser usado em algumas sobrecargas do construtor com SHA256 ou superior. Observe que a propriedade HashAlgorithm tem apenas um acessador get e não tem um modificador overridden.
CA5380: Não adicionar certificados ao repositório raiz Esta regra detecta o código que potencialmente adiciona um certificado ao repositório de certificados de Autoridades de Certificação Raiz Confiáveis. Por padrão, o repositório de certificados de Autoridades de Certificação Raiz Confiáveis é configurado com um conjunto de CAs públicas que atende aos requisitos do programa de certificado raiz da Microsoft.
CA5381: Verificar que os certificados não sejam adicionados ao repositório raiz Esta regra detecta o código que potencialmente adiciona um certificado ao repositório de certificados de Autoridades de Certificação Raiz Confiáveis. Por padrão, o repositório de certificados de Autoridades de Certificação Raiz Confiáveis é configurado com um conjunto de CAs (autoridades de certificação) públicas que atende aos requisitos do programa de certificado raiz da Microsoft.
CA5382: Usar cookies seguros no ASP.NET Core Os aplicativos disponíveis por HTTPS devem usar cookies seguros, que indicam ao navegador que o cookie só deve ser transmitido usando o TLS (Transport Layer Security).
CA5383: Garantir o uso de cookies seguros no ASP.NET Core Os aplicativos disponíveis por HTTPS devem usar cookies seguros, que indicam ao navegador que o cookie só deve ser transmitido usando o TLS (Transport Layer Security).
CA5384: Não usar o DSA (algoritmo de assinatura digital) O DSA é um algoritmo de criptografia assimétrica fraco.
CA5385: Usar o algoritmo RSA (Rivest–Shamir–Adleman) com um tamanho de chave suficiente Uma chave RSA menor que 2048 bits é mais vulnerável a ataques de força bruta.
CA5386: Evitar codificar o valor SecurityProtocolType O TLS (Transport Layer Security) protege a comunicação entre computadores, mais comumente com o HTTPS (Hypertext Transfer Protocol Secure). As versões do protocolo TLS 1.0 e TLS 1.1 são preteridas, enquanto o TLS 1.2 e o TLS 1.3 representam as atuais. No futuro, o TLS 1.2 e o TLS 1.3 poderão ser preteridos. Para garantir que seu aplicativo permaneça seguro, evite codificar uma versão de protocolo e tenha em mente pelo menos o .NET Framework v4.7.1.
CA5387: Não usar a função de derivação de chaves fraca com uma contagem de iteração insuficiente Esta regra verifica se uma chave criptográfica foi gerada por Rfc2898DeriveBytes com uma contagem de iteração inferior a 100.000. Uma contagem de iteração mais alta pode ajudar a atenuar os ataques de dicionário que tentam adivinhar a chave criptográfica gerada.
CA5388: Assegurar uma contagem de iteração suficiente ao usar a função de derivação de chaves fraca Esta regra verifica se uma chave criptográfica foi gerada por Rfc2898DeriveBytes com uma contagem de iteração inferior a 100.000. Uma contagem de iteração mais alta pode ajudar a atenuar os ataques de dicionário que tentam adivinhar a chave criptográfica gerada.
CA5389: Não adicionar o caminho do item de arquivo ao caminho do sistema de arquivos de destino O caminho do arquivo pode ser relativo e resultar no acesso a um sistema de arquivos fora do caminho de destino esperado do sistema de arquivos, levando a alterações de configuração mal-intencionadas e execução de código remoto por meio da técnica de lay-and-wait.
CA5390: Não embutir a chave de criptografia em código Para que um algoritmo simétrico seja bem-sucedido, a chave secreta deve ser conhecida apenas pelo remetente e pelo receptor. Quando uma chave é embutida no código, ela é facilmente descoberta. Mesmo com binários compilados, é fácil para usuários mal-intencionados extraí-la. Depois que a chave privada é comprometida, o texto de criptografia pode ser descriptografado diretamente e não está mais protegido.
CA5391: Usar tokens antifalsificação em controladores MVC do ASP.NET Core Manipular uma solicitação POST, PUT, PATCH ou DELETE sem validar um token antifalsificação pode gerar vulnerabilidades relacionadas a ataques de solicitação intersite forjada. Um ataque de solicitação intersite forjada pode enviar solicitações mal-intencionadas de um usuário autenticado para o controlador MVC do ASP.NET Core.
CA5392: Usar o atributo DefaultDllImportSearchPaths para P/Invokes Por padrão, as funções P/Invoke que usam DllImportAttribute investigam vários diretórios, incluindo o diretório de trabalho atual da biblioteca a ser carregada. Isso pode ser um problema de segurança para determinados aplicativos, levando ao sequestro de DLL.
CA5393: Não usar o valor DllImportSearchPath não seguro Pode haver uma DLL mal-intencionada nos diretórios de pesquisa de DLL padrão e nos diretórios de assembly. Dependendo de onde o aplicativo é executado, também pode haver uma DLL mal-intencionada no diretório do aplicativo.
CA5394: Não usar aleatoriedade não segura O uso de um gerador de número pseudo-aleatório criptograficamente fraco pode permitir que um invasor preveja qual valor sensível à segurança será gerado.
CA5395: Ignorar o atributo HttpVerb para métodos de ação Todos os métodos de ação que criam, editam, excluem ou modificam dados precisam ser protegidos com o atributo antifalsificação de ataques de solicitação intersite forjada. A execução de uma operação GET deve ser segura, não tem efeitos colaterais e não modifica os dados persistentes.
CA5396: Definir HttpOnly como true para HttpCookie Como uma medida de defesa em profundidade, verifique se cookies HTTP sensíveis à segurança estão marcados como HttpOnly. Isso indica que os navegadores da Web não devem permitir que scripts acessem os cookies. Scripts mal-intencionados injetados são uma maneira comum de roubar cookies.
CA5397: Não usar valores de SslProtocols preteridos O TLS (Transport Layer Security) protege a comunicação entre computadores, mais comumente com o HTTPS (Hypertext Transfer Protocol Secure). Versões mais antigas do protocolo TLS são menos seguras do que o TLS 1.2 e o TLS 1.3 e mais propensas a terem novas vulnerabilidades. Evite versões de protocolo mais antigas para minimizar o risco.
CA5398: Evitar valores de SslProtocols fixos O TLS (Transport Layer Security) protege a comunicação entre computadores, mais comumente com o HTTPS (Hypertext Transfer Protocol Secure). As versões do protocolo TLS 1.0 e TLS 1.1 são preteridas, enquanto o TLS 1.2 e o TLS 1.3 representam as atuais. No futuro, o TLS 1.2 e o TLS 1.3 poderão ser preteridos. Para garantir que o aplicativo permaneça seguro, evite codificar uma versão de protocolo.
CA5399: Desabilitar definitivamente a verificação da lista de certificados revogados do HttpClient Um certificado revogado não é mais confiável. Ele pode ser usado por invasores que passam alguns dados mal-intencionados ou roubam dados confidenciais na comunicação HTTPS.
CA5400: Certificar-se de que a verificação da lista de certificados revogados do HttpClient não está desabilitada Um certificado revogado não é mais confiável. Ele pode ser usado por invasores que passam alguns dados mal-intencionados ou roubam dados confidenciais na comunicação HTTPS.
CA5401: Não usar CreateEncryptor com IV não padrão A criptografia simétrica sempre deve usar um vetor de inicialização que não possa ser repetido para evitar ataques de dicionário.
CA5402: Usar CreateEncryptor com o IV padrão A criptografia simétrica sempre deve usar um vetor de inicialização que não possa ser repetido para evitar ataques de dicionário.
CA5403: Não embutir o certificado em código O parâmetro data ou rawData de um construtor X509Certificate ou X509Certificate2 é codificado.
CA5404: não desabilitar as verificações de validação de token As propriedades TokenValidationParameters que controlam a validação de token não devem ser definidas como false.
CA5405: nem sempre omitir a validação de token em representantes O retorno de chamada atribuído a AudienceValidator ou LifetimeValidator sempre retorna true.